[PATCH] powerpc: add support for PAGE_SIZEs greater than 4KB for

Yuri Tikhonov yur at emcraft.com
Fri Sep 12 09:52:38 EST 2008


Hi Ilya,

On Friday, September 12, 2008 you wrote:

> Hi,

> prodyut hazarika wrote:
>> In file arch/powerpc/mm/pgtable_32.c, we have:
>>
>> #ifdef CONFIG_PTE_64BIT
>> /* 44x uses an 8kB pgdir because it has 8-byte Linux PTEs. */
>> #define PGDIR_ORDER     1
>> #else
>> #define PGDIR_ORDER     0
>> #endif
>> pgd_t *pgd_alloc(struct mm_struct *mm)
>> {
>>         pgd_t *ret;
>>
>>         ret = (pgd_t *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, PGDIR_ORDER);
>>         return ret;
>> }
>>
>> Thus, we allocate 2 pages for 44x processors for PGD. This is needed
>> only for 4K page.
>> We are anyway not using the whole 64K or 256K page for the PGD. So
>> there is no point to waste an additional 64K or 256KB page
>>   

> Ok. Not sure I'm right but I think 16K case doesn't need second page 
> too. (PGDIR_SHIFT=25, so sizeof(pgd_t)<<(32-PGDIR_SHIFT) < 16KB)

 ACK, no need need in a second page when working with 16K pages.
Prodyut's approach addresses this too, but ...

>> Change this to:
>> #ifdef CONFIG_PTE_64BIT
>> #if (PAGE_SHIFT == 12)
>>   

> I think #ifdef CONFIG_PTE_64BIT is a little bit confusing here...  
> Actually PGDIR_ORDER  should be something like max(32 + 2 - PGDIR_SHIFT
> - PAGE_SHIFT, 0)

>> /* 44x uses an 8kB pgdir because it has 8-byte Linux PTEs. */
>> #define PGDIR_ORDER     1
>> #else
>> #define PGDIR_ORDER     0
>> #endif
>> #else
>> #define PGDIR_ORDER     0
>> #endif
>>   

> Yuri, any comments?

 ... as for me, I like your approach more.

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com




More information about the Linuxppc-dev mailing list