On Thu, Nov 21, 2013 at 05:02:07PM -0500, Gabriel L. Somlo wrote:
Added qemu-devel, since that is where this stuff belongs now. Everyone else, sorry for the dupe...
On Thu, Nov 21, 2013 at 07:14:27PM +0100, Paolo Bonzini wrote:
Can you remind us about your DSDT modifications? It should be possible to patch the HPET and applesmc bits appropriately from QEMU (or to move them from the DSDT to an SSDT that is built entirely in QEMU).
It actually isn't impossible that Mac OS X would boot just fine with 1.8...
My current DSDT patch (against QEMU) is enclosed below. The HPET basically needs "IRQNoFlags() {2, 8}", which causes XP to bluescreen.
So, I've made it conditional on the SMC STA method returning success (0x0B).
The SMC node's STA method returns 0x0B unconditionally on real hardware. So I was planning on figuring out what's easier in the context of the most recent QEMU code base:
- dynamically generating (during qemu runtime initialization)
a DSDT entry for SMC with hardcoded 0x0B STA method, whenever
"--device isa-applesmc" is present on the qemu command line
or
- writing a static (compile-time) SMC node but with a slightly
smarter _STA method, which returns 0x0B when "--device isa-applesmc" was given on the cmdline, or which returns 0x00 in the absence of "--device isa-applesmc".
Either 1. or 2. could be used with HPET -- I can make inclusion of IRQNoFlags dependent on either the success or on the presence of SMC._STA() :)
Let me know what you think.
Thanks, --Gabriel
Without discussing whether this is the right thing to do, main options to implement this would be:
- write code in ASL, supply entry in ACPI always, patch some fields to enable/disable it dynamically
see how pvpanic entry is disabled for an example
- write code in ASL append it to ACPI if necessary
see how CPU entries are added depending on number of CPUs for an example
- generate code in AML directly
see acpi based pci hotplug on pci branch in my tree for an example