[PATCH 2/2] arm64/mm: Enable THP migration

Catalin Marinas catalin.marinas at arm.com
Thu Sep 3 12:58:54 EDT 2020


On Mon, Aug 17, 2020 at 02:49:44PM +0530, Anshuman Khandual wrote:
> In certain page migration situations, a THP page can be migrated without
> being split into it's constituent subpages. This saves time required to
> split a THP and put it back together when required. But it also saves an
> wider address range translation covered by a single TLB entry, reducing
> future page fault costs.
> 
> A previous patch changed platform THP helpers per generic memory semantics,
> clearing the path for THP migration support. This adds two more THP helpers
> required to create PMD migration swap entries. Now just enable HP migration

s/HP/THP/

> via ARCH_ENABLE_THP_MIGRATION.
> 
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Will Deacon <will at kernel.org>
> Cc: Mark Rutland <mark.rutland at arm.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Suzuki Poulose <suzuki.poulose at arm.com>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-kernel at vger.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
> ---
>  arch/arm64/Kconfig               | 4 ++++
>  arch/arm64/include/asm/pgtable.h | 5 +++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 6d232837cbee..e21b94061780 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -1876,6 +1876,10 @@ config ARCH_ENABLE_HUGEPAGE_MIGRATION
>  	def_bool y
>  	depends on HUGETLB_PAGE && MIGRATION
>  
> +config ARCH_ENABLE_THP_MIGRATION
> +	def_bool y
> +	depends on TRANSPARENT_HUGEPAGE
> +
>  menu "Power management options"
>  
>  source "kernel/power/Kconfig"
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 7aa69cace784..c54334bca4e2 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -875,6 +875,11 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
>  #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) })
>  #define __swp_entry_to_pte(swp)	((pte_t) { (swp).val })
>  
> +#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
> +#define __pmd_to_swp_entry(pmd)		((swp_entry_t) { pmd_val(pmd) })
> +#define __swp_entry_to_pmd(swp)		__pmd((swp).val)
> +#endif /* CONFIG_ARCH_ENABLE_THP_MIGRATION */

Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>



More information about the linux-arm-kernel mailing list