mapping memory in 0xb space

David Gibson david at gibson.dropbear.id.au
Thu Oct 7 11:01:54 EST 2004


On Tue, Oct 05, 2004 at 12:45:47PM -0500, Igor Grobman wrote:
> One more followup on this issue, since I do have the base code working
> now.  The problem was in the fact that do_slb_bolted code sets the large
> page bit in the SLB entry, but my code (and particularly hpte_insert code)
> did not insert a proper large page mapping.
> 
> 
> On Fri, 1 Oct 2004, David Gibson wrote:
> > On Wed, Sep 29, 2004 at 12:14:08AM -0500, Igor Grobman wrote:
> > > On Wed, 29 Sep 2004, David Gibson wrote:
> > >
> > > > On Tue, Sep 28, 2004 at 01:52:16PM -0500, Igor Grobman wrote:
> > > > > On Tue, 28 Sep 2004, David Gibson wrote:
> > > As for why I thought 0xbff would work,  I reasoned that
> > > since the highest bits are masked out in get_kernel_vsid(), and since
> > > nobody else is using the 0xb region, it doesn't matter if I get a VSID
> > > that is the same as some other VSID in 0xb region.  However, I did not
> > > consider the bug in do_slb_bolted that you describe below.
> >
> > Yes, with that bug the collision can be with a segment anywhere, not
> > just in the 0xb region.
> >
> 
> I am not convinced anymore.  The lower 36 bits of the ordinal are still
> the same in do_slb_bolted and get_kernel_vsid.  Multiplying the ordinal
> by the 36-bit randomizer should produce the same lower 36 bits whether or
> not the upper bits are different.  do_slb_bolted eventually clears the
> upper 28 bits, before using the VSID.  I no longer think there can be
> a conflict outside the 0xb region.  Is my reasoning correct?

Ah, yes, I think it is.  Sorry, I guess I wasn't thinking very clearly
when I decided the collisions could be anywhere.

-- 
David Gibson			| For every complex problem there is a
david AT gibson.dropbear.id.au	| solution which is simple, neat and
				| wrong.
http://www.ozlabs.org/people/dgibson



More information about the Linuxppc64-dev mailing list