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