Thread (25 messages) 25 messages, 6 authors, 2008-09-29

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help