From dc9e565801c7211204a090e162b3f75a07e1c3dd Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Sun, 27 May 2007 15:18:22 +1000 Subject: [PATCH] --- yaml --- r: 57288 b: refs/heads/master c: 6ad8d010b2f364b739020e514e61b6a73444464b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/asm-powerpc/tlb.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d20ac16090f4..122793034641 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 988519acb3dbe7168276a36cbb8fd91fddbffaee +refs/heads/master: 6ad8d010b2f364b739020e514e61b6a73444464b diff --git a/trunk/include/asm-powerpc/tlb.h b/trunk/include/asm-powerpc/tlb.h index 0a17682663d8..66714042e438 100644 --- a/trunk/include/asm-powerpc/tlb.h +++ b/trunk/include/asm-powerpc/tlb.h @@ -38,6 +38,15 @@ extern void pte_free_finish(void); static inline void tlb_flush(struct mmu_gather *tlb) { + struct ppc64_tlb_batch *tlbbatch = &__get_cpu_var(ppc64_tlb_batch); + + /* If there's a TLB batch pending, then we must flush it because the + * pages are going to be freed and we really don't want to have a CPU + * access a freed page because it has a stale TLB + */ + if (tlbbatch->index) + __flush_tlb_pending(tlbbatch); + pte_free_finish(); }