lkml.org 
[lkml]   [2011]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH 00/17] mm: mmu_gather rework
From
Date
On Thu, 2011-02-17 at 17:23 +0100, Peter Zijlstra wrote:
> s390 wants a bit more, but more on that in another email.

So what s390 wants is something like the below, where a fullmm gather
flushes a-priory and then simply gathers and frees the pages.

I can't see why something like this shouldn't work on x86 and power (the
only two archs I really looked in depth at), but it certainly is
something that needs a close look.

---
Index: linux-2.6/include/asm-generic/tlb.h
===================================================================
--- linux-2.6.orig/include/asm-generic/tlb.h
+++ linux-2.6/include/asm-generic/tlb.h
@@ -145,7 +145,10 @@ tlb_gather_mmu(struct mmu_gather *tlb, s
tlb->need_flush = 0;
if (num_online_cpus() == 1)
tlb->fast_mode = 1;
+
tlb->fullmm = full_mm_flush;
+ if (tlb->fullmm)
+ tlb_flush(tlb);

tlb->local.next = NULL;
tlb->local.nr = 0;
@@ -162,13 +165,15 @@ tlb_flush_mmu(struct mmu_gather *tlb)
{
struct mmu_gather_batch *batch;

- if (!tlb->need_flush)
- return;
- tlb->need_flush = 0;
- tlb_flush(tlb);
+ if (tlb->need_flush && !tlb->fullmm) {
+ tlb_flush(tlb);
+ tlb->need_flush = 0;
+ }
+
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
tlb_table_flush(tlb);
#endif
+
if (tlb_fast_mode(tlb))
return;



\
 
 \ /
  Last update: 2011-02-17 18:45    [W:0.414 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site