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.


-- 
MST

Reply via email to