mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	arm64/mm: enable HugeTLB migration for contiguous bit HugeTLB pages
Let arm64 subscribe to the previously added framework in which
architecture can inform whether a given huge page size is supported for
migration.  This just overrides the default function
arch_hugetlb_migration_supported() and enables migration for all
possible HugeTLB page sizes on arm64.
With this, HugeTLB migration support on arm64 now covers all possible
HugeTLB options.
          CONT PTE    PMD    CONT PMD    PUD
          --------    ---    --------    ---
  4K:        64K      2M        32M      1G
  16K:        2M     32M         1G
  64K:        2M    512M        16G
Link: http://lkml.kernel.org/r/1545121450-1663-6-git-send-email-anshuman.khandual@arm.com
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									4a03a058d1
								
							
						
					
					
						commit
						5480280d3f
					
				
					 2 changed files with 25 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -20,6 +20,11 @@
 | 
			
		|||
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION
 | 
			
		||||
#define arch_hugetlb_migration_supported arch_hugetlb_migration_supported
 | 
			
		||||
extern bool arch_hugetlb_migration_supported(struct hstate *h);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define __HAVE_ARCH_HUGE_PTEP_GET
 | 
			
		||||
static inline pte_t huge_ptep_get(pte_t *ptep)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,26 @@
 | 
			
		|||
#include <asm/tlbflush.h>
 | 
			
		||||
#include <asm/pgalloc.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION
 | 
			
		||||
bool arch_hugetlb_migration_supported(struct hstate *h)
 | 
			
		||||
{
 | 
			
		||||
	size_t pagesize = huge_page_size(h);
 | 
			
		||||
 | 
			
		||||
	switch (pagesize) {
 | 
			
		||||
#ifdef CONFIG_ARM64_4K_PAGES
 | 
			
		||||
	case PUD_SIZE:
 | 
			
		||||
#endif
 | 
			
		||||
	case PMD_SIZE:
 | 
			
		||||
	case CONT_PMD_SIZE:
 | 
			
		||||
	case CONT_PTE_SIZE:
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	pr_warn("%s: unrecognized huge page size 0x%lx\n",
 | 
			
		||||
			__func__, pagesize);
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int pmd_huge(pmd_t pmd)
 | 
			
		||||
{
 | 
			
		||||
	return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue