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

From: Jan Beulich
Date: Fri Jun 06 2008 - 03:14:20 EST


>>> Andi Kleen <andi@xxxxxxxxxxxxxx> 06.06.08 03:40 >>>
>Jeremy Fitzhardinge <jeremy@xxxxxxxx> 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

--
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/