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

Ilya Yanok yanok at emcraft.com
Fri Sep 12 08:44:18 EST 2008


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.




More information about the Linuxppc-dev mailing list