On Fri, Jan 10, 2014 at 01:37:14PM +0100, Paolo Bonzini wrote: > Il 09/01/2014 22:44, Gabriel L. Somlo ha scritto: > > 1. hardcode "IRQNoFlags(){2, 8}" and require -no-hpet to prevent XP > > from bluescreening. Basically, this means we don't support XP on > > a VM where HPET is enabled. > > > > 2. conditionally insert "IRQNoFlags(){2, 8}" if _OSI("Darwin") returns > > 0xFFFFFFFF, which is only necessary if we want to run OS X on piix+smp > > (all other combinations of (piix vs. q35) x (up vs. smp) work fine > > already). > > _OSI is bad, but (1) is worse.
Agreed. > > I still don't get why on real hardware where the HPET has > > "IRQNoFlags(){2, 8}" in its _CRS method XP seems to be OK... > > My laptop has this: > > [...] > > Name (BUF0, ResourceTemplate () > { > Memory32Fixed (ReadOnly, > 0xFED00000, // Address Base > 0x00000400, // Address Length > _Y27) > }) > Method (_CRS, 0, Serialized) // _CRS: Current Resource > Settings > { > CreateDWordField (BUF0, \_SB.PCI0.LPC.HPET._Y27._BAS, > HPT0) // _BAS: Base Address > Store (\HPET, HPT0) // HPET comes from a table > that BIOS fills in reserved memory > Return (BUF0) > } > } > > so no IRQs, and my workstation is similar. They are respectively from > Lenovo and Fujitsu. Looks like an Apple quirk. Hmmm, I could have sworn I saw IRQNoFlags on one of my old Dell laptops (Dell Latitude D630), but I just had another look and it's not there, so I was clearly misremembering that ! I think you're right, of all the hardware I currently have access to, only the various Apple machines have IRQNoFlags in HPET._CRS ! Given that, I'm starting to feel better and better about using _OSI(). Michael: regarding your comment about "ConcatenateResTemplate" not being supported by XP: Can I safely assume that as long as it's always on the branch NOT taken by XP, we're OK having it in there ? E.g., if _OSI("Darwin") then ConcatenateResTemplate... else stuff_that_XP_cares_about Once I have that sorted out, I'll send a patch. Thanks, --Gabriel