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

Reply via email to