Re: Linux 2.6.26-rc1 - pgtable_32.c:178 pmd_bad

From: Hugh Dickins
Date: Tue May 06 2008 - 12:13:47 EST


On Tue, 6 May 2008, Jeremy Fitzhardinge wrote:
> Linus Torvalds wrote:
> > You should have used a pagetable-specific macro, becuse PAGE_MASK is simply
> > fundamentally WRONG, and has absolutely nothing to do with the PFN bits,
> > whether sign-extended or not!
> >
> > The fact is, the page frane number bits are *not* ~PAGE_MASK or anything
> > like that. They share only the low bits - not the high bits.
>
> Yes. There's already a PTE_MASK for masking out the PFN vs the flags in a
> pte, but it isn't used consistently (perhaps at all).

My patch sidesteps this issue by simply restoring most things to how
they were in 2.6.25 (using PTE_MASK in x86_64 but PAGE_MASK in x86_32).
We've contentedly used PAGE_MASK there for many many years.

Seeing the PTE_MASK discussion I did briefly consider using PTE_MASK
at the x86_32 end (it would have the nice effect of testing for lots
of badly set bits it the upper PAE half?), but I wasn't sure it has
the right type at present (there seems to be a "long" type in there
which I'd have expected to need to be long long for PAE), and it was
all even more of a maze than the last time I looked.

I decided it's safer to go back to what we had before to fix the
current warning, together with the original point which got us
into this, and leave any PTE_MASK-ification to some other patch.

I've more to say on it when commenting the patch.

Hugh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/