cpu/x86/mp_init.c: Handle failed init_bsp()

Bail out of mp_init if this function fails.

Change-Id: I7be5d6c32458ba98f4f8c5c9340790ff989c91e7
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69109
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c
index 8cd785e..fa19104 100644
--- a/src/cpu/x86/mp_init.c
+++ b/src/cpu/x86/mp_init.c
@@ -532,7 +532,7 @@
 	return ret;
 }
 
-static void init_bsp(struct bus *cpu_bus)
+static enum cb_err init_bsp(struct bus *cpu_bus)
 {
 	struct device_path cpu_path;
 	struct cpu_info *info;
@@ -554,11 +554,14 @@
 	info->cpu = alloc_find_dev(cpu_bus, &cpu_path);
 	info->cpu->name = processor_name;
 
-	if (info->index != 0)
+	if (info->index != 0) {
 		printk(BIOS_CRIT, "BSP index(%zd) != 0!\n", info->index);
+		return CB_ERR;
+	}
 
 	/* Track BSP in cpu_map structures. */
 	cpu_add_map_entry(info->index);
+	return CB_SUCCESS;
 }
 
 /*
@@ -585,7 +588,10 @@
 
 	g_cpu_bus = cpu_bus;
 
-	init_bsp(cpu_bus);
+	if (init_bsp(cpu_bus) != CB_SUCCESS) {
+		printk(BIOS_CRIT, "Setting up BSP failed\n");
+		return CB_ERR;
+	}
 
 	if (p == NULL || p->flight_plan == NULL || p->num_records < 1) {
 		printk(BIOS_CRIT, "Invalid MP parameters\n");