All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: akpm@linux-foundation.org
Cc: Andrea Arcangeli <andrea@qumranet.com>, Robin Holt <holt@sgi.com>
Cc: Avi Kivity <avi@qumranet.com>, Izik Eidus <izike@qumranet.com>
Cc: kvm-devel@lists.sourceforge.net
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: steiner@sgi.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org
Cc: daniel.blueman@quadrics.com
Subject: [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges
Date: Fri, 08 Feb 2008 14:06:18 -0800	[thread overview]
Message-ID: <20080208220656.073652142@sgi.com> (raw)
In-Reply-To: 20080208220616.089936205@sgi.com

[-- Attachment #1: mmu_invalidate_range_callbacks --]
[-- Type: text/plain, Size: 11235 bytes --]

The invalidation of address ranges in a mm_struct needs to be
performed when pages are removed or permissions etc change.

If invalidate_range_begin() is called with locks held then we
pass a flag into invalidate_range() to indicate that no sleeping is
possible. Locks are only held for truncate and huge pages.

In two cases we use invalidate_range_begin/end to invalidate
single pages because the pair allows holding off new references
(idea by Robin Holt).

do_wp_page(): We hold off new references while we update the pte.

xip_unmap: We are not taking the PageLock so we cannot
use the invalidate_page mmu_rmap_notifier. invalidate_range_begin/end
stands in.

Signed-off-by: Andrea Arcangeli <andrea@qumranet.com>
Signed-off-by: Robin Holt <holt@sgi.com>
Signed-off-by: Christoph Lameter <clameter@sgi.com>

---
 mm/filemap_xip.c |    5 +++++
 mm/fremap.c      |    3 +++
 mm/hugetlb.c     |    3 +++
 mm/memory.c      |   35 +++++++++++++++++++++++++++++------
 mm/mmap.c        |    2 ++
 mm/mprotect.c    |    3 +++
 mm/mremap.c      |    7 ++++++-
 7 files changed, 51 insertions(+), 7 deletions(-)

Index: linux-2.6/mm/fremap.c
===================================================================
--- linux-2.6.orig/mm/fremap.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/fremap.c	2008-02-08 13:25:22.000000000 -0800
@@ -15,6 +15,7 @@
 #include <linux/rmap.h>
 #include <linux/module.h>
 #include <linux/syscalls.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/mmu_context.h>
 #include <asm/cacheflush.h>
@@ -214,7 +215,9 @@ asmlinkage long sys_remap_file_pages(uns
 		spin_unlock(&mapping->i_mmap_lock);
 	}
 
+	mmu_notifier(invalidate_range_begin, mm, start, start + size, 0);
 	err = populate_range(mm, vma, start, size, pgoff);
+	mmu_notifier(invalidate_range_end, mm, start, start + size, 0);
 	if (!err && !(flags & MAP_NONBLOCK)) {
 		if (unlikely(has_write_lock)) {
 			downgrade_write(&mm->mmap_sem);
Index: linux-2.6/mm/memory.c
===================================================================
--- linux-2.6.orig/mm/memory.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/memory.c	2008-02-08 13:25:22.000000000 -0800
@@ -51,6 +51,7 @@
 #include <linux/init.h>
 #include <linux/writeback.h>
 #include <linux/memcontrol.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/pgalloc.h>
 #include <asm/uaccess.h>
@@ -611,6 +612,9 @@ int copy_page_range(struct mm_struct *ds
 	if (is_vm_hugetlb_page(vma))
 		return copy_hugetlb_page_range(dst_mm, src_mm, vma);
 
+	if (is_cow_mapping(vma->vm_flags))
+		mmu_notifier(invalidate_range_begin, src_mm, addr, end, 0);
+
 	dst_pgd = pgd_offset(dst_mm, addr);
 	src_pgd = pgd_offset(src_mm, addr);
 	do {
@@ -621,6 +625,11 @@ int copy_page_range(struct mm_struct *ds
 						vma, addr, next))
 			return -ENOMEM;
 	} while (dst_pgd++, src_pgd++, addr = next, addr != end);
+
+	if (is_cow_mapping(vma->vm_flags))
+		mmu_notifier(invalidate_range_end, src_mm,
+						vma->vm_start, end, 0);
+
 	return 0;
 }
 
@@ -893,13 +902,16 @@ unsigned long zap_page_range(struct vm_a
 	struct mmu_gather *tlb;
 	unsigned long end = address + size;
 	unsigned long nr_accounted = 0;
+	int atomic = details ? (details->i_mmap_lock != 0) : 0;
 
 	lru_add_drain();
 	tlb = tlb_gather_mmu(mm, 0);
 	update_hiwater_rss(mm);
+	mmu_notifier(invalidate_range_begin, mm, address, end, atomic);
 	end = unmap_vmas(&tlb, vma, address, end, &nr_accounted, details);
 	if (tlb)
 		tlb_finish_mmu(tlb, address, end);
+	mmu_notifier(invalidate_range_end, mm, address, end, atomic);
 	return end;
 }
 
@@ -1337,7 +1349,7 @@ int remap_pfn_range(struct vm_area_struc
 {
 	pgd_t *pgd;
 	unsigned long next;
-	unsigned long end = addr + PAGE_ALIGN(size);
+	unsigned long start = addr, end = addr + PAGE_ALIGN(size);
 	struct mm_struct *mm = vma->vm_mm;
 	int err;
 
@@ -1371,6 +1383,7 @@ int remap_pfn_range(struct vm_area_struc
 	pfn -= addr >> PAGE_SHIFT;
 	pgd = pgd_offset(mm, addr);
 	flush_cache_range(vma, addr, end);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	do {
 		next = pgd_addr_end(addr, end);
 		err = remap_pud_range(mm, pgd, addr, next,
@@ -1378,6 +1391,7 @@ int remap_pfn_range(struct vm_area_struc
 		if (err)
 			break;
 	} while (pgd++, addr = next, addr != end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	return err;
 }
 EXPORT_SYMBOL(remap_pfn_range);
@@ -1461,10 +1475,11 @@ int apply_to_page_range(struct mm_struct
 {
 	pgd_t *pgd;
 	unsigned long next;
-	unsigned long end = addr + size;
+	unsigned long start = addr, end = addr + size;
 	int err;
 
 	BUG_ON(addr >= end);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	pgd = pgd_offset(mm, addr);
 	do {
 		next = pgd_addr_end(addr, end);
@@ -1472,6 +1487,7 @@ int apply_to_page_range(struct mm_struct
 		if (err)
 			break;
 	} while (pgd++, addr = next, addr != end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	return err;
 }
 EXPORT_SYMBOL_GPL(apply_to_page_range);
@@ -1612,8 +1628,10 @@ static int do_wp_page(struct mm_struct *
 			page_table = pte_offset_map_lock(mm, pmd, address,
 							 &ptl);
 			page_cache_release(old_page);
-			if (!pte_same(*page_table, orig_pte))
-				goto unlock;
+			if (!pte_same(*page_table, orig_pte)) {
+				pte_unmap_unlock(page_table, ptl);
+				goto check_dirty;
+			}
 
 			page_mkwrite = 1;
 		}
@@ -1629,7 +1647,8 @@ static int do_wp_page(struct mm_struct *
 		if (ptep_set_access_flags(vma, address, page_table, entry,1))
 			update_mmu_cache(vma, address, entry);
 		ret |= VM_FAULT_WRITE;
-		goto unlock;
+		pte_unmap_unlock(page_table, ptl);
+		goto check_dirty;
 	}
 
 	/*
@@ -1651,6 +1670,8 @@ gotten:
 	if (mem_cgroup_charge(new_page, mm, GFP_KERNEL))
 		goto oom_free_new;
 
+	mmu_notifier(invalidate_range_begin, mm, address,
+				address + PAGE_SIZE, 0);
 	/*
 	 * Re-check the pte - we dropped the lock
 	 */
@@ -1689,8 +1710,10 @@ gotten:
 		page_cache_release(new_page);
 	if (old_page)
 		page_cache_release(old_page);
-unlock:
 	pte_unmap_unlock(page_table, ptl);
+	mmu_notifier(invalidate_range_end, mm,
+				address, address + PAGE_SIZE, 0);
+check_dirty:
 	if (dirty_page) {
 		if (vma->vm_file)
 			file_update_time(vma->vm_file);
Index: linux-2.6/mm/mmap.c
===================================================================
--- linux-2.6.orig/mm/mmap.c	2008-02-08 13:25:21.000000000 -0800
+++ linux-2.6/mm/mmap.c	2008-02-08 13:25:22.000000000 -0800
@@ -1748,11 +1748,13 @@ static void unmap_region(struct mm_struc
 	lru_add_drain();
 	tlb = tlb_gather_mmu(mm, 0);
 	update_hiwater_rss(mm);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	unmap_vmas(&tlb, vma, start, end, &nr_accounted, NULL);
 	vm_unacct_memory(nr_accounted);
 	free_pgtables(&tlb, vma, prev? prev->vm_end: FIRST_USER_ADDRESS,
 				 next? next->vm_start: 0);
 	tlb_finish_mmu(tlb, start, end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 }
 
 /*
Index: linux-2.6/mm/hugetlb.c
===================================================================
--- linux-2.6.orig/mm/hugetlb.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/hugetlb.c	2008-02-08 13:25:22.000000000 -0800
@@ -14,6 +14,7 @@
 #include <linux/mempolicy.h>
 #include <linux/cpuset.h>
 #include <linux/mutex.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
@@ -753,6 +754,7 @@ void __unmap_hugepage_range(struct vm_ar
 	BUG_ON(start & ~HPAGE_MASK);
 	BUG_ON(end & ~HPAGE_MASK);
 
+	mmu_notifier(invalidate_range_begin, mm, start, end, 1);
 	spin_lock(&mm->page_table_lock);
 	for (address = start; address < end; address += HPAGE_SIZE) {
 		ptep = huge_pte_offset(mm, address);
@@ -773,6 +775,7 @@ void __unmap_hugepage_range(struct vm_ar
 	}
 	spin_unlock(&mm->page_table_lock);
 	flush_tlb_range(vma, start, end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 1);
 	list_for_each_entry_safe(page, tmp, &page_list, lru) {
 		list_del(&page->lru);
 		put_page(page);
Index: linux-2.6/mm/filemap_xip.c
===================================================================
--- linux-2.6.orig/mm/filemap_xip.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/filemap_xip.c	2008-02-08 13:25:22.000000000 -0800
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/uio.h>
 #include <linux/rmap.h>
+#include <linux/mmu_notifier.h>
 #include <linux/sched.h>
 #include <asm/tlbflush.h>
 
@@ -190,6 +191,8 @@ __xip_unmap (struct address_space * mapp
 		address = vma->vm_start +
 			((pgoff - vma->vm_pgoff) << PAGE_SHIFT);
 		BUG_ON(address < vma->vm_start || address >= vma->vm_end);
+		mmu_notifier(invalidate_range_begin, mm, address,
+					address + PAGE_SIZE, 1);
 		pte = page_check_address(page, mm, address, &ptl);
 		if (pte) {
 			/* Nuke the page table entry. */
@@ -201,6 +204,8 @@ __xip_unmap (struct address_space * mapp
 			pte_unmap_unlock(pte, ptl);
 			page_cache_release(page);
 		}
+		mmu_notifier(invalidate_range_end, mm,
+				address, address + PAGE_SIZE, 1);
 	}
 	spin_unlock(&mapping->i_mmap_lock);
 }
Index: linux-2.6/mm/mremap.c
===================================================================
--- linux-2.6.orig/mm/mremap.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/mremap.c	2008-02-08 13:25:22.000000000 -0800
@@ -18,6 +18,7 @@
 #include <linux/highmem.h>
 #include <linux/security.h>
 #include <linux/syscalls.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/uaccess.h>
 #include <asm/cacheflush.h>
@@ -124,12 +125,15 @@ unsigned long move_page_tables(struct vm
 		unsigned long old_addr, struct vm_area_struct *new_vma,
 		unsigned long new_addr, unsigned long len)
 {
-	unsigned long extent, next, old_end;
+	unsigned long extent, next, old_start, old_end;
 	pmd_t *old_pmd, *new_pmd;
 
+	old_start = old_addr;
 	old_end = old_addr + len;
 	flush_cache_range(vma, old_addr, old_end);
 
+	mmu_notifier(invalidate_range_begin, vma->vm_mm,
+					old_addr, old_end, 0);
 	for (; old_addr < old_end; old_addr += extent, new_addr += extent) {
 		cond_resched();
 		next = (old_addr + PMD_SIZE) & PMD_MASK;
@@ -150,6 +154,7 @@ unsigned long move_page_tables(struct vm
 		move_ptes(vma, old_pmd, old_addr, old_addr + extent,
 				new_vma, new_pmd, new_addr);
 	}
+	mmu_notifier(invalidate_range_end, vma->vm_mm, old_start, old_end, 0);
 
 	return len + old_addr - old_end;	/* how much done */
 }
Index: linux-2.6/mm/mprotect.c
===================================================================
--- linux-2.6.orig/mm/mprotect.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/mprotect.c	2008-02-08 13:25:22.000000000 -0800
@@ -21,6 +21,7 @@
 #include <linux/syscalls.h>
 #include <linux/swap.h>
 #include <linux/swapops.h>
+#include <linux/mmu_notifier.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 #include <asm/cacheflush.h>
@@ -198,10 +199,12 @@ success:
 		dirty_accountable = 1;
 	}
 
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	if (is_vm_hugetlb_page(vma))
 		hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
 	else
 		change_protection(vma, start, end, vma->vm_page_prot, dirty_accountable);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
 	vm_stat_account(mm, newflags, vma->vm_file, nrpages);
 	return 0;

-- 

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Lameter <clameter-sJ/iWh9BUns@public.gmane.org>
To: akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org
Cc: Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
	Peter Zijlstra
	<a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org>,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	steiner-sJ/iWh9BUns@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
	kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	daniel.blueman-xqY44rlHlBpWk0Htik3J/w@public.gmane.org,
	Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
Subject: [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges
Date: Fri, 08 Feb 2008 14:06:18 -0800	[thread overview]
Message-ID: <20080208220656.073652142@sgi.com> (raw)
In-Reply-To: 20080208220616.089936205@sgi.com

[-- Attachment #1: mmu_invalidate_range_callbacks --]
[-- Type: text/plain, Size: 11534 bytes --]

The invalidation of address ranges in a mm_struct needs to be
performed when pages are removed or permissions etc change.

If invalidate_range_begin() is called with locks held then we
pass a flag into invalidate_range() to indicate that no sleeping is
possible. Locks are only held for truncate and huge pages.

In two cases we use invalidate_range_begin/end to invalidate
single pages because the pair allows holding off new references
(idea by Robin Holt).

do_wp_page(): We hold off new references while we update the pte.

xip_unmap: We are not taking the PageLock so we cannot
use the invalidate_page mmu_rmap_notifier. invalidate_range_begin/end
stands in.

Signed-off-by: Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Signed-off-by: Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
Signed-off-by: Christoph Lameter <clameter-sJ/iWh9BUns@public.gmane.org>

---
 mm/filemap_xip.c |    5 +++++
 mm/fremap.c      |    3 +++
 mm/hugetlb.c     |    3 +++
 mm/memory.c      |   35 +++++++++++++++++++++++++++++------
 mm/mmap.c        |    2 ++
 mm/mprotect.c    |    3 +++
 mm/mremap.c      |    7 ++++++-
 7 files changed, 51 insertions(+), 7 deletions(-)

Index: linux-2.6/mm/fremap.c
===================================================================
--- linux-2.6.orig/mm/fremap.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/fremap.c	2008-02-08 13:25:22.000000000 -0800
@@ -15,6 +15,7 @@
 #include <linux/rmap.h>
 #include <linux/module.h>
 #include <linux/syscalls.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/mmu_context.h>
 #include <asm/cacheflush.h>
@@ -214,7 +215,9 @@ asmlinkage long sys_remap_file_pages(uns
 		spin_unlock(&mapping->i_mmap_lock);
 	}
 
+	mmu_notifier(invalidate_range_begin, mm, start, start + size, 0);
 	err = populate_range(mm, vma, start, size, pgoff);
+	mmu_notifier(invalidate_range_end, mm, start, start + size, 0);
 	if (!err && !(flags & MAP_NONBLOCK)) {
 		if (unlikely(has_write_lock)) {
 			downgrade_write(&mm->mmap_sem);
Index: linux-2.6/mm/memory.c
===================================================================
--- linux-2.6.orig/mm/memory.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/memory.c	2008-02-08 13:25:22.000000000 -0800
@@ -51,6 +51,7 @@
 #include <linux/init.h>
 #include <linux/writeback.h>
 #include <linux/memcontrol.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/pgalloc.h>
 #include <asm/uaccess.h>
@@ -611,6 +612,9 @@ int copy_page_range(struct mm_struct *ds
 	if (is_vm_hugetlb_page(vma))
 		return copy_hugetlb_page_range(dst_mm, src_mm, vma);
 
+	if (is_cow_mapping(vma->vm_flags))
+		mmu_notifier(invalidate_range_begin, src_mm, addr, end, 0);
+
 	dst_pgd = pgd_offset(dst_mm, addr);
 	src_pgd = pgd_offset(src_mm, addr);
 	do {
@@ -621,6 +625,11 @@ int copy_page_range(struct mm_struct *ds
 						vma, addr, next))
 			return -ENOMEM;
 	} while (dst_pgd++, src_pgd++, addr = next, addr != end);
+
+	if (is_cow_mapping(vma->vm_flags))
+		mmu_notifier(invalidate_range_end, src_mm,
+						vma->vm_start, end, 0);
+
 	return 0;
 }
 
@@ -893,13 +902,16 @@ unsigned long zap_page_range(struct vm_a
 	struct mmu_gather *tlb;
 	unsigned long end = address + size;
 	unsigned long nr_accounted = 0;
+	int atomic = details ? (details->i_mmap_lock != 0) : 0;
 
 	lru_add_drain();
 	tlb = tlb_gather_mmu(mm, 0);
 	update_hiwater_rss(mm);
+	mmu_notifier(invalidate_range_begin, mm, address, end, atomic);
 	end = unmap_vmas(&tlb, vma, address, end, &nr_accounted, details);
 	if (tlb)
 		tlb_finish_mmu(tlb, address, end);
+	mmu_notifier(invalidate_range_end, mm, address, end, atomic);
 	return end;
 }
 
@@ -1337,7 +1349,7 @@ int remap_pfn_range(struct vm_area_struc
 {
 	pgd_t *pgd;
 	unsigned long next;
-	unsigned long end = addr + PAGE_ALIGN(size);
+	unsigned long start = addr, end = addr + PAGE_ALIGN(size);
 	struct mm_struct *mm = vma->vm_mm;
 	int err;
 
@@ -1371,6 +1383,7 @@ int remap_pfn_range(struct vm_area_struc
 	pfn -= addr >> PAGE_SHIFT;
 	pgd = pgd_offset(mm, addr);
 	flush_cache_range(vma, addr, end);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	do {
 		next = pgd_addr_end(addr, end);
 		err = remap_pud_range(mm, pgd, addr, next,
@@ -1378,6 +1391,7 @@ int remap_pfn_range(struct vm_area_struc
 		if (err)
 			break;
 	} while (pgd++, addr = next, addr != end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	return err;
 }
 EXPORT_SYMBOL(remap_pfn_range);
@@ -1461,10 +1475,11 @@ int apply_to_page_range(struct mm_struct
 {
 	pgd_t *pgd;
 	unsigned long next;
-	unsigned long end = addr + size;
+	unsigned long start = addr, end = addr + size;
 	int err;
 
 	BUG_ON(addr >= end);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	pgd = pgd_offset(mm, addr);
 	do {
 		next = pgd_addr_end(addr, end);
@@ -1472,6 +1487,7 @@ int apply_to_page_range(struct mm_struct
 		if (err)
 			break;
 	} while (pgd++, addr = next, addr != end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	return err;
 }
 EXPORT_SYMBOL_GPL(apply_to_page_range);
@@ -1612,8 +1628,10 @@ static int do_wp_page(struct mm_struct *
 			page_table = pte_offset_map_lock(mm, pmd, address,
 							 &ptl);
 			page_cache_release(old_page);
-			if (!pte_same(*page_table, orig_pte))
-				goto unlock;
+			if (!pte_same(*page_table, orig_pte)) {
+				pte_unmap_unlock(page_table, ptl);
+				goto check_dirty;
+			}
 
 			page_mkwrite = 1;
 		}
@@ -1629,7 +1647,8 @@ static int do_wp_page(struct mm_struct *
 		if (ptep_set_access_flags(vma, address, page_table, entry,1))
 			update_mmu_cache(vma, address, entry);
 		ret |= VM_FAULT_WRITE;
-		goto unlock;
+		pte_unmap_unlock(page_table, ptl);
+		goto check_dirty;
 	}
 
 	/*
@@ -1651,6 +1670,8 @@ gotten:
 	if (mem_cgroup_charge(new_page, mm, GFP_KERNEL))
 		goto oom_free_new;
 
+	mmu_notifier(invalidate_range_begin, mm, address,
+				address + PAGE_SIZE, 0);
 	/*
 	 * Re-check the pte - we dropped the lock
 	 */
@@ -1689,8 +1710,10 @@ gotten:
 		page_cache_release(new_page);
 	if (old_page)
 		page_cache_release(old_page);
-unlock:
 	pte_unmap_unlock(page_table, ptl);
+	mmu_notifier(invalidate_range_end, mm,
+				address, address + PAGE_SIZE, 0);
+check_dirty:
 	if (dirty_page) {
 		if (vma->vm_file)
 			file_update_time(vma->vm_file);
Index: linux-2.6/mm/mmap.c
===================================================================
--- linux-2.6.orig/mm/mmap.c	2008-02-08 13:25:21.000000000 -0800
+++ linux-2.6/mm/mmap.c	2008-02-08 13:25:22.000000000 -0800
@@ -1748,11 +1748,13 @@ static void unmap_region(struct mm_struc
 	lru_add_drain();
 	tlb = tlb_gather_mmu(mm, 0);
 	update_hiwater_rss(mm);
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	unmap_vmas(&tlb, vma, start, end, &nr_accounted, NULL);
 	vm_unacct_memory(nr_accounted);
 	free_pgtables(&tlb, vma, prev? prev->vm_end: FIRST_USER_ADDRESS,
 				 next? next->vm_start: 0);
 	tlb_finish_mmu(tlb, start, end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 }
 
 /*
Index: linux-2.6/mm/hugetlb.c
===================================================================
--- linux-2.6.orig/mm/hugetlb.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/hugetlb.c	2008-02-08 13:25:22.000000000 -0800
@@ -14,6 +14,7 @@
 #include <linux/mempolicy.h>
 #include <linux/cpuset.h>
 #include <linux/mutex.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
@@ -753,6 +754,7 @@ void __unmap_hugepage_range(struct vm_ar
 	BUG_ON(start & ~HPAGE_MASK);
 	BUG_ON(end & ~HPAGE_MASK);
 
+	mmu_notifier(invalidate_range_begin, mm, start, end, 1);
 	spin_lock(&mm->page_table_lock);
 	for (address = start; address < end; address += HPAGE_SIZE) {
 		ptep = huge_pte_offset(mm, address);
@@ -773,6 +775,7 @@ void __unmap_hugepage_range(struct vm_ar
 	}
 	spin_unlock(&mm->page_table_lock);
 	flush_tlb_range(vma, start, end);
+	mmu_notifier(invalidate_range_end, mm, start, end, 1);
 	list_for_each_entry_safe(page, tmp, &page_list, lru) {
 		list_del(&page->lru);
 		put_page(page);
Index: linux-2.6/mm/filemap_xip.c
===================================================================
--- linux-2.6.orig/mm/filemap_xip.c	2008-02-08 13:22:14.000000000 -0800
+++ linux-2.6/mm/filemap_xip.c	2008-02-08 13:25:22.000000000 -0800
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/uio.h>
 #include <linux/rmap.h>
+#include <linux/mmu_notifier.h>
 #include <linux/sched.h>
 #include <asm/tlbflush.h>
 
@@ -190,6 +191,8 @@ __xip_unmap (struct address_space * mapp
 		address = vma->vm_start +
 			((pgoff - vma->vm_pgoff) << PAGE_SHIFT);
 		BUG_ON(address < vma->vm_start || address >= vma->vm_end);
+		mmu_notifier(invalidate_range_begin, mm, address,
+					address + PAGE_SIZE, 1);
 		pte = page_check_address(page, mm, address, &ptl);
 		if (pte) {
 			/* Nuke the page table entry. */
@@ -201,6 +204,8 @@ __xip_unmap (struct address_space * mapp
 			pte_unmap_unlock(pte, ptl);
 			page_cache_release(page);
 		}
+		mmu_notifier(invalidate_range_end, mm,
+				address, address + PAGE_SIZE, 1);
 	}
 	spin_unlock(&mapping->i_mmap_lock);
 }
Index: linux-2.6/mm/mremap.c
===================================================================
--- linux-2.6.orig/mm/mremap.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/mremap.c	2008-02-08 13:25:22.000000000 -0800
@@ -18,6 +18,7 @@
 #include <linux/highmem.h>
 #include <linux/security.h>
 #include <linux/syscalls.h>
+#include <linux/mmu_notifier.h>
 
 #include <asm/uaccess.h>
 #include <asm/cacheflush.h>
@@ -124,12 +125,15 @@ unsigned long move_page_tables(struct vm
 		unsigned long old_addr, struct vm_area_struct *new_vma,
 		unsigned long new_addr, unsigned long len)
 {
-	unsigned long extent, next, old_end;
+	unsigned long extent, next, old_start, old_end;
 	pmd_t *old_pmd, *new_pmd;
 
+	old_start = old_addr;
 	old_end = old_addr + len;
 	flush_cache_range(vma, old_addr, old_end);
 
+	mmu_notifier(invalidate_range_begin, vma->vm_mm,
+					old_addr, old_end, 0);
 	for (; old_addr < old_end; old_addr += extent, new_addr += extent) {
 		cond_resched();
 		next = (old_addr + PMD_SIZE) & PMD_MASK;
@@ -150,6 +154,7 @@ unsigned long move_page_tables(struct vm
 		move_ptes(vma, old_pmd, old_addr, old_addr + extent,
 				new_vma, new_pmd, new_addr);
 	}
+	mmu_notifier(invalidate_range_end, vma->vm_mm, old_start, old_end, 0);
 
 	return len + old_addr - old_end;	/* how much done */
 }
Index: linux-2.6/mm/mprotect.c
===================================================================
--- linux-2.6.orig/mm/mprotect.c	2008-02-08 13:18:58.000000000 -0800
+++ linux-2.6/mm/mprotect.c	2008-02-08 13:25:22.000000000 -0800
@@ -21,6 +21,7 @@
 #include <linux/syscalls.h>
 #include <linux/swap.h>
 #include <linux/swapops.h>
+#include <linux/mmu_notifier.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 #include <asm/cacheflush.h>
@@ -198,10 +199,12 @@ success:
 		dirty_accountable = 1;
 	}
 
+	mmu_notifier(invalidate_range_begin, mm, start, end, 0);
 	if (is_vm_hugetlb_page(vma))
 		hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
 	else
 		change_protection(vma, start, end, vma->vm_page_prot, dirty_accountable);
+	mmu_notifier(invalidate_range_end, mm, start, end, 0);
 	vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
 	vm_stat_account(mm, newflags, vma->vm_file, nrpages);
 	return 0;

-- 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

  parent reply	other threads:[~2008-02-08 22:09 UTC|newest]

Thread overview: 451+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-08 22:06 [patch 0/6] MMU Notifiers V6 Christoph Lameter
2008-02-08 22:06 ` Christoph Lameter
2008-02-08 22:06 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter
2008-02-08 22:06   ` Christoph Lameter
2008-02-08 22:06 ` Christoph Lameter [this message]
2008-02-08 22:06   ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter
2008-02-08 22:06 ` [patch 3/6] mmu_notifier: invalidate_page callbacks Christoph Lameter
2008-02-08 22:06   ` Christoph Lameter
2008-02-08 22:06 ` [patch 4/6] mmu_notifier: Skeleton driver for a simple mmu_notifier Christoph Lameter
2008-02-08 22:06   ` Christoph Lameter
2008-02-08 22:06 ` [patch 5/6] mmu_notifier: Support for drivers with revers maps (f.e. for XPmem) Christoph Lameter
2008-02-08 22:06   ` Christoph Lameter
2008-02-08 22:06 ` [patch 6/6] mmu_rmap_notifier: Skeleton for complex driver that uses its own rmaps Christoph Lameter
2008-02-08 22:06   ` Christoph Lameter
2008-02-08 22:23 ` [patch 0/6] MMU Notifiers V6 Andrew Morton
2008-02-08 22:23   ` Andrew Morton
2008-02-08 22:23   ` [ofa-general] " Andrew Morton
2008-02-08 23:32   ` Christoph Lameter
2008-02-08 23:32     ` Christoph Lameter
2008-02-08 23:32     ` Christoph Lameter
2008-02-08 23:36     ` Robin Holt
2008-02-08 23:36       ` Robin Holt
2008-02-08 23:36       ` [ofa-general] " Robin Holt
2008-02-08 23:41       ` Christoph Lameter
2008-02-08 23:41         ` Christoph Lameter
2008-02-08 23:41         ` [ofa-general] " Christoph Lameter
2008-02-08 23:43         ` Robin Holt
2008-02-08 23:43           ` Robin Holt
2008-02-08 23:43           ` Robin Holt
2008-02-08 23:56           ` Andrew Morton
2008-02-08 23:56             ` Andrew Morton
2008-02-08 23:56             ` [ofa-general] " Andrew Morton
2008-02-09  0:05             ` Christoph Lameter
2008-02-09  0:05               ` Christoph Lameter
2008-02-09  0:05               ` [ofa-general] " Christoph Lameter
2008-02-09  0:12               ` Roland Dreier
2008-02-09  0:12                 ` Roland Dreier
2008-02-09  0:12                 ` Roland Dreier
2008-02-09  0:16                 ` Christoph Lameter
2008-02-09  0:16                   ` Christoph Lameter
2008-02-09  0:16                   ` Christoph Lameter
2008-02-09  0:21                   ` [ofa-general] trying to get of all lists R S
2008-02-09  0:22                   ` [ofa-general] Re: [patch 0/6] MMU Notifiers V6 Roland Dreier
2008-02-09  0:22                     ` Roland Dreier
2008-02-09  0:36                     ` Christoph Lameter
2008-02-09  0:36                       ` Christoph Lameter
2008-02-09  0:36                       ` Christoph Lameter
2008-02-09  1:24                       ` Andrea Arcangeli
2008-02-09  1:24                         ` Andrea Arcangeli
2008-02-09  1:24                         ` Andrea Arcangeli
2008-02-09  1:27                         ` Christoph Lameter
2008-02-09  1:27                           ` Christoph Lameter
2008-02-09  1:27                           ` Christoph Lameter
2008-02-09  1:56                           ` Andrea Arcangeli
2008-02-09  1:56                             ` Andrea Arcangeli
2008-02-09  1:56                             ` Andrea Arcangeli
2008-02-09  2:16                             ` Christoph Lameter
2008-02-09  2:16                               ` Christoph Lameter
2008-02-09  2:16                               ` Christoph Lameter
2008-02-09 12:55                               ` Rik van Riel
2008-02-09 12:55                                 ` Rik van Riel
2008-02-09 12:55                                 ` Rik van Riel
2008-02-09 21:46                                 ` Christoph Lameter
2008-02-09 21:46                                   ` Christoph Lameter
2008-02-09 21:46                                   ` Christoph Lameter
2008-02-11 22:40                                   ` Demand paging for memory regions (was Re: MMU Notifiers V6) Roland Dreier
2008-02-11 22:40                                     ` Roland Dreier
2008-02-11 22:40                                     ` [ofa-general] " Roland Dreier
2008-02-12 22:01                                     ` Steve Wise
2008-02-12 22:01                                       ` Steve Wise
2008-02-12 22:01                                       ` [ofa-general] " Steve Wise
2008-02-12 22:10                                       ` Christoph Lameter
2008-02-12 22:10                                         ` Christoph Lameter
2008-02-12 22:10                                         ` [ofa-general] " Christoph Lameter
2008-02-12 22:41                                         ` [ofa-general] Re: Demand paging for memory regions Roland Dreier
2008-02-12 22:41                                           ` Roland Dreier
2008-02-12 22:41                                           ` Roland Dreier
2008-02-12 23:14                                           ` Felix Marti
2008-02-12 23:14                                             ` Felix Marti
2008-02-12 23:14                                             ` Felix Marti
2008-02-13  0:57                                             ` Christoph Lameter
2008-02-13  0:57                                               ` Christoph Lameter
2008-02-13  0:57                                               ` Christoph Lameter
2008-02-14 15:09                                             ` Steve Wise
2008-02-14 15:09                                               ` Steve Wise
2008-02-14 15:09                                               ` Steve Wise
2008-02-14 15:53                                               ` Robin Holt
2008-02-14 15:53                                                 ` Robin Holt
2008-02-14 16:23                                                 ` Steve Wise
2008-02-14 16:23                                                   ` Steve Wise
2008-02-14 16:23                                                   ` Steve Wise
2008-02-14 17:48                                                   ` Caitlin Bestler
2008-02-14 17:48                                                     ` Caitlin Bestler
2008-02-14 17:48                                                     ` Caitlin Bestler
2008-02-14 20:47                                                     ` David Singleton
2008-02-15  9:55                                                       ` Robin Holt
2008-02-14 19:39                                               ` Christoph Lameter
2008-02-14 19:39                                                 ` Christoph Lameter
2008-02-14 19:39                                                 ` Christoph Lameter
2008-02-14 20:17                                                 ` Caitlin Bestler
2008-02-14 20:17                                                   ` Caitlin Bestler
2008-02-14 20:17                                                   ` Caitlin Bestler
2008-02-14 20:20                                                   ` Christoph Lameter
2008-02-14 20:20                                                     ` Christoph Lameter
2008-02-14 20:20                                                     ` Christoph Lameter
2008-02-14 22:43                                                     ` Caitlin Bestler
2008-02-14 22:43                                                       ` Caitlin Bestler
2008-02-14 22:43                                                       ` Caitlin Bestler
2008-02-14 22:48                                                       ` Christoph Lameter
2008-02-14 22:48                                                         ` Christoph Lameter
2008-02-14 22:48                                                         ` Christoph Lameter
2008-02-15  1:26                                                         ` Caitlin Bestler
2008-02-15  1:26                                                           ` Caitlin Bestler
2008-02-15  1:26                                                           ` Caitlin Bestler
2008-02-15  2:37                                                           ` Christoph Lameter
2008-02-15  2:37                                                             ` Christoph Lameter
2008-02-15  2:37                                                             ` Christoph Lameter
2008-02-15 18:09                                                             ` Caitlin Bestler
2008-02-15 18:09                                                               ` Caitlin Bestler
2008-02-15 18:09                                                               ` Caitlin Bestler
2008-02-15 18:45                                                               ` Christoph Lameter
2008-02-15 18:45                                                                 ` Christoph Lameter
2008-02-15 18:45                                                                 ` Christoph Lameter
2008-02-15 18:53                                                                 ` Caitlin Bestler
2008-02-15 18:53                                                                   ` Caitlin Bestler
2008-02-15 18:53                                                                   ` Caitlin Bestler
2008-02-15 20:02                                                                   ` Christoph Lameter
2008-02-15 20:02                                                                     ` Christoph Lameter
2008-02-15 20:02                                                                     ` Christoph Lameter
2008-02-15 20:14                                                                     ` Caitlin Bestler
2008-02-15 20:14                                                                       ` Caitlin Bestler
2008-02-15 20:14                                                                       ` Caitlin Bestler
2008-02-15 22:50                                                                       ` Christoph Lameter
2008-02-15 22:50                                                                         ` Christoph Lameter
2008-02-15 22:50                                                                         ` Christoph Lameter
2008-02-15 23:50                                                                         ` Caitlin Bestler
2008-02-15 23:50                                                                           ` Caitlin Bestler
2008-02-15 23:50                                                                           ` Caitlin Bestler
2008-02-12 23:23                                           ` Jason Gunthorpe
2008-02-12 23:23                                             ` Jason Gunthorpe
2008-02-12 23:23                                             ` Jason Gunthorpe
2008-02-13  1:01                                             ` Christoph Lameter
2008-02-13  1:01                                               ` Christoph Lameter
2008-02-13  1:01                                               ` Christoph Lameter
2008-02-13  1:26                                               ` Jason Gunthorpe
2008-02-13  1:26                                                 ` Jason Gunthorpe
2008-02-13  1:26                                                 ` Jason Gunthorpe
2008-02-13  1:45                                                 ` Steve Wise
2008-02-13  1:45                                                   ` Steve Wise
2008-02-13  1:45                                                   ` Steve Wise
2008-02-13  2:35                                                 ` Christoph Lameter
2008-02-13  2:35                                                   ` Christoph Lameter
2008-02-13  2:35                                                   ` Christoph Lameter
2008-02-13  3:25                                                   ` Jason Gunthorpe
2008-02-13  3:25                                                     ` Jason Gunthorpe
2008-02-13  3:56                                                     ` Patrick Geoffray
2008-02-13  3:56                                                       ` Patrick Geoffray
2008-02-13  4:26                                                       ` Jason Gunthorpe
2008-02-13  4:26                                                         ` Jason Gunthorpe
2008-02-13  4:47                                                         ` Patrick Geoffray
2008-02-13  4:47                                                           ` Patrick Geoffray
2008-02-13 18:51                                                     ` Christoph Lameter
2008-02-13 18:51                                                       ` Christoph Lameter
2008-02-13 18:51                                                       ` Christoph Lameter
2008-02-13 19:51                                                       ` Jason Gunthorpe
2008-02-13 19:51                                                         ` Jason Gunthorpe
2008-02-13 19:51                                                         ` Jason Gunthorpe
2008-02-13 20:36                                                         ` Christoph Lameter
2008-02-13 20:36                                                           ` Christoph Lameter
2008-02-13 20:36                                                           ` Christoph Lameter
2008-02-13  4:09                                                   ` Christian Bell
2008-02-13  4:09                                                     ` Christian Bell
2008-02-13  4:09                                                     ` Christian Bell
2008-02-13 19:00                                                     ` Christoph Lameter
2008-02-13 19:00                                                       ` Christoph Lameter
2008-02-13 19:00                                                       ` Christoph Lameter
2008-02-13 19:46                                                       ` Christian Bell
2008-02-13 19:46                                                         ` Christian Bell
2008-02-13 20:32                                                         ` Christoph Lameter
2008-02-13 20:32                                                           ` Christoph Lameter
2008-02-13 20:32                                                           ` Christoph Lameter
2008-02-13 22:44                                                           ` Kanoj Sarcar
2008-02-13 22:44                                                             ` Kanoj Sarcar
2008-02-13 22:44                                                             ` Kanoj Sarcar
2008-02-13 23:02                                                             ` Christoph Lameter
2008-02-13 23:02                                                               ` Christoph Lameter
2008-02-13 23:02                                                               ` Christoph Lameter
2008-02-13 23:43                                                               ` Kanoj Sarcar
2008-02-13 23:43                                                                 ` Kanoj Sarcar
2008-02-13 23:43                                                                 ` Kanoj Sarcar
2008-02-13 23:48                                                                 ` Jesse Barnes
2008-02-13 23:48                                                                   ` Jesse Barnes
2008-02-13 23:48                                                                   ` [ofa-general] " Jesse Barnes
2008-02-14  0:56                                                                 ` Andrea Arcangeli
2008-02-14  0:56                                                                   ` Andrea Arcangeli
2008-02-14  0:56                                                                   ` Andrea Arcangeli
2008-02-14 19:35                                                                 ` Christoph Lameter
2008-02-14 19:35                                                                   ` Christoph Lameter
2008-02-14 19:35                                                                   ` Christoph Lameter
2008-02-13 23:23                                                     ` Pete Wyckoff
2008-02-13 23:23                                                       ` Pete Wyckoff
2008-02-13 23:23                                                       ` Pete Wyckoff
2008-02-14  0:01                                                       ` Jason Gunthorpe
2008-02-14  0:01                                                         ` Jason Gunthorpe
2008-02-27 22:11                                                         ` Christoph Lameter
2008-02-27 22:11                                                           ` Christoph Lameter
2008-02-27 22:11                                                           ` Christoph Lameter
2008-02-13  1:55                                               ` Christian Bell
2008-02-13  1:55                                                 ` Christian Bell
2008-02-13  1:55                                                 ` Christian Bell
2008-02-13  2:19                                                 ` Christoph Lameter
2008-02-13  2:19                                                   ` Christoph Lameter
2008-02-13  2:19                                                   ` Christoph Lameter
2008-02-13  0:56                                           ` Christoph Lameter
2008-02-13  0:56                                             ` Christoph Lameter
2008-02-13  0:56                                             ` Christoph Lameter
2008-02-13 12:11                                           ` Christoph Raisch
2008-02-13 12:11                                             ` Christoph Raisch
2008-02-13 12:11                                             ` Christoph Raisch
2008-02-13 19:02                                             ` Christoph Lameter
2008-02-13 19:02                                               ` Christoph Lameter
2008-02-13 19:02                                               ` Christoph Lameter
2008-02-09  0:12               ` [patch 0/6] MMU Notifiers V6 Andrew Morton
2008-02-09  0:12                 ` Andrew Morton
2008-02-09  0:12                 ` [ofa-general] " Andrew Morton
2008-02-09  0:18                 ` Christoph Lameter
2008-02-09  0:18                   ` Christoph Lameter
2008-02-09  0:18                   ` [ofa-general] " Christoph Lameter
2008-02-13 14:31 ` Jack Steiner
2008-02-13 14:31   ` Jack Steiner
  -- strict thread matches above, loose matches on Subject: below --
2008-02-15  6:48 [patch 0/6] MMU Notifiers V7 Christoph Lameter
2008-02-15  6:49 ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter
2008-02-15  6:49   ` Christoph Lameter
2008-02-16  3:37   ` Andrew Morton
2008-02-16  3:37     ` Andrew Morton
2008-02-16 19:26     ` Christoph Lameter
2008-02-16 19:26       ` Christoph Lameter
2008-02-19  8:54   ` Nick Piggin
2008-02-19  8:54     ` Nick Piggin
2008-02-19 13:34     ` Andrea Arcangeli
2008-02-19 13:34       ` Andrea Arcangeli
2008-02-19 13:34       ` Andrea Arcangeli
2008-02-27 22:23       ` Christoph Lameter
2008-02-27 22:23         ` Christoph Lameter
2008-02-27 22:23         ` Christoph Lameter
2008-02-27 23:57         ` Andrea Arcangeli
2008-02-27 23:57           ` Andrea Arcangeli
2008-02-27 23:57           ` Andrea Arcangeli
2008-02-19 23:08   ` Nick Piggin
2008-02-19 23:08     ` Nick Piggin
2008-02-20  1:00     ` Andrea Arcangeli
2008-02-20  1:00       ` Andrea Arcangeli
2008-02-20  1:00       ` Andrea Arcangeli
2008-02-20  3:00       ` Robin Holt
2008-02-20  3:00         ` Robin Holt
2008-02-20  3:00         ` Robin Holt
2008-02-20  3:11         ` Nick Piggin
2008-02-20  3:11           ` Nick Piggin
2008-02-20  3:11           ` Nick Piggin
2008-02-20  3:19           ` Robin Holt
2008-02-20  3:19             ` Robin Holt
2008-02-27 22:39       ` Christoph Lameter
2008-02-27 22:39         ` Christoph Lameter
2008-02-27 22:39         ` Christoph Lameter
2008-02-28  0:38         ` Andrea Arcangeli
2008-02-28  0:38           ` Andrea Arcangeli
2008-02-28  0:38           ` Andrea Arcangeli
2008-02-27 22:35     ` Christoph Lameter
2008-02-27 22:35       ` Christoph Lameter
2008-02-27 22:42       ` Jack Steiner
2008-02-27 22:42         ` Jack Steiner
2008-02-28  0:10       ` Christoph Lameter
2008-02-28  0:10         ` Christoph Lameter
2008-02-28  0:10         ` Christoph Lameter
2008-02-28  0:11       ` Andrea Arcangeli
2008-02-28  0:11         ` Andrea Arcangeli
2008-02-28  0:14         ` Christoph Lameter
2008-02-28  0:14           ` Christoph Lameter
2008-02-28  0:14           ` Christoph Lameter
2008-02-28  0:52           ` Andrea Arcangeli
2008-02-28  0:52             ` Andrea Arcangeli
2008-02-28  1:03             ` Christoph Lameter
2008-02-28  1:03               ` Christoph Lameter
2008-02-28  1:03               ` Christoph Lameter
2008-02-28  1:10               ` Andrea Arcangeli
2008-02-28  1:10                 ` Andrea Arcangeli
2008-02-28  1:10                 ` Andrea Arcangeli
2008-02-28 18:43                 ` Christoph Lameter
2008-02-28 18:43                   ` Christoph Lameter
2008-02-29  0:55                   ` Andrea Arcangeli
2008-02-29  0:55                     ` Andrea Arcangeli
2008-02-29  0:55                     ` Andrea Arcangeli
2008-02-29  0:59                     ` Christoph Lameter
2008-02-29  0:59                       ` Christoph Lameter
2008-02-29 13:13                       ` Andrea Arcangeli
2008-02-29 13:13                         ` Andrea Arcangeli
2008-02-29 13:13                         ` Andrea Arcangeli
2008-02-29 19:55                         ` Christoph Lameter
2008-02-29 19:55                           ` Christoph Lameter
2008-02-29 20:17                           ` Andrea Arcangeli
2008-02-29 20:17                             ` Andrea Arcangeli
2008-02-29 20:17                             ` Andrea Arcangeli
2008-02-29 21:03                             ` Christoph Lameter
2008-02-29 21:03                               ` Christoph Lameter
2008-02-29 21:23                               ` Andrea Arcangeli
2008-02-29 21:23                                 ` Andrea Arcangeli
2008-02-29 21:23                                 ` Andrea Arcangeli
2008-02-29 21:29                                 ` Christoph Lameter
2008-02-29 21:29                                   ` Christoph Lameter
2008-02-29 21:29                                   ` Christoph Lameter
2008-02-29 21:34                                 ` Christoph Lameter
2008-02-29 21:34                                   ` Christoph Lameter
2008-02-29 21:34                                   ` Christoph Lameter
2008-02-29 21:48                                   ` Andrea Arcangeli
2008-02-29 21:48                                     ` Andrea Arcangeli
2008-02-29 22:12                                     ` Christoph Lameter
2008-02-29 22:12                                       ` Christoph Lameter
2008-02-29 22:12                                       ` Christoph Lameter
2008-02-29 22:41                                       ` Andrea Arcangeli
2008-02-29 22:41                                         ` Andrea Arcangeli
2008-02-28 10:53             ` Robin Holt
2008-02-28 10:53               ` Robin Holt
2008-03-03  5:11       ` Nick Piggin
2008-03-03  5:11         ` Nick Piggin
2008-03-03  5:11         ` Nick Piggin
2008-03-03 19:28         ` Christoph Lameter
2008-03-03 19:28           ` Christoph Lameter
2008-03-03 19:50           ` Nick Piggin
2008-03-03 19:50             ` Nick Piggin
2008-03-04 18:58             ` Christoph Lameter
2008-03-04 18:58               ` Christoph Lameter
2008-03-04 18:58               ` Christoph Lameter
2008-03-05  0:52               ` Nick Piggin
2008-03-05  0:52                 ` Nick Piggin
2008-01-30  2:29 [patch 0/6] [RFC] MMU Notifiers V3 Christoph Lameter
2008-01-30  2:29 ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter
2008-01-30  2:29   ` Christoph Lameter
2008-01-28 20:28 [patch 0/6] [RFC] MMU Notifiers V2 Christoph Lameter
2008-01-28 20:28 ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter
2008-01-28 20:28   ` Christoph Lameter
2008-01-29 16:20   ` Andrea Arcangeli
2008-01-29 16:20     ` Andrea Arcangeli
2008-01-29 16:20     ` Andrea Arcangeli
2008-01-29 18:28     ` Andrea Arcangeli
2008-01-29 18:28       ` Andrea Arcangeli
2008-01-29 18:28       ` Andrea Arcangeli
2008-01-29 20:30       ` Christoph Lameter
2008-01-29 20:30         ` Christoph Lameter
2008-01-29 20:30         ` Christoph Lameter
2008-01-29 21:36         ` Andrea Arcangeli
2008-01-29 21:36           ` Andrea Arcangeli
2008-01-29 21:36           ` Andrea Arcangeli
2008-01-29 21:53           ` Christoph Lameter
2008-01-29 21:53             ` Christoph Lameter
2008-01-29 21:53             ` Christoph Lameter
2008-01-29 22:35             ` Andrea Arcangeli
2008-01-29 22:35               ` Andrea Arcangeli
2008-01-29 22:35               ` Andrea Arcangeli
2008-01-29 22:55               ` Christoph Lameter
2008-01-29 22:55                 ` Christoph Lameter
2008-01-29 22:55                 ` Christoph Lameter
2008-01-29 23:43                 ` Andrea Arcangeli
2008-01-29 23:43                   ` Andrea Arcangeli
2008-01-29 23:43                   ` Andrea Arcangeli
2008-01-30  0:34                   ` Christoph Lameter
2008-01-30  0:34                     ` Christoph Lameter
2008-01-30  0:34                     ` Christoph Lameter
2008-01-29 19:55     ` Christoph Lameter
2008-01-29 19:55       ` Christoph Lameter
2008-01-29 19:55       ` Christoph Lameter
2008-01-29 21:17       ` Andrea Arcangeli
2008-01-29 21:17         ` Andrea Arcangeli
2008-01-29 21:35         ` Christoph Lameter
2008-01-29 21:35           ` Christoph Lameter
2008-01-29 21:35           ` Christoph Lameter
2008-01-29 22:02           ` Andrea Arcangeli
2008-01-29 22:02             ` Andrea Arcangeli
2008-01-29 22:02             ` Andrea Arcangeli
2008-01-29 22:39             ` Christoph Lameter
2008-01-29 22:39               ` Christoph Lameter
2008-01-29 22:39               ` Christoph Lameter
2008-01-30  0:00               ` Andrea Arcangeli
2008-01-30  0:00                 ` Andrea Arcangeli
2008-01-30  0:00                 ` Andrea Arcangeli
2008-01-30  0:05                 ` Andrea Arcangeli
2008-01-30  0:05                   ` Andrea Arcangeli
2008-01-30  0:05                   ` Andrea Arcangeli
2008-01-30  0:22                   ` Christoph Lameter
2008-01-30  0:22                     ` Christoph Lameter
2008-01-30  0:22                     ` Christoph Lameter
2008-01-30  0:59                     ` Andrea Arcangeli
2008-01-30  0:59                       ` Andrea Arcangeli
2008-01-30  0:59                       ` Andrea Arcangeli
2008-01-30  8:26                       ` Peter Zijlstra
2008-01-30  8:26                         ` Peter Zijlstra
2008-01-30  0:20                 ` Christoph Lameter
2008-01-30  0:20                   ` Christoph Lameter
2008-01-30  0:20                   ` Christoph Lameter
2008-01-30  0:28                   ` Jack Steiner
2008-01-30  0:28                     ` Jack Steiner
2008-01-30  0:28                     ` Jack Steiner
2008-01-30  0:35                     ` Christoph Lameter
2008-01-30  0:35                       ` Christoph Lameter
2008-01-30  0:35                       ` Christoph Lameter
2008-01-30 13:37                     ` Andrea Arcangeli
2008-01-30 13:37                       ` Andrea Arcangeli
2008-01-30 13:37                       ` Andrea Arcangeli
2008-01-30 14:43                       ` Jack Steiner
2008-01-30 14:43                         ` Jack Steiner
2008-01-30 14:43                         ` Jack Steiner
2008-01-30 19:41                         ` Christoph Lameter
2008-01-30 19:41                           ` Christoph Lameter
2008-01-30 19:41                           ` Christoph Lameter
2008-01-30 20:29                           ` Jack Steiner
2008-01-30 20:29                             ` Jack Steiner
2008-01-30 20:29                             ` Jack Steiner
2008-01-30 20:55                             ` Christoph Lameter
2008-01-30 20:55                               ` Christoph Lameter
2008-01-30 20:55                               ` Christoph Lameter
2008-01-30 16:11                 ` Robin Holt
2008-01-30 16:11                   ` Robin Holt
2008-01-30 16:11                   ` Robin Holt
2008-01-30 17:04                   ` Andrea Arcangeli
2008-01-30 17:04                     ` Andrea Arcangeli
2008-01-30 17:04                     ` Andrea Arcangeli
2008-01-30 17:30                     ` Robin Holt
2008-01-30 17:30                       ` Robin Holt
2008-01-30 17:30                       ` Robin Holt
2008-01-30 18:25                       ` Andrea Arcangeli
2008-01-30 18:25                         ` Andrea Arcangeli
2008-01-30 18:25                         ` Andrea Arcangeli
2008-01-30 19:50                         ` Christoph Lameter
2008-01-30 19:50                           ` Christoph Lameter
2008-01-30 19:50                           ` Christoph Lameter
2008-01-30 22:18                           ` Robin Holt
2008-01-30 22:18                             ` Robin Holt
2008-01-30 22:18                             ` Robin Holt
2008-01-30 23:52                           ` Andrea Arcangeli
2008-01-30 23:52                             ` Andrea Arcangeli
2008-01-31  0:01                             ` Christoph Lameter
2008-01-31  0:01                               ` Christoph Lameter
2008-01-31  0:01                               ` Christoph Lameter
     [not found]                               ` <Pine.LNX.4.64.0801301555550.1722-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-31  0:34                                 ` Andrea Arcangeli
     [not found]                                   ` <20080131003434.GE7185-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-31  1:46                                     ` Christoph Lameter
     [not found]                                       ` <Pine.LNX.4.64.0801301728110.2454-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-31  2:34                                         ` Robin Holt
     [not found]                                           ` <20080131023401.GY26420-sJ/iWh9BUns@public.gmane.org>
2008-01-31  2:37                                             ` Christoph Lameter
2008-01-31 10:52                                         ` Andrea Arcangeli
2008-01-31  2:08                                     ` Christoph Lameter
     [not found]                                       ` <Pine.LNX.4.64.0801301805200.14071-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-31  2:42                                         ` Andrea Arcangeli
     [not found]                                           ` <20080131024252.GF7185-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-31  2:51                                             ` Christoph Lameter
     [not found]                                               ` <Pine.LNX.4.64.0801301848550.14263-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-31 13:39                                                 ` Andrea Arcangeli
2008-01-30 19:35                   ` Christoph Lameter
2008-01-30 19:35                     ` Christoph Lameter
2008-01-30 19:35                     ` Christoph Lameter

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=20080208220656.073652142@sgi.com \
    --to=clameter@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrea@qumranet.com \
    --cc=holt@sgi.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.