Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264164AbUFFVpN (ORCPT ); Sun, 6 Jun 2004 17:45:13 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264170AbUFFVpN (ORCPT ); Sun, 6 Jun 2004 17:45:13 -0400 Received: from gate.crashing.org ([63.228.1.57]:53890 "EHLO gate.crashing.org") by vger.kernel.org with ESMTP id S264164AbUFFVpE (ORCPT ); Sun, 6 Jun 2004 17:45:04 -0400 Subject: Re: [PATCH] (urgent) ppc32: Fix CPUs with soft loaded TLB From: Benjamin Herrenschmidt To: Linus Torvalds Cc: Andrew Morton , Linux Kernel list In-Reply-To: References: <1086556255.1859.14.camel@gaston> Content-Type: text/plain Message-Id: <1086558161.10538.24.camel@gaston> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 06 Jun 2004 16:42:42 -0500 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2178 Lines: 56 On Sun, 2004-06-06 at 16:20, Linus Torvalds wrote: > On Sun, 6 Jun 2004, Benjamin Herrenschmidt wrote: > > > > The recent introduction of ptep_set_access_flags() with the optimisation > > of not flushing the TLB unfortunately broke ppc32 CPUs with no hash table. > > Makes sense, applied. ARGH. Missed one file. Here is an additional patch (missed tlbflush.h patch) Sorry. This adds the definiction of flush_tlb_page_nohash() that was missing from the previous patch fixing SW-TLB loaded PPCs Signed-off-by: Benjamin Herrenschmidt ===== include/asm-ppc/tlbflush.h 1.9 vs edited ===== --- 1.9/include/asm-ppc/tlbflush.h 2003-09-15 15:59:05 -05:00 +++ edited/include/asm-ppc/tlbflush.h 2004-06-06 16:01:50 -05:00 @@ -29,6 +29,9 @@ static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr) { _tlbie(vmaddr); } +static inline void flush_tlb_page_nohash(struct vm_area_struct *vma, + unsigned long vmaddr) + { _tlbie(vmaddr); } static inline void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { __tlbia(); } @@ -44,6 +47,9 @@ static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr) { _tlbie(vmaddr); } +static inline void flush_tlb_page_nohash(struct vm_area_struct *vma, + unsigned long vmaddr) + { _tlbie(vmaddr); } static inline void flush_tlb_range(struct mm_struct *mm, unsigned long start, unsigned long end) { __tlbia(); } @@ -56,6 +62,7 @@ struct vm_area_struct; extern void flush_tlb_mm(struct mm_struct *mm); extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); +extern void flush_tlb_page_nohash(struct vm_area_struct *vma, unsigned long addr); extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/