Il 21/11/2013 23:02, Gabriel L. Somlo ha scritto: > 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.
The IRQNoFlags(){2,8} setting makes sense if the general configuration register of the HPET has bits 0..1=1 (HPET enabled = 1 and HPET legacy replacement route = 1). That would be something like Field(HPTM, DWordAcc, Lock, Preserve) { VEND, 32, PRD, 32, UNUS, 32 GCNF, 32 } ... Method(_CRS, 0) { Store(GCNF, Local0) If (LEqual(LAnd(Local0, 3), 3)) { // Legacy replacement route ConcatenateResTemplate(RESP, RESI, Local1) Return (Local1) } else { Return (RESP) } } If that doesn't work, there are various choices here... (1) Does Mac OS work if you add a _PRS with IRQNoFlags and Memory32Fixed, but leave _CRS as it is? (2) does it work with -no-hpet? (3) you could also make that dependent on _OSI("Darwin"). It's unlikely that Linux and/or Windows expose _OSI("Darwin"), and anyway the BSOD is only there for Windows XP as I understand it. > So, I've made it conditional on the SMC STA method returning success > (0x0B). That would mean that running Windows XP on "Mac OS X hardware" breaks, though. > 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: > > 1. 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 > > 2. 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 would work. See acpi_get_misc_info and patch_ssdt in hw/i386/acpi-build.c. I think device-dependent ACPI stuff should become a QOM interface, but you need not do that. Paolo _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios