mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
hugetlb: restrict hugepage_migration_support() to x86_64
Currently hugepage migration is available for all archs which support pmd-level hugepage, but testing is done only for x86_64 and there're bugs for other archs. So to avoid breaking such archs, this patch limits the availability strictly to x86_64 until developers of other archs get interested in enabling this feature. Simply disabling hugepage migration on non-x86_64 archs is not enough to fix the reported problem where sys_move_pages() hits the BUG_ON() in follow_page(FOLL_GET), so let's fix this by checking if hugepage migration is supported in vma_migratable(). Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Reported-by: Michael Ellerman <mpe@ellerman.id.au> Tested-by: Michael Ellerman <mpe@ellerman.id.au> Acked-by: Hugh Dickins <hughd@google.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: David Miller <davem@davemloft.net> Cc: <stable@vger.kernel.org> [3.12+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7f39dda9d8
commit
c177c81e09
15 changed files with 18 additions and 73 deletions
|
@ -392,15 +392,13 @@ static inline pgoff_t basepage_index(struct page *page)
|
|||
|
||||
extern void dissolve_free_huge_pages(unsigned long start_pfn,
|
||||
unsigned long end_pfn);
|
||||
int pmd_huge_support(void);
|
||||
/*
|
||||
* Currently hugepage migration is enabled only for pmd-based hugepage.
|
||||
* This function will be updated when hugepage migration is more widely
|
||||
* supported.
|
||||
*/
|
||||
static inline int hugepage_migration_support(struct hstate *h)
|
||||
{
|
||||
return pmd_huge_support() && (huge_page_shift(h) == PMD_SHIFT);
|
||||
#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION
|
||||
return huge_page_shift(h) == PMD_SHIFT;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline spinlock_t *huge_pte_lockptr(struct hstate *h,
|
||||
|
@ -450,7 +448,6 @@ static inline pgoff_t basepage_index(struct page *page)
|
|||
return page->index;
|
||||
}
|
||||
#define dissolve_free_huge_pages(s, e) do {} while (0)
|
||||
#define pmd_huge_support() 0
|
||||
#define hugepage_migration_support(h) 0
|
||||
|
||||
static inline spinlock_t *huge_pte_lockptr(struct hstate *h,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue