android_kernel_motorola_sm6225/arch/powerpc
Paul Mackerras bf72aeba2f powerpc: Use 64k pages without needing cache-inhibited large pages
Some POWER5+ machines can do 64k hardware pages for normal memory but
not for cache-inhibited pages.  This patch lets us use 64k hardware
pages for most user processes on such machines (assuming the kernel
has been configured with CONFIG_PPC_64K_PAGES=y).  User processes
start out using 64k pages and get switched to 4k pages if they use any
non-cacheable mappings.

With this, we use 64k pages for the vmalloc region and 4k pages for
the imalloc region.  If anything creates a non-cacheable mapping in
the vmalloc region, the vmalloc region will get switched to 4k pages.
I don't know of any driver other than the DRM that would do this,
though, and these machines don't have AGP.

When a region gets switched from 64k pages to 4k pages, we do not have
to clear out all the 64k HPTEs from the hash table immediately.  We
use the _PAGE_COMBO bit in the Linux PTE to indicate whether the page
was hashed in as a 64k page or a set of 4k pages.  If hash_page is
trying to insert a 4k page for a Linux PTE and it sees that it has
already been inserted as a 64k page, it first invalidates the 64k HPTE
before inserting the 4k HPTE.  The hash invalidation routines also use
the _PAGE_COMBO bit, to determine whether to look for a 64k HPTE or a
set of 4k HPTEs to remove.  With those two changes, we can tolerate a
mix of 4k and 64k HPTEs in the hash table, and they will all get
removed when the address space is torn down.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-06-15 10:45:18 +10:00
..
boot Merge ../linux-2.6 2006-03-17 12:01:19 +11:00
configs Merge branch 'merge' 2006-04-29 16:15:57 +10:00
kernel powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
lib [PATCH] remove powerpc bitops in favor of existing generic bitops 2006-05-24 16:08:58 +10:00
math-emu powerpc: move math-emu over to arch/powerpc 2006-03-27 23:43:27 -06:00
mm powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
oprofile [PATCH] powerpc: oprofile support for POWER6 2006-06-09 21:24:05 +10:00
platforms Merge branch 'merge' 2006-06-12 17:53:34 +10:00
sysdev [PATCH] powerpc: Lower threshold for DART enablement to 1GB 2006-04-21 22:29:37 +10:00
xmon [PATCH] powerpc: add a raw dump command to xmon 2006-03-17 13:22:33 +11:00
Kconfig [PATCH] powerpc kbuild warning fix 2006-06-09 21:21:05 +10:00
Kconfig.debug [PATCH] powerpc: Make early debugging options behave with oldconfig 2006-05-19 14:35:23 +10:00
Makefile [PATCH] powerpc32: Set cpu explicitly in kernel compiles 2006-04-13 09:38:33 -07:00