From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29806 invoked by alias); 26 Oct 2007 01:47:10 -0000 Received: (qmail 29796 invoked by uid 22791); 26 Oct 2007 01:47:09 -0000 X-Spam-Check-By: sourceware.org Received: from gate.crashing.org (HELO gate.crashing.org) (63.228.1.57) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 26 Oct 2007 01:47:08 +0000 Received: from [127.0.0.1] (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.13.8/8.13.8) with ESMTP id l9Q1kiHM001265; Thu, 25 Oct 2007 20:46:45 -0500 Subject: Re: Apparent kernel bug with GDB on ppc405 From: Benjamin Herrenschmidt Reply-To: benh@kernel.crashing.org To: Matt Mackall Cc: linuxppc-embedded@ozlabs.org, gdb@sourceware.org In-Reply-To: <20071024194640.GB19691@waste.org> References: <20071024194640.GB19691@waste.org> Content-Type: text/plain Date: Fri, 26 Oct 2007 01:47:00 -0000 Message-Id: <1193363202.7018.36.camel@pasglop> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-10/txt/msg00250.txt.bz2 On Wed, 2007-10-24 at 14:46 -0500, Matt Mackall wrote: > > My first suspicion was a dcache/icache coherency issue in > copy_to_user_page, so I added flush_dcache_icache_page(page) here to > no avail. On closer inspection, it looks like both icache and dcache > are already being flushed by flush_icache_user_range(). > > Adding printk(".") (or any printk) in this function here fixes things > (serial console at 115k), while printk("") and udelay(100) do not. > Which still suggests an icache bug..? > > Any suggestions? I think you're hitting a known bug of 44x support. Those CPUs have a crazy virtually tagged icache and the kernel doesn't deal with it at all (pretty much...). We just are lucky things generally work :-) That means among other things that flush_icache_* will not work because they kmap pages and use that mapping. The only way to flush icache user pages with 44x is to actually flush with the user virtual address (meaning you have to be in the current context, and you probably need to have a TLB entry there... yuck)... or just blow the whole icache away. Try sticking an iccci in there and let me know if that helps. Ben