|
[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 |