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

[Xen-devel] Re: [tip:x86/xen] x86: use flush_tlb_others to implement flu

To: Ingo Molnar <mingo@xxxxxxx>
Subject: [Xen-devel] Re: [tip:x86/xen] x86: use flush_tlb_others to implement flush_tlb_all, fix
From: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
Date: Mon, 11 May 2009 16:59:48 +0100
Cc: Fitzhardinge <Jeremy.Fitzhardinge@xxxxxxxxxx>, Jeremy, "linux-tip-commits@xxxxxxxxxxxxxxx" <linux-tip-commits@xxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, "mingo@xxxxxxxxxx" <mingo@xxxxxxxxxx>, "hpa@xxxxxxxxx" <hpa@xxxxxxxxx>, "tglx@xxxxxxxxxxxxx" <tglx@xxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Mon, 11 May 2009 09:00:26 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20090511154202.GA31655@xxxxxxx>
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>
Organization: Citrix Systems, Inc.
References: <1241797927.15972.51.camel@xxxxxxxxxxxxxxxxxxxxxx> <tip-636afdbe85d50d9b88f5283b5e6d0f8518431aac@xxxxxxxxxxxxxx> <20090511131230.GA32693@xxxxxxx> <1242054041.29990.88.camel@xxxxxxxxxxxxxxxxxxxxxx> <20090511151151.GA3267@xxxxxxx> <1242056394.29990.94.camel@xxxxxxxxxxxxxxxxxxxxxx> <20090511154202.GA31655@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Mon, 2009-05-11 at 11:42 -0400, Ingo Molnar wrote:
> * Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx> wrote:
> 
> > in any case I would guess that the fix is:
> > 
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -87,6 +87,7 @@
> >  #include <asm/cacheflush.h>
> >  #include <asm/processor.h>
> >  #include <asm/bugs.h>
> > +#include <asm/tlbflush.h>
> >  
> >  #include <asm/system.h>
> >  #include <asm/vsyscall.h>
> 
> Guessing is not enough - please review the prototype position. Is it 
> available on all configs? It is not ...

Damn, you are (of course) right. There is nothing for it to do on !SMP
so patch below. I also observe that since it's no longer an initcall
there is no need for a return value so included that change too.

> But even the proper fix runs into that smp_processor_id() bug i just 
> posted.

That's back to an issue in the original patch from Jeremy I think, I'll
leave that one to him and/or tomorrow -- I've botched enough patches for
one day!

Ian.

diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
index a3f42bf..e1e3e6a 100644
--- a/arch/x86/include/asm/tlbflush.h
+++ b/arch/x86/include/asm/tlbflush.h
@@ -89,6 +89,8 @@ static inline void __flush_tlb_one(unsigned long addr)
 
 #ifndef CONFIG_SMP
 
+static inline void init_smp_flush(void) {}
+
 #define flush_tlb() __flush_tlb()
 #define flush_tlb_all() __flush_tlb_all()
 #define local_flush_tlb() __flush_tlb()
@@ -129,7 +131,7 @@ static inline void reset_lazy_tlbstate(void)
 
 #define local_flush_tlb() __flush_tlb()
 
-extern int init_smp_flush(void);
+extern void init_smp_flush(void);
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_current_task(void);
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
index 03f52f5..db28919 100644
--- a/arch/x86/mm/tlb.c
+++ b/arch/x86/mm/tlb.c
@@ -217,14 +217,12 @@ void native_flush_tlb_others(const struct cpumask 
*cpumask,
        flush_tlb_others_ipi(cpumask, mm, va);
 }
 
-int __init init_smp_flush(void)
+void __init init_smp_flush(void)
 {
        int i;
 
        for (i = 0; i < ARRAY_SIZE(flush_state); i++)
                spin_lock_init(&flush_state[i].tlbstate_lock);
-
-       return 0;
 }
 
 void flush_tlb_current_task(void)



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

<Prev in Thread] Current Thread [Next in Thread>