cpu/x86/mp_init: adjust timeout for final SIPI
Adjust timeout for final SIPI to satisfy some to-be-launched server processors. Add a spew print to display how long it takes for the APs to be ready. This is intended to facilitate only troubleshooting and trend analysis. Change-Id: Id958f18bdcb34d76df8aa443161123252524328e Signed-off-by: Jonathan Zhang <jonzhang@meta.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/68262 Reviewed-by: Christian Walter <christian.walter@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						
						Felix Held
					
				
			
			
				
	
			
			
			
						parent
						
							b9a9dcd8d6
						
					
				
				
					commit
					3b1eac5c04
				
			@@ -151,6 +151,7 @@ static enum cb_err wait_for_aps(atomic_t *val, int target, int total_delay,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* APs ready before timeout */
 | 
						/* APs ready before timeout */
 | 
				
			||||||
 | 
						printk(BIOS_SPEW, "APs are ready after %dus\n", delayed);
 | 
				
			||||||
	return CB_SUCCESS;
 | 
						return CB_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -468,7 +469,7 @@ static enum cb_err start_aps(struct bus *cpu_bus, int ap_count, atomic_t *num_ap
 | 
				
			|||||||
		if (send_sipi_to_aps(ap_count, num_aps, sipi_vector) != CB_SUCCESS)
 | 
							if (send_sipi_to_aps(ap_count, num_aps, sipi_vector) != CB_SUCCESS)
 | 
				
			||||||
			return CB_ERR;
 | 
								return CB_ERR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Wait for CPUs to check in up to 200 us. */
 | 
							/* Wait for CPUs to check in. */
 | 
				
			||||||
		wait_for_aps(num_aps, ap_count, 200 /* us */, 15 /* us */);
 | 
							wait_for_aps(num_aps, ap_count, 200 /* us */, 15 /* us */);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -477,7 +478,7 @@ static enum cb_err start_aps(struct bus *cpu_bus, int ap_count, atomic_t *num_ap
 | 
				
			|||||||
		return CB_ERR;
 | 
							return CB_ERR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Wait for CPUs to check in. */
 | 
						/* Wait for CPUs to check in. */
 | 
				
			||||||
	if (wait_for_aps(num_aps, ap_count, 100000 /* 100 ms */, 50 /* us */) != CB_SUCCESS) {
 | 
						if (wait_for_aps(num_aps, ap_count, 400000 /* 400 ms */, 50 /* us */) != CB_SUCCESS) {
 | 
				
			||||||
		printk(BIOS_ERR, "Not all APs checked in: %d/%d.\n",
 | 
							printk(BIOS_ERR, "Not all APs checked in: %d/%d.\n",
 | 
				
			||||||
		       atomic_read(num_aps), ap_count);
 | 
							       atomic_read(num_aps), ap_count);
 | 
				
			||||||
		return CB_ERR;
 | 
							return CB_ERR;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user