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>
This commit is contained in:
		
				
					committed by
					
						
						Felix Held
					
				
			
			
				
	
			
			
			
						parent
						
							1bb9786da3
						
					
				
				
					commit
					d1862b4e88
				
			@@ -532,7 +532,7 @@ static enum cb_err bsp_do_flight_plan(struct mp_params *mp_params)
 | 
				
			|||||||
	return ret;
 | 
						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 device_path cpu_path;
 | 
				
			||||||
	struct cpu_info *info;
 | 
						struct cpu_info *info;
 | 
				
			||||||
@@ -554,11 +554,14 @@ static void init_bsp(struct bus *cpu_bus)
 | 
				
			|||||||
	info->cpu = alloc_find_dev(cpu_bus, &cpu_path);
 | 
						info->cpu = alloc_find_dev(cpu_bus, &cpu_path);
 | 
				
			||||||
	info->cpu->name = processor_name;
 | 
						info->cpu->name = processor_name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (info->index != 0)
 | 
						if (info->index != 0) {
 | 
				
			||||||
		printk(BIOS_CRIT, "BSP index(%zd) != 0!\n", info->index);
 | 
							printk(BIOS_CRIT, "BSP index(%zd) != 0!\n", info->index);
 | 
				
			||||||
 | 
							return CB_ERR;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Track BSP in cpu_map structures. */
 | 
						/* Track BSP in cpu_map structures. */
 | 
				
			||||||
	cpu_add_map_entry(info->index);
 | 
						cpu_add_map_entry(info->index);
 | 
				
			||||||
 | 
						return CB_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -585,7 +588,10 @@ static enum cb_err mp_init(struct bus *cpu_bus, struct mp_params *p)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	g_cpu_bus = cpu_bus;
 | 
						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) {
 | 
						if (p == NULL || p->flight_plan == NULL || p->num_records < 1) {
 | 
				
			||||||
		printk(BIOS_CRIT, "Invalid MP parameters\n");
 | 
							printk(BIOS_CRIT, "Invalid MP parameters\n");
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user