summaryrefslogtreecommitdiff
path: root/src/drivers/intel
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/intel')
-rw-r--r--src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
index 66bbc2f085..d286ee325b 100644
--- a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
+++ b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
@@ -31,16 +31,17 @@ efi_return_status_t mp_get_processor_info(efi_uintn_t processor_number,
int apicid;
uint8_t package, core, thread;
- if (cpu_index() < 0)
+ if (processor_number >= MIN(get_cpu_count(), CONFIG_MAX_CPUS))
+ return FSP_NOT_FOUND;
+
+ extern struct cpu_info cpu_infos[];
+ struct cpu_info *info = &cpu_infos[processor_number];
+ if (!info)
return FSP_DEVICE_ERROR;
if (processor_info_buffer == NULL)
return FSP_INVALID_PARAMETER;
-
- if (processor_number >= get_cpu_count())
- return FSP_NOT_FOUND;
-
- apicid = cpu_get_apic_id(processor_number);
+ apicid = info->cpu->path.apic.apic_id;
if (apicid < 0)
return FSP_DEVICE_ERROR;
@@ -66,7 +67,7 @@ efi_return_status_t mp_get_processor_info(efi_uintn_t processor_number,
efi_return_status_t mp_startup_all_aps(efi_ap_procedure procedure,
bool run_serial, efi_uintn_t timeout_usec, void *argument)
{
- if (cpu_index() < 0)
+ if (!cpu_info())
return FSP_DEVICE_ERROR;
if (procedure == NULL)
@@ -84,7 +85,7 @@ efi_return_status_t mp_startup_all_aps(efi_ap_procedure procedure,
efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
efi_uintn_t timeout_usec, void *argument)
{
- if (cpu_index() < 0)
+ if (!cpu_info())
return FSP_DEVICE_ERROR;
if (procedure == NULL)
@@ -119,7 +120,7 @@ efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
efi_return_status_t mp_startup_this_ap(efi_ap_procedure procedure,
efi_uintn_t processor_number, efi_uintn_t timeout_usec, void *argument)
{
- if (cpu_index() < 0)
+ if (!cpu_info())
return FSP_DEVICE_ERROR;
if (processor_number > get_cpu_count())