From: Christoph Lameter <clameter@sgi.com>
To: torvalds@osdl.org, akpm@osdl.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
Hugh Dickins <hugh@veritas.com>,
linux-mm@kvack.org, linux-ia64@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: page fault scalability patch V11 [4/7]: universal cmpxchg for i386
Date: Fri, 19 Nov 2004 11:45:28 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.58.0411191144500.24095@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0411190704330.5145@schroedinger.engr.sgi.com>
Changelog
* Make cmpxchg and cmpxchg8b generally available on the i386
platform.
* Provide emulation of cmpxchg suitable for uniprocessor if
build and run on 386.
* Provide emulation of cmpxchg8b suitable for uniprocessor systems
if build and run on 386 or 486.
* Provide an inline function to atomically get a 64 bit value via
cmpxchg8b in an SMP system (courtesy of Nick Piggin)
(important for i386 PAE mode and other places where atomic 64 bit
operations are useful)
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Index: linux-2.6.9/arch/i386/Kconfig
===================================================================
--- linux-2.6.9.orig/arch/i386/Kconfig 2004-11-15 11:13:34.000000000 -0800
+++ linux-2.6.9/arch/i386/Kconfig 2004-11-19 10:02:54.000000000 -0800
@@ -351,6 +351,11 @@
depends on !M386
default y
+config X86_CMPXCHG8B
+ bool
+ depends on !M386 && !M486
+ default y
+
config X86_XADD
bool
depends on !M386
Index: linux-2.6.9/arch/i386/kernel/cpu/intel.c
===================================================================
--- linux-2.6.9.orig/arch/i386/kernel/cpu/intel.c 2004-11-15 11:13:34.000000000 -0800
+++ linux-2.6.9/arch/i386/kernel/cpu/intel.c 2004-11-19 10:38:26.000000000 -0800
@@ -6,6 +6,7 @@
#include <linux/bitops.h>
#include <linux/smp.h>
#include <linux/thread_info.h>
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/msr.h>
@@ -287,5 +288,103 @@
return 0;
}
+#ifndef CONFIG_X86_CMPXCHG
+unsigned long cmpxchg_386_u8(volatile void *ptr, u8 old, u8 new)
+{
+ u8 prev;
+ unsigned long flags;
+ /*
+ * Check if the kernel was compiled for an old cpu but the
+ * currently running cpu can do cmpxchg after all
+ * All CPUs except 386 support CMPXCHG
+ */
+ if (cpu_data->x86 > 3)
+ return __cmpxchg(ptr, old, new, sizeof(u8));
+
+ /* Poor man's cmpxchg for 386. Unsuitable for SMP */
+ local_irq_save(flags);
+ prev = *(u8 *)ptr;
+ if (prev == old)
+ *(u8 *)ptr = new;
+ local_irq_restore(flags);
+ return prev;
+}
+
+EXPORT_SYMBOL(cmpxchg_386_u8);
+
+unsigned long cmpxchg_386_u16(volatile void *ptr, u16 old, u16 new)
+{
+ u16 prev;
+ unsigned long flags;
+ /*
+ * Check if the kernel was compiled for an old cpu but the
+ * currently running cpu can do cmpxchg after all
+ * All CPUs except 386 support CMPXCHG
+ */
+ if (cpu_data->x86 > 3)
+ return __cmpxchg(ptr, old, new, sizeof(u16));
+
+ /* Poor man's cmpxchg for 386. Unsuitable for SMP */
+ local_irq_save(flags);
+ prev = *(u16 *)ptr;
+ if (prev == old)
+ *(u16 *)ptr = new;
+ local_irq_restore(flags);
+ return prev;
+}
+
+EXPORT_SYMBOL(cmpxchg_386_u16);
+
+unsigned long cmpxchg_386_u32(volatile void *ptr, u32 old, u32 new)
+{
+ u32 prev;
+ unsigned long flags;
+ /*
+ * Check if the kernel was compiled for an old cpu but the
+ * currently running cpu can do cmpxchg after all
+ * All CPUs except 386 support CMPXCHG
+ */
+ if (cpu_data->x86 > 3)
+ return __cmpxchg(ptr, old, new, sizeof(u32));
+
+ /* Poor man's cmpxchg for 386. Unsuitable for SMP */
+ local_irq_save(flags);
+ prev = *(u32 *)ptr;
+ if (prev == old)
+ *(u32 *)ptr = new;
+ local_irq_restore(flags);
+ return prev;
+}
+
+EXPORT_SYMBOL(cmpxchg_386_u32);
+#endif
+
+#ifndef CONFIG_X86_CMPXCHG8B
+unsigned long long cmpxchg8b_486(volatile unsigned long long *ptr,
+ unsigned long long old, unsigned long long newv)
+{
+ unsigned long long prev;
+ unsigned long flags;
+
+ /*
+ * Check if the kernel was compiled for an old cpu but
+ * we are running really on a cpu capable of cmpxchg8b
+ */
+
+ if (cpu_has(cpu_data, X86_FEATURE_CX8))
+ return __cmpxchg8b(ptr, old, newv);
+
+ /* Poor mans cmpxchg8b for 386 and 486. Not suitable for SMP */
+ local_irq_save(flags);
+ prev = *ptr;
+ if (prev == old)
+ *ptr = newv;
+ local_irq_restore(flags);
+ return prev;
+}
+
+EXPORT_SYMBOL(cmpxchg8b_486);
+#endif
+
// arch_initcall(intel_cpu_init);
Index: linux-2.6.9/include/asm-i386/system.h
===================================================================
--- linux-2.6.9.orig/include/asm-i386/system.h 2004-11-15 11:13:38.000000000 -0800
+++ linux-2.6.9/include/asm-i386/system.h 2004-11-19 10:49:46.000000000 -0800
@@ -149,6 +149,9 @@
#define __xg(x) ((struct __xchg_dummy *)(x))
+#define ll_low(x) *(((unsigned int*)&(x))+0)
+#define ll_high(x) *(((unsigned int*)&(x))+1)
+
/*
* The semantics of XCHGCMP8B are a bit strange, this is why
* there is a loop and the loading of %%eax and %%edx has to
@@ -184,8 +187,6 @@
{
__set_64bit(ptr,(unsigned int)(value), (unsigned int)((value)>>32ULL));
}
-#define ll_low(x) *(((unsigned int*)&(x))+0)
-#define ll_high(x) *(((unsigned int*)&(x))+1)
static inline void __set_64bit_var (unsigned long long *ptr,
unsigned long long value)
@@ -203,6 +204,26 @@
__set_64bit(ptr, (unsigned int)(value), (unsigned int)((value)>>32ULL) ) : \
__set_64bit(ptr, ll_low(value), ll_high(value)) )
+static inline unsigned long long __get_64bit(unsigned long long * ptr)
+{
+ unsigned long long ret;
+ __asm__ __volatile__ (
+ "\n1:\t"
+ "movl (%1), %%eax\n\t"
+ "movl 4(%1), %%edx\n\t"
+ "movl %%eax, %%ebx\n\t"
+ "movl %%edx, %%ecx\n\t"
+ LOCK_PREFIX "cmpxchg8b (%1)\n\t"
+ "jnz 1b"
+ : "=A"(ret)
+ : "D"(ptr)
+ : "ebx", "ecx", "memory");
+ return ret;
+}
+
+#define get_64bit(ptr) __get_64bit(ptr)
+
+
/*
* Note: no "lock" prefix even on SMP: xchg always implies lock anyway
* Note 2: xchg has side effect, so that attribute volatile is necessary,
@@ -240,7 +261,41 @@
*/
#ifdef CONFIG_X86_CMPXCHG
+
#define __HAVE_ARCH_CMPXCHG 1
+#define cmpxchg(ptr,o,n)\
+ ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
+ (unsigned long)(n), sizeof(*(ptr))))
+
+#else
+
+/*
+ * Building a kernel capable running on 80386. It may be necessary to
+ * simulate the cmpxchg on the 80386 CPU. For that purpose we define
+ * a function for each of the sizes we support.
+ */
+
+extern unsigned long cmpxchg_386_u8(volatile void *, u8, u8);
+extern unsigned long cmpxchg_386_u16(volatile void *, u16, u16);
+extern unsigned long cmpxchg_386_u32(volatile void *, u32, u32);
+
+static inline unsigned long cmpxchg_386(volatile void *ptr, unsigned long old,
+ unsigned long new, int size)
+{
+ switch (size) {
+ case 1:
+ return cmpxchg_386_u8(ptr, old, new);
+ case 2:
+ return cmpxchg_386_u16(ptr, old, new);
+ case 4:
+ return cmpxchg_386_u32(ptr, old, new);
+ }
+ return old;
+}
+
+#define cmpxchg(ptr,o,n)\
+ ((__typeof__(*(ptr)))cmpxchg_386((ptr), (unsigned long)(o), \
+ (unsigned long)(n), sizeof(*(ptr))))
#endif
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
@@ -270,10 +325,32 @@
return old;
}
-#define cmpxchg(ptr,o,n)\
- ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
- (unsigned long)(n),sizeof(*(ptr))))
-
+static inline unsigned long long __cmpxchg8b(volatile unsigned long long *ptr,
+ unsigned long long old, unsigned long long newv)
+{
+ unsigned long long prev;
+ __asm__ __volatile__(
+ LOCK_PREFIX "cmpxchg8b (%4)"
+ : "=A" (prev)
+ : "0" (old), "c" ((unsigned long)(newv >> 32)),
+ "b" ((unsigned long)(newv & 0xffffffffULL)), "D" (ptr)
+ : "memory");
+ return prev;
+}
+
+#ifdef CONFIG_X86_CMPXCHG8B
+#define cmpxchg8b __cmpxchg8b
+#else
+/*
+ * Building a kernel capable of running on 80486 and 80386. Both
+ * do not support cmpxchg8b. Call a function that emulates the
+ * instruction if necessary.
+ */
+extern unsigned long long cmpxchg8b_486(volatile unsigned long long *,
+ unsigned long long, unsigned long long);
+#define cmpxchg8b cmpxchg8b_486
+#endif
+
#ifdef __KERNEL__
struct alt_instr {
__u8 *instr; /* original instruction */
next prev parent reply other threads:[~2004-11-19 19:50 UTC|newest]
Thread overview: 286+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.44.0411061527440.3567-100000@localhost.localdomain>
[not found] ` <Pine.LNX.4.58.0411181126440.30385@schroedinger.engr.sgi.com>
[not found] ` <Pine.LNX.4.58.0411181715280.834@schroedinger.engr.sgi.com>
[not found] ` <419D581F.2080302@yahoo.com.au>
[not found] ` <Pine.LNX.4.58.0411181835540.1421@schroedinger.engr.sgi.com>
[not found] ` <419D5E09.20805@yahoo.com.au>
[not found] ` <Pine.LNX.4.58.0411181921001.1674@schroedinger.engr.sgi.com>
[not found] ` <1100848068.25520.49.camel@gaston>
2004-11-19 19:42 ` page fault scalability patch V11 [0/7]: overview Christoph Lameter
2004-11-19 19:43 ` page fault scalability patch V11 [1/7]: sloppy rss Christoph Lameter
2004-11-19 20:50 ` Hugh Dickins
2004-11-20 1:29 ` Christoph Lameter
2004-11-22 15:00 ` Hugh Dickins
2004-11-22 21:50 ` deferred rss update instead of " Christoph Lameter
2004-11-22 22:11 ` Andrew Morton
2004-11-22 22:13 ` Christoph Lameter
2004-11-22 22:17 ` Benjamin Herrenschmidt
2004-11-22 22:45 ` Andrew Morton
2004-11-22 22:48 ` Christoph Lameter
2004-11-22 23:09 ` Nick Piggin
2004-11-22 23:13 ` Christoph Lameter
2004-11-22 23:16 ` Andrew Morton
2004-11-22 23:19 ` Christoph Lameter
2004-11-22 22:22 ` Linus Torvalds
2004-11-22 22:27 ` Christoph Lameter
2004-11-22 22:40 ` Linus Torvalds
2004-12-01 23:41 ` page fault scalability patch V12 [0/7]: Overview and performance tests Christoph Lameter
2004-12-01 23:42 ` page fault scalability patch V12 [1/7]: Reduce use of thepage_table_lock Christoph Lameter
2004-12-01 23:42 ` page fault scalability patch V12 [2/7]: atomic pte operations for ia64 Christoph Lameter
2004-12-01 23:43 ` page fault scalability patch V12 [3/7]: universal cmpxchg for i386 Christoph Lameter
2004-12-01 23:43 ` page fault scalability patch V12 [4/7]: atomic pte operations " Christoph Lameter
2004-12-01 23:44 ` page fault scalability patch V12 [5/7]: atomic pte operations for x86_64 Christoph Lameter
2004-12-01 23:45 ` page fault scalability patch V12 [6/7]: atomic pte operations for s390 Christoph Lameter
2004-12-01 23:45 ` page fault scalability patch V12 [7/7]: Split counter for rss Christoph Lameter
2005-01-04 19:35 ` page fault scalability patch V14 [0/7]: Overview Christoph Lameter
2005-01-04 19:35 ` page fault scalability patch V14 [1/7]: Avoid taking page_table_lock Christoph Lameter
2005-01-04 19:36 ` page fault scalability patch V14 [2/7]: ia64 atomic pte operations Christoph Lameter
2005-01-04 19:37 ` page fault scalability patch V14 [3/7]: i386 universal cmpxchg Christoph Lameter
2005-01-05 11:51 ` Roman Zippel
2005-01-04 19:37 ` page fault scalability patch V14 [4/7]: i386 atomic pte operations Christoph Lameter
2005-01-04 19:38 ` page fault scalability patch V14 [5/7]: x86_64 " Christoph Lameter
2005-01-04 19:46 ` Andi Kleen
2005-01-04 19:58 ` Christoph Lameter
2005-01-04 20:21 ` Andi Kleen
2005-01-04 20:32 ` Christoph Lameter
2005-01-11 17:39 ` page table lock patch V15 [0/7]: overview Christoph Lameter
2005-01-11 17:40 ` page table lock patch V15 [1/7]: Reduce use of page table lock Christoph Lameter
2005-01-11 17:41 ` page table lock patch V15 [2/7]: ia64 atomic pte operations Christoph Lameter
2005-01-11 17:41 ` page table lock patch V15 [3/7]: i386 universal cmpxchg Christoph Lameter
2005-01-11 17:42 ` page table lock patch V15 [4/7]: i386 atomic pte operations Christoph Lameter
2005-01-11 17:43 ` page table lock patch V15 [5/7]: x86_64 " Christoph Lameter
2005-01-11 17:43 ` page table lock patch V15 [6/7]: s390 " Christoph Lameter
2005-01-11 17:44 ` page table lock patch V15 [7/7]: Split RSS counter Christoph Lameter
2005-01-12 5:59 ` page table lock patch V15 [0/7]: overview Nick Piggin
2005-01-12 9:42 ` Andrew Morton
2005-01-12 12:29 ` Marcelo Tosatti
2005-01-12 12:43 ` Hugh Dickins
2005-01-12 21:22 ` Hugh Dickins
2005-01-12 23:52 ` Christoph Lameter
2005-01-13 2:52 ` Hugh Dickins
2005-01-13 17:05 ` Christoph Lameter
2005-01-12 16:39 ` Christoph Lameter
2005-01-12 16:49 ` Christoph Hellwig
2005-01-12 17:37 ` Christoph Lameter
2005-01-12 17:41 ` Christoph Hellwig
2005-01-12 17:52 ` Christoph Lameter
2005-01-12 18:04 ` Christoph Hellwig
2005-01-12 18:20 ` Andrew Walrond
2005-01-12 18:43 ` Andrew Morton
2005-01-12 19:06 ` Christoph Lameter
2005-01-14 3:39 ` Roman Zippel
2005-01-14 4:14 ` Andi Kleen
2005-01-14 12:02 ` Roman Zippel
2005-01-12 23:16 ` Nick Piggin
2005-01-12 23:30 ` Andrew Morton
2005-01-12 23:50 ` Nick Piggin
2005-01-12 23:54 ` Christoph Lameter
2005-01-13 0:10 ` Nick Piggin
2005-01-13 0:16 ` Christoph Lameter
2005-01-13 0:42 ` Nick Piggin
2005-01-13 22:19 ` Peter Chubb
2005-01-13 3:18 ` Andi Kleen
2005-01-13 17:11 ` Christoph Lameter
2005-01-13 17:25 ` Linus Torvalds
2005-01-13 18:02 ` Andi Kleen
2005-01-13 18:16 ` Christoph Lameter
2005-01-13 20:17 ` Andi Kleen
2005-01-14 1:09 ` Christoph Lameter
2005-01-14 4:39 ` Andi Kleen
2005-01-14 4:52 ` page table lock patch V15 [0/7]: overview II Andi Kleen
2005-01-14 4:59 ` Nick Piggin
2005-01-14 10:47 ` Andi Kleen
2005-01-14 10:57 ` Nick Piggin
2005-01-14 11:11 ` Andi Kleen
2005-01-14 16:57 ` Christoph Lameter
2005-01-14 4:54 ` page table lock patch V15 [0/7]: overview Nick Piggin
2005-01-14 10:46 ` Andi Kleen
2005-01-14 16:52 ` Christoph Lameter
2005-01-14 17:01 ` Andi Kleen
2005-01-14 17:08 ` Christoph Lameter
2005-01-14 17:11 ` Andi Kleen
2005-01-14 17:43 ` Linus Torvalds
2005-01-28 20:35 ` page fault scalability patch V16 [0/4]: redesign overview Christoph Lameter
2005-01-28 20:36 ` page fault scalability patch V16 [1/4]: avoid intermittent clearing of ptes Christoph Lameter
2005-01-28 20:36 ` page fault scalability patch V16 [2/4]: mm counter macros Christoph Lameter
2005-01-28 20:37 ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Christoph Lameter
2005-02-01 4:08 ` Nick Piggin
2005-02-01 18:47 ` Christoph Lameter
2005-02-01 19:01 ` Christoph Lameter
2005-02-02 0:31 ` Nick Piggin
2005-02-02 1:20 ` Christoph Lameter
2005-02-02 1:41 ` Nick Piggin
2005-02-02 2:49 ` Christoph Lameter
2005-02-02 3:09 ` Nick Piggin
2005-02-04 6:27 ` Nick Piggin
2005-02-17 0:57 ` page fault scalability patchsets update: prezeroing, prefaulting and atomic operations Christoph Lameter
2005-02-24 6:04 ` A Proposal for an MMU abstraction layer Christoph Lameter
2005-02-01 4:16 ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Nick Piggin
2005-02-01 8:20 ` Kernel 2.4.21 hangs up baswaraj kasture
2005-02-01 8:35 ` Arjan van de Ven
2005-02-01 9:03 ` Christian Hildner
2005-02-07 6:14 ` Kernel 2.4.21 gives kernel panic at boot time baswaraj kasture
2005-02-01 17:46 ` Kernel 2.4.21 hangs up David Mosberger
2005-02-01 17:54 ` Markus Trippelsdorf
2005-02-01 18:08 ` David Mosberger
2005-02-01 18:44 ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Christoph Lameter
2005-01-28 20:38 ` page fault scalability patch V16 [4/4]: Drop page_table_lock in do_anonymous_page Christoph Lameter
2005-01-13 3:09 ` page table lock patch V15 [0/7]: overview Hugh Dickins
2005-01-13 3:46 ` Nick Piggin
2005-01-13 17:14 ` Christoph Lameter
2005-01-04 21:21 ` page fault scalability patch V14 [5/7]: x86_64 atomic pte operations Brian Gerst
2005-01-04 21:26 ` Christoph Lameter
2005-01-04 19:38 ` page fault scalability patch V14 [6/7]: s390 atomic pte operationsw Christoph Lameter
2005-01-04 19:39 ` page fault scalability patch V14 [7/7]: Split RSS counters Christoph Lameter
2004-12-02 0:10 ` page fault scalability patch V12 [0/7]: Overview and performance tests Linus Torvalds
2004-12-02 0:55 ` Andrew Morton
2004-12-02 1:46 ` Christoph Lameter
2004-12-02 6:21 ` Jeff Garzik
2004-12-02 6:34 ` Andrew Morton
2004-12-02 6:48 ` Jeff Garzik
2004-12-02 7:02 ` Andrew Morton
2004-12-02 7:26 ` Martin J. Bligh
2004-12-02 7:31 ` Jeff Garzik
2004-12-02 18:10 ` cliff white
2004-12-02 18:17 ` Gerrit Huizenga
2004-12-02 20:25 ` linux-os
2004-12-08 17:24 ` Anticipatory prefaulting in the page fault handler V1 Christoph Lameter
2004-12-08 17:33 ` Jesse Barnes
2004-12-08 17:56 ` Christoph Lameter
2004-12-08 18:33 ` Jesse Barnes
2004-12-08 21:26 ` David S. Miller
2004-12-08 21:42 ` Linus Torvalds
2004-12-08 17:55 ` Dave Hansen
2004-12-08 19:07 ` Martin J. Bligh
2004-12-08 22:50 ` Martin J. Bligh
2004-12-09 19:32 ` Christoph Lameter
2004-12-10 2:13 ` [OT:HUMOR] " Adam Heath
2004-12-13 14:30 ` Akinobu Mita
2004-12-13 17:10 ` Christoph Lameter
2004-12-13 22:16 ` Martin J. Bligh
2004-12-14 1:32 ` Anticipatory prefaulting in the page fault handler V2 Christoph Lameter
2004-12-14 19:31 ` Adam Litke
2004-12-15 19:03 ` Anticipatory prefaulting in the page fault handler V3 Christoph Lameter
2005-01-05 0:29 ` Anticipatory prefaulting in the page fault handler V4 Christoph Lameter
2004-12-14 12:24 ` Anticipatory prefaulting in the page fault handler V1 Akinobu Mita
2004-12-14 15:25 ` Akinobu Mita
2004-12-14 20:25 ` Christoph Lameter
2004-12-09 10:57 ` Pavel Machek
2004-12-09 11:32 ` Nick Piggin
2004-12-09 17:05 ` Christoph Lameter
2004-12-14 15:28 ` Adam Litke
2004-12-02 18:43 ` page fault scalability patch V12 [0/7]: Overview and performance tests cliff white
2004-12-06 19:33 ` Marcelo Tosatti
2004-12-02 16:24 ` Gerrit Huizenga
2004-12-02 17:34 ` cliff white
2004-12-02 19:48 ` Diego Calleja
2004-12-02 20:12 ` Jeff Garzik
2004-12-02 20:30 ` Diego Calleja
2004-12-02 21:08 ` Wichert Akkerman
2004-12-03 0:07 ` Francois Romieu
2004-12-02 7:00 ` Jeff Garzik
2004-12-02 7:05 ` Benjamin Herrenschmidt
2004-12-02 7:11 ` Jeff Garzik
2004-12-02 11:16 ` Benjamin Herrenschmidt
2004-12-02 14:30 ` Andy Warner
2005-01-06 23:40 ` Jeff Garzik
2004-12-02 18:27 ` Grant Grundler
2004-12-02 18:33 ` Andrew Morton
2004-12-02 18:36 ` Christoph Hellwig
2004-12-07 10:51 ` Pavel Machek
2004-12-09 8:00 ` Nick Piggin
2004-12-09 17:03 ` Christoph Lameter
2004-12-10 4:30 ` Nick Piggin
2004-12-09 18:37 ` Hugh Dickins
2004-12-09 22:02 ` page fault scalability patch V12: rss tasklist vs sloppy rss Christoph Lameter
2004-12-09 22:52 ` Andrew Morton
2004-12-09 22:52 ` William Lee Irwin III
2004-12-09 23:07 ` Christoph Lameter
2004-12-09 23:29 ` William Lee Irwin III
2004-12-09 23:49 ` Christoph Lameter
2004-12-10 4:26 ` page fault scalability patch V12 [0/7]: Overview and performance tests Nick Piggin
2004-12-10 4:54 ` Nick Piggin
2004-12-10 5:06 ` Benjamin Herrenschmidt
2004-12-10 5:19 ` Nick Piggin
2004-12-10 12:30 ` Hugh Dickins
2004-12-10 18:43 ` Christoph Lameter
2004-12-10 21:43 ` Hugh Dickins
2004-12-10 22:12 ` Andrew Morton
2004-12-10 23:52 ` Hugh Dickins
2004-12-11 0:18 ` Andrew Morton
2004-12-11 0:44 ` Hugh Dickins
2004-12-11 0:57 ` Andrew Morton
2004-12-11 9:23 ` Hugh Dickins
2004-12-12 7:54 ` Nick Piggin
2004-12-12 9:33 ` Hugh Dickins
2004-12-12 9:48 ` Nick Piggin
2004-12-12 21:24 ` William Lee Irwin III
2004-12-17 3:31 ` Christoph Lameter
2004-12-17 3:32 ` page fault scalability patch V13 [0/8]: Overview Christoph Lameter
2004-12-17 3:33 ` page fault scalability patch V13 [1/8]: Reduce the use of the page_table_lock Christoph Lameter
2004-12-17 3:33 ` page fault scalability patch V13 [2/8]: ia64 atomic pte operations Christoph Lameter
2004-12-17 3:34 ` page fault scalability patch V13 [3/8]: universal cmpxchg for i386 Christoph Lameter
2004-12-17 3:35 ` page fault scalability patch V13 [4/8]: atomic pte operations " Christoph Lameter
2004-12-17 3:36 ` page fault scalability patch V13 [5/8]: atomic pte operations for AMD64 Christoph Lameter
2004-12-17 3:38 ` page fault scalability patch V13 [7/8]: Split RSS Christoph Lameter
2004-12-17 3:39 ` page fault scalability patch V13 [8/8]: Prefaulting using ptep_cmpxchg Christoph Lameter
2004-12-17 5:55 ` page fault scalability patch V13 [0/8]: Overview Christoph Lameter
2004-12-10 20:03 ` pfault V12 : correction to tasklist rss Christoph Lameter
2004-12-10 21:24 ` Hugh Dickins
2004-12-10 21:38 ` Andrew Morton
2004-12-11 6:03 ` William Lee Irwin III
2004-11-22 22:32 ` deferred rss update instead of sloppy rss Nick Piggin
2004-11-22 22:39 ` Christoph Lameter
2004-11-22 23:14 ` Nick Piggin
2004-11-19 19:44 ` page fault scalability patch V11 [2/7]: page fault handler optimizations Christoph Lameter
2004-11-19 19:44 ` page fault scalability patch V11 [3/7]: ia64 atomic pte operations Christoph Lameter
2004-11-19 19:45 ` Christoph Lameter [this message]
2004-11-19 19:46 ` page fault scalability patch V11 [5/7]: i386 " Christoph Lameter
2004-11-19 19:46 ` page fault scalability patch V11 [6/7]: x86_64 " Christoph Lameter
2004-11-19 19:47 ` page fault scalability patch V11 [7/7]: s390 " Christoph Lameter
2004-11-19 19:59 ` page fault scalability patch V11 [0/7]: overview Linus Torvalds
2004-11-20 1:07 ` Nick Piggin
2004-11-20 1:29 ` Christoph Lameter
2004-11-20 1:45 ` Nick Piggin
2004-11-20 1:58 ` Linus Torvalds
2004-11-20 2:06 ` Linus Torvalds
2004-11-20 1:56 ` Linus Torvalds
2004-11-22 18:06 ` Bill Davidsen
2004-11-20 2:03 ` William Lee Irwin III
2004-11-20 2:25 ` Nick Piggin
2004-11-20 2:41 ` William Lee Irwin III
2004-11-20 2:46 ` Nick Piggin
2004-11-20 3:37 ` Nick Piggin
2004-11-20 3:55 ` William Lee Irwin III
2004-11-20 4:03 ` Nick Piggin
2004-11-20 4:06 ` Nick Piggin
2004-11-20 4:23 ` William Lee Irwin III
2004-11-20 4:29 ` Nick Piggin
2004-11-20 5:38 ` William Lee Irwin III
2004-11-20 5:50 ` Nick Piggin
2004-11-20 6:23 ` William Lee Irwin III
2004-11-20 6:49 ` Nick Piggin
2004-11-20 6:57 ` Andrew Morton
2004-11-20 7:04 ` Andrew Morton
2004-11-20 7:13 ` Nick Piggin
2004-11-20 8:00 ` William Lee Irwin III
2004-11-20 16:59 ` Martin J. Bligh
2004-11-20 17:14 ` Linus Torvalds
2004-11-20 19:08 ` William Lee Irwin III
2004-11-20 19:16 ` Linus Torvalds
2004-11-20 19:33 ` William Lee Irwin III
2004-11-22 17:44 ` Christoph Lameter
2004-11-22 22:43 ` William Lee Irwin III
2004-11-22 22:51 ` Christoph Lameter
2004-11-23 2:25 ` William Lee Irwin III
2004-11-20 20:25 ` [OT] " Adam Heath
2004-11-20 7:15 ` William Lee Irwin III
2004-11-20 7:29 ` Nick Piggin
2004-11-20 7:45 ` touch_nmi_watchdog (was: page fault scalability patch V11 [0/7]: overview) Nick Piggin
2004-11-20 7:57 ` page fault scalability patch V11 [0/7]: overview Nick Piggin
2004-11-20 8:25 ` William Lee Irwin III
2004-11-20 2:04 ` William Lee Irwin III
2004-11-20 2:18 ` Nick Piggin
2004-11-20 2:34 ` William Lee Irwin III
2004-11-20 2:40 ` Nick Piggin
2004-11-20 3:04 ` William Lee Irwin III
2004-11-20 3:14 ` Nick Piggin
2004-11-20 3:43 ` William Lee Irwin III
2004-11-20 3:58 ` Nick Piggin
2004-11-20 4:01 ` William Lee Irwin III
2004-11-20 4:34 ` Robin Holt
2004-11-20 3:33 ` Robin Holt
2004-11-20 4:24 ` William Lee Irwin III
2004-11-20 2:06 ` Robin Holt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.58.0411191144500.24095@schroedinger.engr.sgi.com \
--to=clameter@sgi.com \
--cc=akpm@osdl.org \
--cc=benh@kernel.crashing.org \
--cc=hugh@veritas.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nickpiggin@yahoo.com.au \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).