using different format for hugetlbfs

Kumar Gala galak at kernel.crashing.org
Sun Dec 6 14:05:01 EST 2009


On Dec 4, 2009, at 3:25 PM, Benjamin Herrenschmidt wrote:

> On Fri, 2009-12-04 at 08:09 -0600, Kumar Gala wrote:
>> 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).
>
> Yes. The intermediary levels are smaller on 64-bit. Also, with  
> hugetlbfs
> it can create special levels of various sizes depending on the
> requirements to fit a given huge page size. And that would be true of
> both 32 and 64-bit in fact.

Even than, does that preclude the format I suggested?  I'm assuming  
that pgd_t/pud_t/pmd_t are always a double word so the low order 4- 
bits should be 0 (on 64-bit), so using the lsb as the flag between  
hugetlb and normal pointer should still work.

- k


More information about the Linuxppc-dev mailing list