linux/arch/arm64/mm
Naoya Horiguchi 83467efbdb mm: migrate: check movability of hugepage in unmap_and_move_huge_page()
Currently hugepage migration works well only for pmd-based hugepages
(mainly due to lack of testing,) so we had better not enable migration of
other levels of hugepages until we are ready for it.

Some users of hugepage migration (mbind, move_pages, and migrate_pages) do
page table walk and check pud/pmd_huge() there, so they are safe.  But the
other users (softoffline and memory hotremove) don't do this, so without
this patch they can try to migrate unexpected types of hugepages.

To prevent this, we introduce hugepage_migration_support() as an
architecture dependent check of whether hugepage are implemented on a pmd
basis or not.  And on some architecture multiple sizes of hugepages are
available, so hugepage_migration_support() also checks hugepage size.

Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Hillf Danton <dhillf@gmail.com>
Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Hugh Dickins <hughd@google.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Rik van Riel <riel@redhat.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-09-11 15:57:49 -07:00
..
cache.S arm64: mm: Fix operands of clz in __flush_dcache_all 2013-05-14 15:44:50 +01:00
context.c arm64: Process management 2012-09-17 13:41:58 +01:00
copypage.c arm64: MMU fault handling and page table management 2012-09-17 13:41:57 +01:00
dma-mapping.c arm64: Call swiotlb_init() instead of swiotlb_init_with_default_size() 2012-10-08 16:02:09 +01:00
extable.c arm64: MMU fault handling and page table management 2012-09-17 13:41:57 +01:00
fault.c arm64: mm: don't treat user cache maintenance faults as writes 2013-07-19 15:49:44 +01:00
flush.c arm64: Remove __flush_dcache_page() 2013-06-07 17:58:30 +01:00
hugetlbpage.c mm: migrate: check movability of hugepage in unmap_and_move_huge_page() 2013-09-11 15:57:49 -07:00
init.c of: Specify initrd location using 64-bit 2013-07-24 11:10:01 +01:00
ioremap.c arm64: Device specific operations 2012-09-17 13:42:04 +01:00
Makefile ARM64: mm: HugeTLB support. 2013-06-14 09:52:40 +01:00
mm.h arm64: Remove __flush_dcache_page() 2013-06-07 17:58:30 +01:00
mmap.c mm: remove free_area_cache 2013-07-10 18:11:34 -07:00
mmu.c arm64: Fix mapping of memory banks not ending on a PMD_SIZE boundary 2013-08-28 10:47:00 +01:00
pgd.c arm64: MMU fault handling and page table management 2012-09-17 13:41:57 +01:00
proc-macros.S arm64: Assembly macros and definitions 2012-09-17 10:24:44 +01:00
proc.S arm64: mm: permit use of tagged pointers at EL0 2013-09-03 10:18:02 +01:00
tlb.S arm64: TLB maintenance functionality 2012-09-17 13:42:01 +01:00