linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: hugh@veritas.com
Cc: Andi Kleen <ak@muc.de>, Nick Piggin <nickpiggin@yahoo.com.au>,
	linux-mm@kvack.org, linux-ia64@vger.kernel.org,
	Linus Torvalds <torvalds@osdl.org>,
	benh@kernel.crashing.org
Subject: [PATCH] Soft introduction of atomic pte operations to avoid the clearing of ptes
Date: Fri, 21 Jan 2005 10:22:36 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.58.0501211020430.25346@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0501140924480.2310@ppc970.osdl.org>

The current way of updating ptes in the Linux vm includes first clearing
a pte before setting it to another value. The clearing is performed while
holding the page_table_lock to insure that the entry will not be modified
by the CPU directly, by an arch specific interrupt handler or another page
fault handler running on another CPU. This approach is necessary for some
architectures that cannot perform atomic updates of page table entries.

If a page table entry is cleared then a second CPUs may generate a page fault
for that entry. The fault handler on the second CPU will then attempt to
acquire the page_table_lock and wait until the first CPU has completed
updating the page table entry. The fault handler on the second CPU will then
discover that everything is ok and simply do nothing (apart from incrementing
the counters for a minor fault).

However, most architectures actually support atomic operations on page
table entries. The use of atomic operations on page table entries would
allow the update of a page table entry in a single atomic operation instead
of writing to the page table entry twice. There would also be no danger of
generating a spurious page fault on other CPUs.

The following patch introduces two new atomic operations ptep_xchg and
ptep_cmpxchg that may be provided by an architecture. The fallback in
include/asm-generic/pgtable.h is to simulate both operations through the
existing ptep_get_and_clear function. So there is essentially no change if
atomic operations on ptes have not been defined. Architectures that do
not support atomic operations on ptes may continue to use the clearing of
a pte for locking type purposes.

Definitions of ptep_xchg and ptep_cmpxchg have been provided for ia64,
x86_64 and i386. The atomic operations for i386 are only valid for non PAE
mode. ptep_cmpxchg is only provided if the cpu is capable of a cmpxchg
(which excludes 386 or 486 cpus).

My aim to reduce the use of the page_table_lock in the page fault handler
rely on a pte never being clear if the pte is in use even when the
page_table_lock is not held. Clearing a pte before setting it to another
values could result in a situation in which a fault generated by
another cpu could install a pte which is then immediately overwritten by
the first cpus setting the pte to a valid value again. This patch is
important for future work on reducing the use of spinlocks in the vm.

I just hope I did not miss anything again ....

Index: linux-2.6.10/mm/rmap.c
===================================================================
--- linux-2.6.10.orig/mm/rmap.c	2005-01-21 07:39:42.000000000 -0800
+++ linux-2.6.10/mm/rmap.c	2005-01-21 10:03:24.000000000 -0800
@@ -575,11 +575,6 @@ static int try_to_unmap_one(struct page

 	/* Nuke the page table entry. */
 	flush_cache_page(vma, address);
-	pteval = ptep_clear_flush(vma, address, pte);
-
-	/* Move the dirty bit to the physical page now the pte is gone. */
-	if (pte_dirty(pteval))
-		set_page_dirty(page);

 	if (PageAnon(page)) {
 		swp_entry_t entry = { .val = page->private };
@@ -594,11 +589,15 @@ static int try_to_unmap_one(struct page
 			list_add(&mm->mmlist, &init_mm.mmlist);
 			spin_unlock(&mmlist_lock);
 		}
-		set_pte(pte, swp_entry_to_pte(entry));
+		pteval = ptep_xchg_flush(vma, address, pte, swp_entry_to_pte(entry));
 		BUG_ON(pte_file(*pte));
 		mm->anon_rss--;
-	}
+	} else
+		pteval = ptep_clear_flush(vma, address, pte);

+	/* Move the dirty bit to the physical page now the pte is gone. */
+	if (pte_dirty(pteval))
+		set_page_dirty(page);
 	mm->rss--;
 	acct_update_integrals();
 	page_remove_rmap(page);
@@ -691,15 +690,15 @@ static void try_to_unmap_cluster(unsigne
 		if (ptep_clear_flush_young(vma, address, pte))
 			continue;

-		/* Nuke the page table entry. */
 		flush_cache_page(vma, address);
-		pteval = ptep_clear_flush(vma, address, pte);

 		/* If nonlinear, store the file page offset in the pte. */
 		if (page->index != linear_page_index(vma, address))
-			set_pte(pte, pgoff_to_pte(page->index));
+			pteval = ptep_xchg_flush(vma, address, pte, pgoff_to_pte(page->index));
+		else
+			pteval = ptep_clear_flush(vma, address, pte);

-		/* Move the dirty bit to the physical page now the pte is gone. */
+		/* Move the dirty bit to the physical page now that the pte is gone. */
 		if (pte_dirty(pteval))
 			set_page_dirty(page);

Index: linux-2.6.10/mm/memory.c
===================================================================
--- linux-2.6.10.orig/mm/memory.c	2005-01-21 07:39:42.000000000 -0800
+++ linux-2.6.10/mm/memory.c	2005-01-21 10:03:24.000000000 -0800
@@ -512,14 +512,18 @@ static void zap_pte_range(struct mmu_gat
 				     page->index > details->last_index))
 					continue;
 			}
-			pte = ptep_get_and_clear(ptep);
-			tlb_remove_tlb_entry(tlb, ptep, address+offset);
-			if (unlikely(!page))
+			if (unlikely(!page)) {
+				pte = ptep_get_and_clear(ptep);
+				tlb_remove_tlb_entry(tlb, ptep, address+offset);
 				continue;
+			}
 			if (unlikely(details) && details->nonlinear_vma
 			    && linear_page_index(details->nonlinear_vma,
 					address+offset) != page->index)
-				set_pte(ptep, pgoff_to_pte(page->index));
+				pte = ptep_xchg(ptep, pgoff_to_pte(page->index));
+			else
+				pte = ptep_get_and_clear(ptep);
+			tlb_remove_tlb_entry(tlb, ptep, address+offset);
 			if (pte_dirty(pte))
 				set_page_dirty(page);
 			if (PageAnon(page))
Index: linux-2.6.10/mm/mprotect.c
===================================================================
--- linux-2.6.10.orig/mm/mprotect.c	2005-01-21 07:39:42.000000000 -0800
+++ linux-2.6.10/mm/mprotect.c	2005-01-21 10:03:24.000000000 -0800
@@ -48,12 +48,16 @@ change_pte_range(pmd_t *pmd, unsigned lo
 		if (pte_present(*pte)) {
 			pte_t entry;

-			/* Avoid an SMP race with hardware updated dirty/clean
-			 * bits by wiping the pte and then setting the new pte
-			 * into place.
-			 */
-			entry = ptep_get_and_clear(pte);
-			set_pte(pte, pte_modify(entry, newprot));
+			 /* Deal with a potential SMP race with hardware/arch
+			  * interrupt updating dirty/clean bits through the use
+			  * of ptep_cmpxchg.
+			  */
+			do {
+				entry = *pte;
+			} while (!ptep_cmpxchg(pte,
+					entry,
+					pte_modify(entry, newprot)
+				));
 		}
 		address += PAGE_SIZE;
 		pte++;
Index: linux-2.6.10/include/asm-generic/pgtable.h
===================================================================
--- linux-2.6.10.orig/include/asm-generic/pgtable.h	2004-12-24 13:34:30.000000000 -0800
+++ linux-2.6.10/include/asm-generic/pgtable.h	2005-01-21 10:04:40.000000000 -0800
@@ -102,6 +102,75 @@ static inline pte_t ptep_get_and_clear(p
 })
 #endif

+/*
+ * Exchanging of pte values is done by first swapping zeros into
+ * a pte and then putting new content into the pte entry.
+ * Some arches that do not support atomic operations on their page
+ * table entries rely on this form of pte locking for an update.
+ * However, the fallback function will generate an empty pte for a
+ * short time frame. This means that the page_table_lock must be held
+ * to avoid a page fault that would install a new entry.
+ *
+ * A good arch dependent definition for ptep_xchg may be
+ *
+ * #define ptep_xchg(__ptep, __pteval)					\
+ *	 _pte(xchg(&pte_val(*(__ptep)), pte_val(__pteval)))
+ *
+ * This will only work if xchg() is guaranteed to be atomic but will
+ * insure that there is no danger of generating a spurious page fault
+ */
+#ifndef __HAVE_ARCH_PTEP_XCHG
+#define ptep_xchg(__ptep, __pteval)					\
+({									\
+	pte_t __pte = ptep_get_and_clear(__ptep);			\
+	set_pte(__ptep, __pteval);					\
+	__pte;								\
+})
+#endif
+
+#ifndef __HAVE_ARCH_PTEP_XCHG_FLUSH
+#define ptep_xchg_flush(__vma, __address, __ptep, __pteval)		\
+({									\
+       pte_t __pte = ptep_clear_flush(__vma, __address, __ptep);	\
+       set_pte(__ptep, __pteval);					\
+       __pte;								\
+})
+#endif
+
+
+/*
+ * The fallback function for ptep_cmpxchg avoids any real use of cmpxchg
+ * since cmpxchg may not be available on certain architectures. Instead
+ * the clearing of a pte is used as a form of locking mechanism.
+ * This approach will only work if the page_table_lock is held to insure
+ * that the pte is not populated by a page fault generated on another
+ * CPU.
+ *
+ * However, an arch dependent definition would use a real cmpxchg
+ * (if the architecture is capable of atomic operations) on ptes which
+ * will then avoid having the pte cleared for a short period and with
+ * that the danger of another CPU generating a fault for the empty pte.
+ *
+ * A good definition may be:
+ *
+ * #define ptep_cmpxchg(__ptep,__oldval,__newval)			\
+ *	 (cmpxchg(&pte_val(*(__ptep)),					\
+ *			pte_val(__oldval),				\
+ *			pte_val(__newval)				\
+ *		) == pte_val(__oldval)					\
+ *	)
+ *
+ */
+#ifndef __HAVE_ARCH_PTEP_CMPXCHG
+#define ptep_cmpxchg(__ptep, __old, __new)				\
+({									\
+	pte_t prev = ptep_get_and_clear(__ptep);			\
+	int r = pte_val(prev) == pte_val(__old);			\
+	set_pte(__ptep, r ? (__new) : prev);				\
+	r;								\
+})
+#endif
+
 #ifndef __HAVE_ARCH_PTEP_SET_WRPROTECT
 static inline void ptep_set_wrprotect(pte_t *ptep)
 {
Index: linux-2.6.10/include/asm-ia64/pgtable.h
===================================================================
--- linux-2.6.10.orig/include/asm-ia64/pgtable.h	2005-01-21 07:39:40.000000000 -0800
+++ linux-2.6.10/include/asm-ia64/pgtable.h	2005-01-21 10:03:24.000000000 -0800
@@ -554,6 +554,19 @@ do {											\
 #define FIXADDR_USER_START	GATE_ADDR
 #define FIXADDR_USER_END	(GATE_ADDR + 2*PERCPU_PAGE_SIZE)

+/* Atomic operations to avoid having to clear a pte before setting it to another value */
+#define ptep_xchg(__ptep, __pteval) \
+      __pte(xchg(&pte_val(*(__ptep)), pte_val(__pteval)))
+
+#define ptep_cmpxchg(__ptep,__oldval,__newval)					\
+	(cmpxchg(&pte_val(*(__ptep)),						\
+			pte_val(__oldval),					\
+			pte_val(__newval)					\
+			) == pte_val(__oldval)					\
+	)
+
+#define __HAVE_ARCH_PTEP_XCHG
+#define __HAVE_ARCH_PTEP_CMPXCHG
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
Index: linux-2.6.10/include/asm-i386/pgtable-2level.h
===================================================================
--- linux-2.6.10.orig/include/asm-i386/pgtable-2level.h	2005-01-21 07:39:40.000000000 -0800
+++ linux-2.6.10/include/asm-i386/pgtable-2level.h	2005-01-21 10:03:24.000000000 -0800
@@ -25,6 +25,21 @@
 #define pfn_pte(pfn, prot)	__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
 #define pfn_pmd(pfn, prot)	__pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))

+/* Atomic operations to avoid having to clear a pte before setting it to another value */
+#define __HAVE_ARCH_PTEP_XCHG
+#define ptep_xchg(__ptep, __pteval) \
+      __pte(xchg(&pte_val(*(__ptep)), pte_val(__pteval)))
+
+#ifdef CONFIG_X86_CMPXCHG
+#define __HAVE_ARCH_PTEP_CMPXCHG
+#define ptep_cmpxchg(__ptep,__oldval,__newval)					\
+	(cmpxchg(&pte_val(*(__ptep)),						\
+			pte_val(__oldval),					\
+			pte_val(__newval)					\
+			) == pte_val(__oldval)					\
+	)
+#endif
+
 #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))

 #define pmd_page_kernel(pmd) \
Index: linux-2.6.10/include/asm-x86_64/pgtable.h
===================================================================
--- linux-2.6.10.orig/include/asm-x86_64/pgtable.h	2005-01-21 07:39:41.000000000 -0800
+++ linux-2.6.10/include/asm-x86_64/pgtable.h	2005-01-21 10:03:24.000000000 -0800
@@ -415,6 +415,20 @@ extern int kern_addr_valid(unsigned long
    (((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o))

 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+
+/* Atomic operations to avoid having to clear a pte before setting it to another value */
+#define ptep_xchg(__ptep, __pteval) \
+      __pte(xchg(&pte_val(*(__ptep)), pte_val(__pteval)))
+
+#define ptep_cmpxchg(__ptep,__oldval,__newval)					\
+	(cmpxchg(&pte_val(*(__ptep)),						\
+			pte_val(__oldval),					\
+			pte_val(__newval)					\
+			) == pte_val(__oldval)					\
+	)
+
+#define __HAVE_ARCH_PTEP_XCHG
+#define __HAVE_ARCH_PTEP_CMPXCHG
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
 #define __HAVE_ARCH_PTEP_SET_WRPROTECT
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>

  reply	other threads:[~2005-01-21 18:22 UTC|newest]

Thread overview: 340+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4189EC67.40601@yahoo.com.au>
     [not found] ` <Pine.LNX.4.58.0411040820250.8211@schroedinger.engr.sgi.com>
     [not found]   ` <418AD329.3000609@yahoo.com.au>
     [not found]     ` <Pine.LNX.4.58.0411041733270.11583@schroedinger.engr.sgi.com>
     [not found]       ` <418AE0F0.5050908@yahoo.com.au>
     [not found]         ` <418AE9BB.1000602@yahoo.com.au>
     [not found]           ` <1099622957.29587.101.camel@gaston>
     [not found]             ` <418C55A7.9030100@yahoo.com.au>
2004-11-06  9:28               ` removing mm->rss and mm->anon_rss from kernel? Christoph Lameter
2004-11-06  9:48                 ` Nick Piggin
2004-11-06  9:59                   ` William Lee Irwin III
2004-11-06 16:10                     ` Christoph Lameter
2004-11-06 10:19                 ` Nick Piggin
2004-11-06 10:31                   ` William Lee Irwin III
2004-11-06 10:41                     ` Nick Piggin
2004-11-06 10:53                       ` William Lee Irwin III
2004-11-06 11:07                         ` Nick Piggin
2004-11-06 12:06                           ` William Lee Irwin III
2004-11-06 12:08                             ` Nick Piggin
2004-11-06 12:23                               ` William Lee Irwin III
2004-11-07  0:54                                 ` Nick Piggin
2004-11-07  1:11                                   ` William Lee Irwin III
2004-11-07  1:58                                     ` Nick Piggin
2004-11-07  2:25                                       ` William Lee Irwin III
2004-11-06 12:59                 ` Andi Kleen
2004-11-06 15:17                 ` Martin J. Bligh
2004-11-06 16:19                   ` Christoph Lameter
2004-11-06 20:05                     ` William Lee Irwin III
2004-11-06 20:51                     ` Rik van Riel
2004-11-07 16:11                     ` Martin J. Bligh
2004-11-07 18:25                       ` Matthew Wilcox
2004-11-08 12:43                         ` Jesse Barnes
2004-11-08 15:26                         ` Andi Kleen
2004-11-08 16:07                           ` Christoph Lameter
2004-11-08 15:47                         ` Russ Anderson
2004-11-08 16:08                           ` Martin J. Bligh
2004-11-10  4:52                           ` Nick Piggin
2004-11-10 17:30                             ` Robin Holt
2004-11-10 18:50                             ` Ray Bryant
2004-11-10 18:50                             ` Ray Bryant
2004-11-12 23:45                             ` Ray Bryant
2004-11-13  0:05                               ` Steve Neuner
2004-11-08 16:04                       ` Christoph Lameter
2004-11-08 16:12                         ` Anton Blanchard
2004-11-08 16:14                         ` Martin J. Bligh
2004-11-08 16:25                           ` Christoph Lameter
2004-11-08 16:56                             ` Hugh Dickins
2004-11-08 17:01                               ` Christoph Lameter
2004-11-09  2:40                                 ` Nick Piggin
2004-11-09 12:10                                   ` Matthew Wilcox
2004-11-10  0:48                                     ` Nick Piggin
2004-11-08 16:30                         ` Erich Focht
2004-11-08 16:57                           ` Diego Calleja
2004-11-08 17:26                             ` Erich Focht
2004-11-10 11:57                         ` Magnus Damm
2004-11-08 16:35                       ` Rik van Riel
2004-11-06 16:06                 ` Hugh Dickins
2004-11-06 16:52                   ` Christoph Lameter
2004-11-18 19:34                   ` another approach to rss : sloppy rss Christoph Lameter
2004-11-19  1:09                     ` Nick Piggin
2004-11-19  1:14                       ` Christoph Lameter
2004-11-19  1:39                         ` Nick Piggin
2004-11-19  2:35                           ` Christoph Lameter
2004-11-19  6:00                             ` Nick Piggin
2004-11-19 19:21                               ` Christoph Lameter
2004-11-19 19:57                                 ` Robin Holt
2004-11-20  1:24                                   ` Nick Piggin
2004-11-20  1:46                                     ` Robin Holt
2004-11-19  1:40                     ` fast path for anonymous memory allocation Christoph Lameter
2004-11-19  2:19                       ` Nick Piggin
2004-11-19  2:38                         ` Christoph Lameter
2004-11-19  2:44                           ` Nick Piggin
2004-11-19  3:28                             ` Christoph Lameter
2004-11-19  7:07                               ` Benjamin Herrenschmidt
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: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-14 16:37                                                                           ` Christoph Lameter
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-21 18:22                                                                                                   ` Christoph Lameter [this message]
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  9:03                                                                                                         ` Christian Hildner
2005-02-07  6:14                                                                                                           ` Kernel 2.4.21 gives kernel panic at boot time baswaraj kasture
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-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 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                                   ` page fault scalability patch V11 [4/7]: universal cmpxchg for i386 Christoph Lameter
2004-11-19 19:46                                   ` page fault scalability patch V11 [5/7]: i386 atomic pte operations 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  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
2004-11-19  7:05                         ` fast path for anonymous memory allocation Benjamin Herrenschmidt
2004-11-06 20:16                 ` removing mm->rss and mm->anon_rss from kernel? Peter Chubb
2004-11-06 20:54                   ` Rik van Riel
2004-11-06 21:31                     ` William Lee Irwin III

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.0501211020430.25346@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --cc=ak@muc.de \
    --cc=benh@kernel.crashing.org \
    --cc=hugh@veritas.com \
    --cc=linux-ia64@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