[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.