Subject: Re: [PATCH] Re: [405EX] Bad page map in process ...

From: Benjamin Herrenschmidt <[email-masked]>
Date: Tue, 22 Sep 2009 20:13:46 +1000

On Tue, 2009-09-22 at 20:07 +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2009-09-22 at 11:29 +0200, Weirich, Bernhard wrote:
> > Hello,
> > 
> > I found the cause of the problem.
> > My architecture does not define the _PAGE_SPECIAL macro, thus in pte-common.h line 32, it is defined as 0
> > And then in line 180, since _PAGE_SPECIAL is defined, the macro __HAVE_ARCH_PTE_SPECIAL is erroneously defined.
> > This makes any ppc architecture to act as if it has a pte special bit!
> > I suggest the following simple patch to fix this.
> 
> Thank ! That looks indeed like a bug.
> 
> Note that with 2.6.32, we should be able to use 0x20 as _PAGE_SPECIAL on
> 40x which would improve performances in some areas.

I had a quick look at it seems like 2.6.30 also has that bit free. In
fact, 8xx also appears to have a few bits free.

Maybe we should just define _PAGE_SPECIAL for all the "missing"
processor types (I think that's really the only 2 ones) and remove
the condition around  #define __HAVE_ARCH_PTE_SPECIAL

Care to send a patch ? :-)

Cheers,
Ben.

> Cheers,
> Ben.
> 
> > Bernhard WEIRICH
> > Software Development
> > 
> > 
> > Signed-off-by: Bernhard Weirich <[email-masked]>
> > --- linux/arch/powerpc/include/asm/pte-common.h	2009-09-16 11:23:44.000000000 +0200
> > +++ linux/arch/powerpc/include/asm/pte-common.h	2009-09-22 11:13:08.000000000 +0200
> > @@ -176,7 +176,7 @@
> >  #define HAVE_PAGE_AGP
> >  
> >  /* Advertise support for _PAGE_SPECIAL */
> > -#ifdef _PAGE_SPECIAL
> > +#if _PAGE_SPECIAL != 0
> >  #define __HAVE_ARCH_PTE_SPECIAL
> >  #endif
> >  
> > _______________________________________________
> > Linuxppc-dev mailing list
> > [email-masked]
> > https://lists.ozlabs.org/listinfo/linuxppc-dev