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


Reply via email to