All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch -mm] smaps: flush tlb only once for each vma
@ 2007-02-14  4:29 David Rientjes
  0 siblings, 0 replies; only message in thread
From: David Rientjes @ 2007-02-14  4:29 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Paul Mundt, Christoph Lameter, linux-kernel

Flush the entire user address space from the TLB for each VMA in the 
task_struct list when clearing reference bits with /proc/pid/clear_refs.  
It's more efficient than flushing each page individually depending on 
pte_young().

Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 fs/proc/task_mmu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -276,7 +276,6 @@ static void clear_refs_one_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 		if (pte_young(ptent)) {
 			ptent = pte_mkold(ptent);
 			set_pte_at(vma->vm_mm, addr, pte, ptent);
-			flush_tlb_page(vma, addr);
 		}
 		ClearPageReferenced(page);
 	}
@@ -358,6 +357,7 @@ void clear_refs_smap(struct mm_struct *mm)
 	for (vma = mm->mmap; vma; vma = vma->vm_next)
 		if (vma->vm_mm && !is_vm_hugetlb_page(vma))
 			for_each_pmd(vma, clear_refs_one_pmd, NULL);
+	flush_tlb_mm(mm);
 	up_read(&mm->mmap_sem);
 }
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-02-14  4:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-14  4:29 [patch -mm] smaps: flush tlb only once for each vma David Rientjes

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.