[LinuxBIOS] Long delay between messages.

Steve Isaacs yasteve at gmail.com
Fri Dec 21 22:45:06 CET 2007

On Fri, 2007-12-21 at 14:15 -0700, Marc Jones wrote:

> Try setting CONFIG_LOGICAL_CPUS 0 and see if that makes the delay go 
> away. I am going to assume that is where the problem is based on the 
> *01*00000001 message is probably coming from wait_ap_started().
I'll give it a try. This definitely had an effect. I'm seeing these with
only one delay now.

02 nodes initialized.

> I will attempt to give you an overview of how I think this works. First 
> thing is that each APs APIC is used to hold flags about the AP(core) 
> state. This is the only good way to communicate between cores (sharing 
> memory can get very messy with CAR). The other flag is the 
> BIOS/INIT/COLD Reset flags that set when each nodes core0 executes the 
> ROM, distinguish_cpu_resets(). The core0 execution is done near the end 
> of setup_coherent_ht_domain(). Then the bsp, node0core0, waits, 
> wait_all_core0_started(), for node1core0 to execute and loop in 
> init_cpus(). This seems to be working based on the message core0 
> started:  01.
> Next is start_other_cores() and 
> wait_all_other_cores_started(bsp_apicid). This is where the long delay 
> is probably happening as cores are off running and the BSP is waiting. I 
> don't have any idea why it is stuck waiting but you should get some 
> insight by instrumenting init_cpus(), wait_cpu_state() and 
> wait_ap_started();

Thanks for this insight. I didn't realize the importance of the APIC.
I'll follow this logic through and see what I can learn.


More information about the coreboot mailing list