[PATCH][v3] powerpc 44x: support for 256KB PAGE_SIZE

Josh Boyer jwboyer at linux.vnet.ibm.com
Mon Jan 12 11:53:42 EST 2009


On Sun, Jan 11, 2009 at 09:42:30PM +0300, Yuri Tikhonov wrote:
>
>This patch adds support for 256KB pages on ppc44x-based boards.
>
>For simplification of implementation with 256KB pages we still assume
>2-level paging. As a side effect this leads to wasting extra memory space
>reserved for PTE tables: only 1/4 of pages allocated for PTEs are
>actually used. But this may be an acceptable trade-off to achieve the
>high performance we have with big PAGE_SIZEs in some applications (e.g.
>RAID).
>
>Also with 256KB PAGE_SIZE we increase THREAD_SIZE up to 32KB to minimize
>the risk of stack overflows in the cases of on-stack arrays, which size
>depends on the page size (e.g. multipage BIOs, NTFS, etc.).
>
>With 256KB PAGE_SIZE we need to decrease the PKMAP_ORDER at least down
>to 9, otherwise all high memory (2 ^ 10 * PAGE_SIZE == 256MB) we'll be
>occupied by PKMAP addresses leaving no place for vmalloc. We do not
>separate PKMAP_ORDER for 256K from 16K/64K PAGE_SIZE here; actually that
>value of 10 in support for 16K/64K had been selected rather intuitively.
>Thus now for all cases of PAGE_SIZE on ppc44x (including the default, 4KB,
>one) we have 512 pages for PKMAP.
>
>Because ELF standard supports only page sizes up to 64K, then you should
>use binutils later than 2.17.50.0.3 with '-zmax-page-size' set to 256K
>for building applications, which are to be run with the 256KB-page sized
>kernel. If using the older binutils, then you should patch them like follows:
>
>--- binutils/bfd/elf32-ppc.c.orig
>+++ binutils/bfd/elf32-ppc.c
>
>-#define ELF_MAXPAGESIZE		0x10000
>+#define ELF_MAXPAGESIZE		0x40000
>
>Signed-off-by: Yuri Tikhonov <yur at emcraft.com>
>Signed-off-by: Ilya Yanok <yanok at emcraft.com>

Thanks.  I particularly like the additional option you have to disable
before 256K pages is an option.  I'll do a bit of testing, and barring
any unforeseen problems, I'll queue this up for 2.6.30.

josh



More information about the Linuxppc-dev mailing list