[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Fix error in rdmsr_safe



On 24/06/2010 21:11, "Kathy Hadley" <Kathy.Hadley@xxxxxxxxxxxxxxx> wrote:

> This patch fixes a error in rdmsr_safe (in xen/include/asm-x86/msr.h), which
> was introduced in changeset 21600.  The order of the ³val1² and ³val2²
> operands was switched, and the typecast of val2 needs to be enclosed in
> parentheses (so that it is typecast to a uint64_t before the left shift 32
> bits).  This addresses the following error seen during DomU start-up:

The parentheses aren't needed, but the val1 and val2 switcharound is indeed
correct. Thanks for the patch. I don't know why only you saw this; it's
probably something to do with the particular machine you test on.

 -- Keir

> (XEN) traps.c:2301:d2 Domain attempted WRMSR c0000080 from 0x0000080000000000
> to 0x0000080000000800.

> Regards,
>   Kathy Hadley
>   DornerWorks, Ltd.
>  
>  
> diff -rupN a/xen/include/asm-x86/msr.h b/xen/include/asm-x86/msr.h
> --- a/xen/include/asm-x86/msr.h     2010-06-17 13:27:29.000000000 -0400
> +++ b/xen/include/asm-x86/msr.h     2010-06-24 15:49:36.000000000 -0400
> @@ -49,7 +49,7 @@ static inline void wrmsrl(unsigned int m
>         ".previous\n" \
>          : "=a" (val1), "=d" (val2), "=&r" (_rc) \
>          : "c" (msr), "2" (0), "i" (-EFAULT)); \
> -    val = val2 | ((uint64_t)val1 << 32); \
> +    val = val1 | (((uint64_t)val2) << 32); \
>      _rc; })
>  
>  /* wrmsr with exception handling */
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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