[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