[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] hvmloader: don't use AML operations on 64-bit fields
>>> On 27.05.14 at 10:57, <JBeulich@xxxxxxxx> wrote: > WinXP and Win2K3, while having no problem with the QWordMemory resource > (there was another one there before), don't like operations on 64-bit > fields. Split the fields d0688669 ("hvmloader: also cover PCI MMIO > ranges above 4G with UC MTRR ranges") added to 32-bit ones, handling > carry over explicitly. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> I have to withdraw this - just found an iasl version that mis-compiles (afaict at least) it. > --- a/tools/firmware/hvmloader/acpi/dsdt.asl > +++ b/tools/firmware/hvmloader/acpi/dsdt.asl > @@ -57,8 +57,10 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, > MSUA, 32, /* MADT checksum address */ > MAPA, 32, /* MADT LAPIC0 address */ > VGIA, 32, /* VM generation id address */ > - HMIN, 64, > - HLEN, 64 > + LMIN, 32, > + HMIN, 32, > + LLEN, 32, > + HLEN, 32 > } > > /* Fix HCT test for 0x400 pci memory: > @@ -176,15 +178,27 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, > Add(MMIN, MLEN, MMAX) > Subtract(MMAX, One, MMAX) > > - CreateQWordField(PRT0, \_SB.PCI0._CRS._Y02._MIN, HMIN) > - CreateQWordField(PRT0, \_SB.PCI0._CRS._Y02._MAX, HMAX) > - CreateQWordField(PRT0, \_SB.PCI0._CRS._Y02._LEN, HLEN) > - > - Store(\_SB.HMIN, HMIN) > - Store(\_SB.HLEN, HLEN) > - Add(HMIN, HLEN, HMAX) > - If(LOr(HMIN, HLEN)) { > - Subtract(HMAX, One, HMAX) > + CreateDWordField(PRT0, \_SB.PCI0._CRS._Y02._MIN, MINL) > + CreateDWordField(PRT0, \_SB.PCI0._CRS._Y02._MAX, MAXL) > + CreateDWordField(PRT0, \_SB.PCI0._CRS._Y02._LEN, LENL) > + CreateDWordField(PRT0, Add(\_SB.PCI0._CRS._Y02._MIN, 4), > MINH) > + CreateDWordField(PRT0, Add(\_SB.PCI0._CRS._Y02._MAX, 4), > MAXH) > + CreateDWordField(PRT0, Add(\_SB.PCI0._CRS._Y02._LEN, 4), > LENH) > + > + Store(\_SB.LMIN, MINL) > + Store(\_SB.HMIN, MINH) > + Store(\_SB.LLEN, LENL) > + Store(\_SB.HLEN, LENH) > + Add(MINL, LENL, MAXL) > + Add(MINH, LENH, MAXH) > + If(LLess(MAXL, MINL)) { > + Add(MAXH, One, MAXH) > + } > + If(LOr(MINH, LENL)) { > + If(LEqual(MAXL, 0)) { > + Subtract(MAXH, One, MAXH) > + } > + Subtract(MAXL, One, MAXL) > } > > Return (PRT0) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |