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

[Xen-devel] Re: [PATCH] x86: Use __always_inline to ensure scale_delta linked to vsyscall section.



On 11/13/09 20:53, Zhang, Xiantao wrote:
> Hi, Jeremy
>  The attached patch should fix the bug: 
> http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1529 which blocked us 
> for weeks.  Since scale_delta is used in the vsyscall vtime, so it should be 
> inlined and linked to vsycall section, otherwise, dom0 should refuse the 
> call. But due to GCC's optimization, scale_delta is compiled to a global 
> function instead of inline function even if it is declared with inline 
> attribute, so the issue occurs.  To ensure this function is inlined to 
> vsyscall section, a stricter attribute __always_inline should be used in its 
> declaration. Thanks!
>   

Thanks for tracking that down.

    J

> Xiantao
>
>
> From 3290d6e40f6c69ce3edd728f57780f088b7155e3 Mon Sep 17 00:00:00 2001
> From: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
> Date: Fri, 13 Nov 2009 20:33:10 -0500
> Subject: [PATCH] x86: Use __always_inline to ensure scale_delta linked to 
> vsyscall section.
>  
> scale_delta is called in vsyscall vtime, so it should be linked to vsyscall
> section and use fixmap to access it, otherwise unexpected page fault may raise
> in vsyscall context, and leads to system dom0 panic.
>  
> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
> ---
>  arch/x86/kernel/pvclock.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>  
> diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c
> index f47f91e..1b5d3e8 100644
> --- a/arch/x86/kernel/pvclock.c
> +++ b/arch/x86/kernel/pvclock.c
> @@ -28,7 +28,8 @@
>   * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
>   * yielding a 64-bit result.
>   */
> -static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)
> +static __always_inline
> +u64 scale_delta(u64 delta, u32 mul_frac, int shift)
>  {
>   u64 product;
>  #ifdef __i386__
>   


_______________________________________________
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®.