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

From: Ilya Yanok <[email-masked]>
Date: Fri, 12 Sep 2008 02:44:18 +0400

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)

> 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?

Regards, Ilya.