{arch,cpu}/x86, drivers/intel: Restore cpu_index error handling

Previously cpu_index() always succeeded, but since commit 095c931
(src/arch/x86: Use core apic id to get cpu_index()) it is now possible
for it to indicate an error by returning -1. This commit adds error
handling for all calls to cpu_index(), and restores several checks that
were removed in commit 7c712bb (Fix code that would trip -Wtype-limits)
but are now needed.

Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Change-Id: I5436eed4cb5675f916924eb9670db04592a8b927
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32795
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Jacob Garber
2019-05-14 11:21:41 -06:00
committed by Stefan Reinauer
parent 2e8188aa13
commit bc674765a9
6 changed files with 28 additions and 6 deletions

View File

@@ -870,13 +870,20 @@ static int run_ap_work(struct mp_callback *val, long expire_us)
int i;
int cpus_accepted;
struct stopwatch sw;
int cur_cpu = cpu_index();
int cur_cpu;
if (!CONFIG(PARALLEL_MP_AP_WORK)) {
printk(BIOS_ERR, "APs already parked. PARALLEL_MP_AP_WORK not selected.\n");
return -1;
}
cur_cpu = cpu_index();
if (cur_cpu < 0) {
printk(BIOS_ERR, "Invalid CPU index.\n");
return -1;
}
/* Signal to all the APs to run the func. */
for (i = 0; i < ARRAY_SIZE(ap_callbacks); i++) {
if (cur_cpu == i)
@@ -918,6 +925,12 @@ static void ap_wait_for_instruction(void)
return;
cur_cpu = cpu_index();
if (cur_cpu < 0) {
printk(BIOS_ERR, "Invalid CPU index.\n");
return;
}
per_cpu_slot = &ap_callbacks[cur_cpu];
while (1) {

View File

@@ -116,12 +116,12 @@ void *map_2M_page(unsigned long page)
static struct pg_table pgtbl[CONFIG_MAX_CPUS]
__attribute__((aligned(4096)));
static unsigned long mapped_window[CONFIG_MAX_CPUS];
unsigned long index;
int index;
unsigned long window;
void *result;
int i;
index = cpu_index();
if (index >= CONFIG_MAX_CPUS)
if (index < 0)
return MAPPING_ERROR;
window = page >> 10;
if (window != mapped_window[index]) {