From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755814Ab1CGRwL (ORCPT ); Mon, 7 Mar 2011 12:52:11 -0500 Received: from casper.infradead.org ([85.118.1.10]:56359 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755351Ab1CGRtK (ORCPT ); Mon, 7 Mar 2011 12:49:10 -0500 Message-Id: <20110307172206.557810970@chello.nl> User-Agent: quilt/0.48-1 Date: Mon, 07 Mar 2011 18:13:51 +0100 From: Peter Zijlstra To: Thomas Gleixner , Rik van Riel , Ingo Molnar , akpm@linux-foundation.org, Linus Torvalds Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, Benjamin Herrenschmidt , David Miller , Hugh Dickins , Mel Gorman , Nick Piggin , Peter Zijlstra , Russell King , Chris Metcalf , Martin Schwidefsky Subject: [RFC][PATCH 01/15] mm, powerpc: Dont use tlb_flush for external tlb flushes References: <20110307171350.989666626@chello.nl> Content-Disposition: inline; filename=powerpc64-tlb_flush.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Both sparc64 and powerpc64 use tlb_flush() to flush their respective hash-tables which is entirely different from what flush_tlb_range()/flush_tlb_mm() would do. Powerpc64 already uses arch_*_lazy_mmu_mode() to batch and flush these so any tlb_flush() caller should already find an empty batch. So remove this functionality from tlb_flush(). Cc: Benjamin Herrenschmidt Signed-off-by: Peter Zijlstra --- arch/powerpc/mm/tlb_hash64.c | 10 ---------- arch/sparc/include/asm/tlb_64.h | 2 +- arch/sparc/include/asm/tlbflush_64.h | 13 +++++++++++++ 3 files changed, 14 insertions(+), 11 deletions(-) Index: linux-2.6/arch/powerpc/mm/tlb_hash64.c =================================================================== --- linux-2.6.orig/arch/powerpc/mm/tlb_hash64.c +++ linux-2.6/arch/powerpc/mm/tlb_hash64.c @@ -155,16 +155,6 @@ void __flush_tlb_pending(struct ppc64_tl 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); - - put_cpu_var(ppc64_tlb_batch); } /**