linux/arch
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
..
alpha mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
arm readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
arm64 Kconfig: clean up the "#if defined(arch)" list for exception-trace sysctl entry 2012-10-09 16:22:14 +09:00
avr32 readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
blackfin Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
c6x Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
cris readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
frv Kconfig: clean up the long arch list for the DEBUG_BUGVERBOSE config option 2012-10-09 16:22:14 +09:00
h8300 Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
hexagon readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
ia64 mm: fix-up zone present pages 2012-10-09 16:22:54 +09:00
m32r Kconfig: clean up the long arch list for the DEBUG_BUGVERBOSE config option 2012-10-09 16:22:14 +09:00
m68k readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
microblaze readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
mips readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
mn10300 cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
openrisc readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
parisc mm: replace vma prio_tree with an interval tree 2012-10-09 16:22:39 +09:00
powerpc memory-hotplug: suppress "Trying to free nonexistent resource <XXXXXXXXXXXXXXXX-YYYYYYYYYYYYYYYY>" warning 2012-10-09 16:23:04 +09:00
s390 mm: Add and use update_mmu_cache_pmd() in transparent huge page code. 2012-10-09 16:23:05 +09:00
score Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
sh readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
sparc sparc64: Support transparent huge pages. 2012-10-09 16:23:06 +09:00
tile readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
um readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
unicore32 mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
x86 mm: Add and use update_mmu_cache_pmd() in transparent huge page code. 2012-10-09 16:23:05 +09:00
xtensa readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
.gitignore
Kconfig thp, x86: introduce HAVE_ARCH_TRANSPARENT_HUGEPAGE 2012-10-09 16:22:29 +09:00