Il 09/01/2014 22:44, Gabriel L. Somlo ha scritto: >> (1) Does Mac OS work if you add a _PRS with IRQNoFlags and >> Memory32Fixed, but leave _CRS as it is? > > Nope, same exact behavior. > >> (2) does it work with -no-hpet? > > With "IRQNoFlags(){2, 8}" hardcoded in HPET._CRS, XP appears to work > great if -no-hpet is given. I guess _STA evaluates to 0, so nothing > else matters.
And what about Mac OS X? >> (3) you could also make that dependent on _OSI("Darwin"). > > This works, for the same reason as querying SMC._STA (find something > "unique" about OS X and conditionally insert IRQNoFlags(){2, 8}) if > that "something" is detected.. > > So, we have two solutions that work: > > 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. > 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: Device (HPET) { Name (_HID, EisaId ("PNP0103")) // _HID: Hardware ID Method (_STA, 0, NotSerialized) // _STA: Status { If (LAnd (\WNTF, LNot (\WXPF))) { Return (0x00) } Else { Return (0x0F) } Return (0x00) } 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. Paolo