Re: [PATCH] x86: set PAE PHYSICAL_MASK_SHIFT to match 64-bit

Jan Beulich
2008-06-06T07:14:19Z

>>> Andi Kleen <andi@firstfloor.org> 06.06.08 03:40 >>>
>Jeremy Fitzhardinge <jeremy@goop.org> writes:
>>
>> The 46-bit mask used in 64-bit seems pretty arbitrary.
>
>The rationale for the 46 bits is that the kernel needs roughly 4x as
>much virtual space as physical space and the virtual space is limited
>to 48bits.
>
>To be exact 47 bits is always user space and the 47 bits remaining
>for the kernel are split into half, with one half for the direct mapping
>and the other half for random mappings. With some pushing you could
>extend it to 46.5 bits or so, but beyond that you'll be in trouble.
>
>It's not arbitrary at all.

That is only half of it. Since PHYSICAL_MASK also controls other than
RAM mappings, there's really two constants that are needed here:
One (46) to indicate how large the 1:1 mapping can possibly get (and
hence what the upper boundary of usable RAM is - without introducing
highmem), and another (52) to indicate how wide a physical address
(perhaps from a 64-bit PCI BAR) can possibly be (i.e. used to validate
physical addresses / page table entries).

Jan