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