linux/arch/sparc
David Miller 9e695d2ecc sparc64: Support transparent huge pages.
This is relatively easy since PMD's now cover exactly 4MB of memory.

Our PMD entries are 32-bits each, so we use a special encoding.  The
lowest bit, PMD_ISHUGE, determines the interpretation.  This is possible
because sparc64's page tables are purely software entities so we can use
whatever encoding scheme we want.  We just have to make the TLB miss
assembler page table walkers aware of the layout.

set_pmd_at() works much like set_pte_at() but it has to operate in two
page from a table of non-huge PTEs, so we have to queue up TLB flushes
based upon what mappings are valid in the PTE table.  In the second regime
we are going from huge-page to non-huge-page, and in that case we need
only queue up a single TLB flush to push out the huge page mapping.

We still have 5 bits remaining in the huge PMD encoding so we can very
likely support any new pieces of THP state tracking that might get added
in the future.

With lots of help from Johannes Weiner.

Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-10-09 16:23:06 +09:00
..
boot sparc32: drop build time btfixup patching 2012-05-14 14:05:10 -07:00
configs perf: Remove PERF_COUNTERS config option 2012-04-26 13:52:52 +02:00
crypto sparc64: Fix function argument comment in camellia_sparc64_key_expand asm. 2012-09-21 12:04:51 -07:00
include sparc64: Support transparent huge pages. 2012-10-09 16:23:06 +09:00
kernel sparc64: Support transparent huge pages. 2012-10-09 16:23:06 +09:00
lib sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
math-emu sparc64: Fix several bugs in quad floating point emulation. 2012-05-25 00:31:56 -07:00
mm sparc64: Support transparent huge pages. 2012-10-09 16:23:06 +09:00
net sparc: bpf_jit_comp: add XOR instruction for BPF JIT JIT 2012-09-27 18:04:35 -04:00
oprofile
prom sparc32: Remove superfluous extern declarations for prom_*() functions 2012-06-27 01:27:45 -07:00
Kbuild sparc64: Add SHA1 driver making use of the 'sha1' instruction. 2012-08-20 15:08:49 -07:00
Kconfig sparc64: Only support 4MB huge pages and 8KB base pages. 2012-10-09 16:23:04 +09:00
Kconfig.debug lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
Makefile Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-21 19:43:57 -07:00