Re: [PATCH 00/17] mm: mmu_gather rework

From: Peter Zijlstra
Date: Thu Feb 17 2011 - 12:43:15 EST


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;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/