On Tue, Jun 09, 2015 at 04:02:08PM +0200, Laszlo Ersek wrote: > On 06/09/15 11:49, Michael S. Tsirkin wrote: > > On Tue, Jun 09, 2015 at 02:02:31AM -0400, Paolo Bonzini wrote: > >> I would just patch OVMF to ignore the RSDT if there is an XSDT. > >> > >> Alternatively, can you check for ACPI 2.0 support via _OSI, and load the > >> ACPI 2.0 bits via LoadTable? Hopefully XP does not BSOD if the invalid > >> (for ACPI 1.0) opcodes are in a Then block or in a separate method... Then > >> you can use just an RSDT. > >> > >> Paolo > > > > > > So it's even easier. The following doesn't crash XP: > > > > Method(ADDR, 0, Serialized) { > > /* Region is local to method to avoid crashing ACPI 1.0 guests > > */ > > DataTableRegion(IDPT, "UEFI", "BXPC", "VMGENI"); > > Field (IDPT, AnyAcc, NoLock, Preserve) { > > Offset (54), > > VGIA, 64 // address of "etc/acpi/vmgenid" blob > > } > > Return(Add(VGIA), 40); > > } > > > > Simply because XP doesn't ever call ADDR. > > Method must be serialized since attempts to create two > > regions or fields with the same name would crash OSPM. > > That sounds like a huge relief to me, so thank you for researching it. > > Laszlo
Mind you, I still think it's worth it to support XSDT eventually, but the immediate need to do this in 2.4 timeframe is gone. -- MST