Li, Aubrey wrote: > Today a colleague reported a kernel panic issue to me when he is > installing Build110 to a Nehalem EP platform. It's Supermicro's > "Tylersburg EP" box with the newest BIOS.(Buggy BIOS!!!) > ================================================== > $ prtdiag > System Configuration: Supermicro X8DTN > BIOS Configuration: American Megatrends Inc. 4.6.3 03/05/2009 > BMC Configuration: IPMI 2.0 (KCS: Keyboard Controller Style) > > ==== Processor Sockets ============================== > > Version Location Tag > -------------------------------- -------------------------- > Intel(R) Xeon(R) CPU X5560 @ 2.80GH CPU 1 > Intel(R) Xeon(R) CPU X5560 @ 2.80GH CPU 2 > ================================================= > > panic stack as follows: > ========================================== > unix: cmntrap() > unix: cmt_balance + b2 <============Div ZERO > unix: setbackdq() > genunix: sleepq_wakeone_chan() > genunix: cv_signal() > genunix: delay_wakeup() > genunix: callout_list_expire() > genunix: callout_expire() > genunix: callout_execute() > genunix: taskq_thread() > unix: thread_start() > ========================================= > > After some investigation, I root caused this problem. The buggy > BIOS _PSD implementation messed the processor group > structure up, see below > ===================== > Socket 0: > cpu0~3: in domain 0 > cpu8~11: in domain 1 > > Socke 1: > cpu4~7: in domain 0 > cpu12~15: in domain 1 > ===================== > I rebuild a kernel to obtain the domain info by cpuid_get_chipid() > instead and the problem is gone. > > I remember Eric had a workaround about this issue but apparently > it doesn't cover this case, :( > > So, now I'm suggesting to remove _PSD and _CSD and _TSD related > implementation at all. We build the domain info by the cpu topology > structure instead. > > Any thoughts? > Are we running into that many problems with these objects? I'd hate to see us circumvent these ACPI objects because of rare BIOS bugs. Next thing you know we'll be building our own state (_PSS, _TSS, _CST) tables as well.
I imagine that we could determine the domain structure based on topology. However, I'm uncertain about how we determine domain type? Is that straightforward? If we go this route, then we probably want to make the code that builds the domains vendor specific. Because I'm not sure that all CPU vendors will have the same algorithm for determining domains. And we we might just have the other vendors default to the _PSD. > Thanks, > -Aubrey >
