[Top] [All Lists]

Re: HIGHMEM fix for r24k

To: Jon Fraser <>
Subject: Re: HIGHMEM fix for r24k
From: David VomLehn <>
Date: Thu, 23 Apr 2009 18:17:54 -0700
Authentication-results: sj-dkim-2;; dkim=pass ( sig from verified; );
Cc: "" <>
Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; l=1237; t=1240535880; x=1241399880; c=relaxed/simple; s=sjdkim2002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version;;; z=From:=20David=20VomLehn=20<> |Subject:=20Re=3A=20HIGHMEM=20fix=20for=20r24k |Sender:=20; bh=ZlJBXiFpLeNiGJsT4mAV7ZeNuHxvNCRcmEQkWoKCYqk=; b=ufmst877XXHotDmrwU1cZvP7ocGwZm05Fr5kVg4UsbG7R5n3KbpwrEO+aI TOsIi7c8BcyL0rceEBeDvT1HXuieE5qzcEj7trfYKrC/Zs3GXD2UlKkEJWUy 1uDXzIZF5E;
In-reply-to: <>
Original-recipient: rfc822;
References: <>
User-agent: Mutt/1.5.18 (2008-05-17)
On Thu, Apr 23, 2009 at 06:23:44PM -0400, Jon Fraser wrote:
> For all you guys working on HIGMEM.
> I found a bug that was keeping HIGHMEM from working on mips 24k
> processors starting at 2.6.26.  
> 2008-04-28 Chris Dearman [MIPS] Allow setting of the cache attribute at
> run ...
> This commit introduces the variable _page_cachable_default, which
> defaults to zero.
> arch/mips/mm/cache.c:
>       unsigned long _page_cachable_default;
> The variable is used to create the prototype PTE for __kmap_atomic in
> arch/mips/mm/init.c:kmap_init.
> The variable is initialized in arch/mips/mm/c-r4k.c:coherency_setup.
> Unfortunately, the variable is used before it is initialized properly.
> As a result, all kmap_atomic PTE have the cache coherency algorithm mode set 
> to 0.  
> Mode 0 is "cacheable, nocoherent, write-through, no write allocate".
> This is not valid on my r24k and my not be on any r24k.
> The result is that writes to kmap_atomic pages get corrupted.  This was 
> confirmed
> using a jtag probe, examining uncached memory, the D cache itself, and cached 
> memory.

Ouch, sounds like a nasty bit of work finding this...thanks!

> Jon Fraser
> Broadcom

David VomLehn

<Prev in Thread] Current Thread [Next in Thread>