On Dec 4, 2009, at 2:58 AM, Benjamin Herrenschmidt wrote:

On Fri, 2009-12-04 at 01:18 -0600, Kumar Gala wrote:
Ben, David,

If we want to support true 4G/4G split on ppc32 using the MSB of the
address to determine of the pgd_t is for hugetlbfs isn't going to
work.  Since every pointer in the pgd_t -> pud_t -> pmd_t is point to
at least a 4K page I would think the low order 12-bits should always
be 0.

On 32 bit maybe. On 64, the pg/u/md's can be smaller. I don't really
want to have a different encoding for both types though.

What do you mean they can be smaller? We have some scenario when we dont allocate a full page? I agree having the encodings be different would be bad. I'm trying to avoid having it be different between 32 bit and 64 (but maybe that will be impossible).

Could we use something like:

addr[0:51] || shift [52:59] || flags [60:63]

with the LSB flag being 'normal pointer' vs 'hugetlbfs mangled
pointer'.  Seems like shift will at most be 64 so 8-bits should cover
it.

Cheers,
Ben.


- k
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to