[LinuxBIOS] Local APIC IDs for dual Xeons
steve at digidescorp.com
Thu Jun 30 04:52:15 CEST 2005
I've reached the point where LB is attempting to start the secondary CPU
on my custom board. As near as I can tell, LB thinks the secondary CPU
isn't responding. This could be a hardware problem, or a LB issue of some
CPU 6 would not start!
CPU 6 did not initialize!
First thing I wanted to check was that LB is using the right APIC ID in
the messages it's sending. But I haven't been able to find a good
explanation anywhere of how local APIC IDs are assigned in dual-Xeon
systems. All Intel says with any certainty is that the power-up sequence
includes setting a unique ID for each LAPIC. There is a format to the IDs
(i.e. some bits for logical processor, some for socket, some for APIC
cluster), but nothing that says (for instance) "One Xeon chip is assigned
LAPIC IDs 0 & 1 and the second is assigned LAPIC IDs 6 & 7".
Looking over the s2735 config, and anything I found on the Internet, it
seems that this is how dual-Xeon boards work. Does anyone know why? Do the
addresses come out like this any time you have a dual-Xeon board, and
every time you power it up? Or are there some pins that have to be
strapped a certain way to end up with these IDs? (Side note, some Xeons
support reset-time config of APIC cluster ID - mine don't). The way I'm
interpreting the Intel documentation, it looks like the only way to find
out a secondary CPU's LAPIC ID is to start it (via an IPI broadcast?) and
have it write it somewhere.
More information about the coreboot