I'm having a strange issue, so I'll give a high-level description of it first, and then explain the details.
I bought an Intel Xeon 5405 to put into my Mac Pro. It seems to work fine, but when I try to boot into Mac OS, I get a kernel panic claiming the CPU doesn't support the monitor/mwait instruction. I manage to remove the check from the boot process, and everything else seems to function normally. Out of curiosity though, I wrote myself a little utility to check the cpuid, and it gave me the following:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clfsh ds acpi mmx fxsr sse sse2 ss htt tm pbe sse3 tm2 ssse3 xd em64t lahf
Sure enough, no mon feature bit is set. If I issue cpuid with eax=5 (monitor/mwait-specific information), though, I get the same output as a CPU that reports having the monitor feature, so it's puzzling. I was under the impression that cpuid output was relatively static for a given CPU, so I set out to find what could cause mon to not show up. In the monitor/mwait documentation, I found the following passage:
The operating system or system BIOS may disable this instruction by using the IA32_MISC_ENABLES MSR; disabling MONITOR clears the CPUID feature flag and causes execution to generate an illegal opcode exception.
So it seemed like someone was disabling this MSR sometime early in the boot process and that it was causing my OS to panic due to the apparent lack of the monitor instruction. I tried to look up more information on the IA32_MISC_ENABLES MSR but google only showed occasional bit mentions of it. One useful link came from this forum mentioning that bit 18 of that MSR enabled/disabled the mwait instruction. Given that I can't really jump in between Mac OS and power-on though, I can't determine what is turning off that bit in the MSR or when.
My main questions are:
Is there a canonical list of what Intel CPUs support what features (as reported by cpuid)?
Does anyone have any idea what could be causing my broad issue? Being a Mac motherboard (still manufactured by Intel I believe, but not publicly available) it uses EFI rather than BIOS, so there's no boot screen I can jump into to disable that bit.
Is there a list of what bits mean what in the IA32_MISC_ENABLES MSR, in case I want to try something more involved?