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-changelog

[Xen-changelog] [xen-unstable] [XEN] Make tlbflush_time a PER_CPU variab

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEN] Make tlbflush_time a PER_CPU variable.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 08 Aug 2006 14:50:28 +0000
Delivery-date: Tue, 08 Aug 2006 07:54:56 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID f3fb7727cb9afdc0dc99637b6c680ed29454f513
# Parent  9aac8db168b4566450008437d49d1e1040f8d98a
[XEN] Make tlbflush_time a PER_CPU variable.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/powerpc/setup.c           |    2 +-
 xen/arch/x86/flushtlb.c            |    4 ++--
 xen/arch/x86/x86_32/domain_page.c  |    3 +--
 xen/include/asm-powerpc/flushtlb.h |   15 ++++++++-------
 xen/include/asm-x86/current.h      |    2 +-
 xen/include/asm-x86/flushtlb.h     |   16 +++++++++-------
 xen/include/xen/percpu.h           |    1 -
 7 files changed, 22 insertions(+), 21 deletions(-)

diff -r 9aac8db168b4 -r f3fb7727cb9a xen/arch/powerpc/setup.c
--- a/xen/arch/powerpc/setup.c  Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/arch/powerpc/setup.c  Tue Aug 08 11:45:37 2006 +0100
@@ -55,7 +55,7 @@ boolean_param("earlygdb", opt_earlygdb);
 boolean_param("earlygdb", opt_earlygdb);
 
 u32 tlbflush_clock = 1U;
-u32 tlbflush_time[NR_CPUS];
+DEFINE_PER_CPU(u32, tlbflush_time);
 
 unsigned int watchdog_on;
 unsigned long wait_init_idle;
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/arch/x86/flushtlb.c
--- a/xen/arch/x86/flushtlb.c   Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/arch/x86/flushtlb.c   Tue Aug 08 11:45:37 2006 +0100
@@ -20,7 +20,7 @@
 #endif
 
 u32 tlbflush_clock = 1U;
-u32 tlbflush_time[NR_CPUS];
+DEFINE_PER_CPU(u32, tlbflush_time);
 
 void write_cr3(unsigned long cr3)
 {
@@ -71,7 +71,7 @@ void write_cr3(unsigned long cr3)
      *         case, so really we are being ultra paranoid.
      */
 
-    tlbflush_time[smp_processor_id()] = t2;
+    this_cpu(tlbflush_time) = t2;
 
     local_irq_restore(flags);
 }
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/arch/x86/x86_32/domain_page.c
--- a/xen/arch/x86/x86_32/domain_page.c Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/arch/x86/x86_32/domain_page.c Tue Aug 08 11:45:37 2006 +0100
@@ -73,8 +73,7 @@ void *map_domain_page(unsigned long pfn)
     if ( unlikely(cache->epoch != cache->shadow_epoch[vcpu]) )
     {
         cache->shadow_epoch[vcpu] = cache->epoch;
-        if ( NEED_FLUSH(tlbflush_time[smp_processor_id()],
-                        cache->tlbflush_timestamp) )
+        if ( NEED_FLUSH(this_cpu(tlbflush_time), cache->tlbflush_timestamp) )
         {
             perfc_incrc(domain_page_tlb_flush);
             local_flush_tlb();
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/include/asm-powerpc/flushtlb.h
--- a/xen/include/asm-powerpc/flushtlb.h        Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/include/asm-powerpc/flushtlb.h        Tue Aug 08 11:45:37 2006 +0100
@@ -22,6 +22,7 @@
 #define _ASM_FLUSHTLB_H_
 
 #include <xen/config.h>
+#include <xen/percpu.h>
 #include <xen/types.h>
 #include <asm/misc.h>
 
@@ -30,7 +31,7 @@ extern u32 tlbflush_clock;
 #define tlbflush_current_time() tlbflush_clock
 
 /* Time at which each CPU's TLB was last flushed. */
-extern u32 tlbflush_time[NR_CPUS];
+DECLARE_PER_CPU(u32, tlbflush_time);
 
 static inline int NEED_FLUSH(u32 cpu_stamp, u32 lastuse_stamp)
 {
@@ -44,12 +45,12 @@ static inline int NEED_FLUSH(u32 cpu_sta
  * Filter the given set of CPUs, removing those that definitely flushed their
  * TLB since @page_timestamp.
  */
-#define tlbflush_filter(mask, page_timestamp)                   \
-do {                                                            \
-    unsigned int cpu;                                           \
-    for_each_cpu_mask ( cpu, mask )                             \
-        if ( !NEED_FLUSH(tlbflush_time[cpu], page_timestamp) )  \
-            cpu_clear(cpu, mask);                               \
+#define tlbflush_filter(mask, page_timestamp)                           \
+do {                                                                    \
+    unsigned int cpu;                                                   \
+    for_each_cpu_mask ( cpu, mask )                                     \
+        if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) ) \
+            cpu_clear(cpu, mask);                                       \
 } while ( 0 )
 
 
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/include/asm-x86/current.h
--- a/xen/include/asm-x86/current.h     Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/include/asm-x86/current.h     Tue Aug 08 11:45:37 2006 +0100
@@ -8,6 +8,7 @@
 #define __X86_CURRENT_H__
 
 #include <xen/config.h>
+#include <xen/percpu.h>
 #include <public/xen.h>
 #include <asm/page.h>
 
@@ -53,7 +54,6 @@ static inline struct cpu_info *get_cpu_i
 
 #define schedule_tail(vcpu) (((vcpu)->arch.schedule_tail)(vcpu))
 
-#include <xen/percpu.h>
 /*
  * Which VCPU's state is currently running on each CPU?
  * This is not necesasrily the same as 'current' as a CPU may be
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/include/asm-x86/flushtlb.h
--- a/xen/include/asm-x86/flushtlb.h    Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/include/asm-x86/flushtlb.h    Tue Aug 08 11:45:37 2006 +0100
@@ -11,13 +11,15 @@
 #define __FLUSHTLB_H__
 
 #include <xen/config.h>
+#include <xen/percpu.h>
 #include <xen/smp.h>
+#include <xen/types.h>
 
 /* The current time as shown by the virtual TLB clock. */
 extern u32 tlbflush_clock;
 
 /* Time at which each CPU's TLB was last flushed. */
-extern u32 tlbflush_time[NR_CPUS];
+DECLARE_PER_CPU(u32, tlbflush_time);
 
 #define tlbflush_current_time() tlbflush_clock
 
@@ -47,12 +49,12 @@ static inline int NEED_FLUSH(u32 cpu_sta
  * Filter the given set of CPUs, removing those that definitely flushed their
  * TLB since @page_timestamp.
  */
-#define tlbflush_filter(mask, page_timestamp)                   \
-do {                                                            \
-    unsigned int cpu;                                           \
-    for_each_cpu_mask ( cpu, mask )                             \
-        if ( !NEED_FLUSH(tlbflush_time[cpu], page_timestamp) )  \
-            cpu_clear(cpu, mask);                               \
+#define tlbflush_filter(mask, page_timestamp)                           \
+do {                                                                    \
+    unsigned int cpu;                                                   \
+    for_each_cpu_mask ( cpu, mask )                                     \
+        if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) ) \
+            cpu_clear(cpu, mask);                                       \
 } while ( 0 )
 
 extern void new_tlbflush_clock_period(void);
diff -r 9aac8db168b4 -r f3fb7727cb9a xen/include/xen/percpu.h
--- a/xen/include/xen/percpu.h  Tue Aug 08 11:28:35 2006 +0100
+++ b/xen/include/xen/percpu.h  Tue Aug 08 11:45:37 2006 +0100
@@ -2,7 +2,6 @@
 #define __XEN_PERCPU_H__
 
 #include <xen/config.h>
-#include <xen/smp.h>
 #include <asm/percpu.h>
 
 /* Preferred on Xen. Also see arch-defined per_cpu(). */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEN] Make tlbflush_time a PER_CPU variable., Xen patchbot-unstable <=