WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] x86: optimize this_cpu()

To: Jan Beulich <JBeulich@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] x86: optimize this_cpu()
From: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Date: Tue, 13 Jul 2010 15:26:01 +0100
Cc:
Delivery-date: Tue, 13 Jul 2010 07:26:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4C3C87BA020000780000AF92@xxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcsikFreps+7Wb5vTJabEW2mJ3l2RAABvZ10
Thread-topic: [Xen-devel] [PATCH] x86: optimize this_cpu()
User-agent: Microsoft-Entourage/12.24.0.100205
On 13/07/2010 14:35, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:

> Besides the .text space savings of over 2.5k on x86-64 (1.5k for
> x86-32) this removes a load (plus a lea on x86-64) from various
> frequently executed code paths, and finally provides a reason (other
> than legibility) to prefer this_cpu() over per_cpu() in all places
> where smp_processor_id() isn't being called anyway.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
> 
> --- 2010-06-15.orig/xen/include/asm-x86/current.h 2010-07-13
> 14:38:21.000000000 +0200
> +++ 2010-06-15/xen/include/asm-x86/current.h 2010-07-13 15:12:37.000000000
> +0200
> @@ -17,6 +17,10 @@ struct vcpu;
>  struct cpu_info {
>      struct cpu_user_regs guest_cpu_user_regs;
>      unsigned int         processor_id;
> +    unsigned long        per_cpu_offset;
> +#ifdef __x86_64__
> +    unsigned long        __pad_for_stack_bottom;
> +#endif

That's just nasty. If we need the structure to be 16-byte aligned then we
should achieve it via __attribute__((__aligned__(16))). And if we add that
we may as well not ifdef it, I'm sure the up to 12 bytes padding on i386
won't cause stack overflow.

 -- Keir



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