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

From: Yuri Tikhonov <[email-masked]>
Date: Fri, 12 Sep 2008 03:52:38 +0400

=0D=0AHi 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 =3D (pgd_t *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, PGDIR_O=
RDER);
>>         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
>>  =20

> Ok. Not sure I'm right but I think 16K case doesn't need second page=20
> too. (PGDIR_SHIFT=3D25, 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 =3D=3D 12)
>>  =20

> I think #ifdef CONFIG_PTE_64BIT is a little bit confusing here... =20
> 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
>>  =20

> Yuri, any comments?

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

 Regards, Yuri

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