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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev