Messages in this thread | | | Date | Fri, 06 Jun 2008 08:14:45 +0100 | From | "Jan Beulich" <> | Subject | Re: [PATCH] x86: set PAE PHYSICAL_MASK_SHIFT to match 64-bit |
| |
>>> 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
| |