[PATCH] Check _PAGE_RW and _PAGE_PRESENT on kernel addresses.
Scott Wood
scottwood at freescale.com
Wed Aug 22 14:22:16 EST 2007
On Wed, Aug 22, 2007 at 01:52:49PM +1000, Paul Mackerras wrote:
> Scott Wood writes:
>
> > Previously, the TLB miss handlers assumed that pages above KERNELBASE are
> > always present and read/write. This assumption is false in the case of
> > CONFIG_DEBUG_PAGEALLOC.
>
> > blt+ 112f
> > + mfspr r2,SPRN_SRR1 /* and MSR_PR bit from SRR1 */
> > + rlwinm r1,r2,32-12,29,29 /* shift MSR_PR to _PAGE_USER posn */
> > lis r2,swapper_pg_dir at ha /* if kernel address, use */
> > addi r2,r2,swapper_pg_dir at l /* kernel page table */
> > - mfspr r1,SPRN_SRR1 /* and MSR_PR bit from SRR1 */
> > - rlwinm r1,r1,32-12,29,29 /* shift MSR_PR to _PAGE_USER posn */
>
> I don't see that just moving those two lines up changes anything. If
> you turned the rlwinm into an rlwimi (as you did in the DataStoreTLBMiss
> case) then it might make more sense. Is this just an oversight?
Sorry, rlwimi was what I meant...
The data store path was what I found the problem and tested with, the
others were an apparently botched replication to the other handlers.
-Scott
More information about the Linuxppc-dev
mailing list