Re[2]: [PATCH] powerpc: add support for PAGE_SIZEs greater than 4KB for
flat view
From: Yuri Tikhonov <hidden>
Date: 2008-09-11 23:52:50
=0D=0AHi Ilya, On Friday, September 12, 2008 you wrote:
Hi,
prodyut hazarika wrote:quoted
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);
quoted
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 ...
quoted
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)
quoted
/* 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