[PATCH] powerpc/mm: Fix _PAGE_COHERENT support on classic ppc32 HW

Martyn Welch martyn.welch at gefanuc.com
Mon Feb 16 21:10:45 EST 2009


Kumar Gala wrote:
> The following commit:
> 
> commit 64b3d0e8122b422e879b23d42f9e0e8efbbf9744
> Author: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Date:   Thu Dec 18 19:13:51 2008 +0000
> 
>     powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED
> 
> broke setting of the _PAGE_COHERENT bit in the PPC HW PTE.  Since we now
> actually set _PAGE_COHERENT in the Linux PTE we shouldn't be clearing it
> out before we propogate it to the PPC HW PTE.
> 
> Reported-by: Martyn Welch <martyn.welch at gefanuc.com>
> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
> ---
>  arch/powerpc/mm/hash_low_32.S |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S
> index 67850ec..14af8ce 100644
> --- a/arch/powerpc/mm/hash_low_32.S
> +++ b/arch/powerpc/mm/hash_low_32.S
> @@ -320,7 +320,7 @@ _GLOBAL(create_hpte)
>  	and	r8,r8,r0		/* writable if _RW & _DIRTY */
>  	rlwimi	r5,r5,32-1,30,30	/* _PAGE_USER -> PP msb */
>  	rlwimi	r5,r5,32-2,31,31	/* _PAGE_USER -> PP lsb */
> -	ori	r8,r8,0xe14		/* clear out reserved bits and M */
> +	ori	r8,r8,0xe04		/* clear out reserved bits */
>  	andc	r8,r5,r8		/* PP = user? (rw&dirty? 2: 3): 0 */
>  BEGIN_FTR_SECTION
>  	rlwinm	r8,r8,0,~_PAGE_COHERENT	/* clear M (coherence not required) */

This does indeed resolve the problem I was having.

Sorry for not replying sooner - bad weather here in the UK unexpectedly extended a planned holiday.

Thank you for resolving this issue,

Martyn

-- 
Martyn Welch MEng MPhil MIET (Principal Software Engineer)   T:+44(0)1327322748
GE Fanuc Intelligent Platforms Ltd,        |Registered in England and Wales
Tove Valley Business Park, Towcester,      |(3828642) at 100 Barbirolli Square,
Northants, NN12 6PF, UK T:+44(0)1327359444 |Manchester,M2 3AB  VAT:GB 729849476



More information about the Linuxppc-dev mailing list