All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: Barry Song <21cnbao@gmail.com>
Cc: akpm@linux-foundation.org, anshuman.khandual@arm.com,
	catalin.marinas@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-mm@kvack.org, steven.price@arm.com, will@kernel.org,
	aarcange@redhat.com, guojian@oppo.com, hanchuanhua@oppo.com,
	hannes@cmpxchg.org, hughd@google.com,
	linux-kernel@vger.kernel.org, minchan@kernel.org,
	shy828301@gmail.com, v-songbaohua@oppo.com, ying.huang@intel.com,
	zhangshiming@oppo.com
Subject: Re: [RESEND PATCH v3] arm64: enable THP_SWAP for arm64
Date: Mon, 18 Jul 2022 17:06:53 +0100	[thread overview]
Message-ID: <YtWFHfs0mYonWBwH@casper.infradead.org> (raw)
In-Reply-To: <20220718090050.2261-1-21cnbao@gmail.com>

On Mon, Jul 18, 2022 at 09:00:50PM +1200, Barry Song wrote:
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 1652a9800ebe..e1c540e80eec 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -101,6 +101,7 @@ config ARM64
>  	select ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
>  	select ARCH_WANT_LD_ORPHAN_WARN
>  	select ARCH_WANTS_NO_INSTR
> +	select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES

Can't you avoid all the other changes by simply doing:

	select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES && !ARM64_MTE

>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>  	select ARM_AMBA
>  	select ARM_ARCH_TIMER
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 0b6632f18364..78d6f6014bfb 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -45,6 +45,12 @@
>  	__flush_tlb_range(vma, addr, end, PUD_SIZE, false, 1)
>  #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
>  
> +static inline bool arch_thp_swp_supported(void)
> +{
> +	return !system_supports_mte();
> +}
> +#define arch_thp_swp_supported arch_thp_swp_supported
> +
>  /*
>   * Outside of a few very special situations (e.g. hibernation), we always
>   * use broadcast TLB invalidation instructions, therefore a spurious page
> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
> index de29821231c9..4ddaf6ad73ef 100644
> --- a/include/linux/huge_mm.h
> +++ b/include/linux/huge_mm.h
> @@ -461,4 +461,16 @@ static inline int split_folio_to_list(struct folio *folio,
>  	return split_huge_page_to_list(&folio->page, list);
>  }
>  
> +/*
> + * archs that select ARCH_WANTS_THP_SWAP but don't support THP_SWP due to
> + * limitations in the implementation like arm64 MTE can override this to
> + * false
> + */
> +#ifndef arch_thp_swp_supported
> +static inline bool arch_thp_swp_supported(void)
> +{
> +	return true;
> +}
> +#endif
> +
>  #endif /* _LINUX_HUGE_MM_H */
> diff --git a/mm/swap_slots.c b/mm/swap_slots.c
> index 2a65a89b5b4d..10b94d64cc25 100644
> --- a/mm/swap_slots.c
> +++ b/mm/swap_slots.c
> @@ -307,7 +307,7 @@ swp_entry_t folio_alloc_swap(struct folio *folio)
>  	entry.val = 0;
>  
>  	if (folio_test_large(folio)) {
> -		if (IS_ENABLED(CONFIG_THP_SWAP))
> +		if (IS_ENABLED(CONFIG_THP_SWAP) && arch_thp_swp_supported())
>  			get_swap_pages(1, &entry, folio_nr_pages(folio));
>  		goto out;
>  	}
> -- 
> 2.25.1
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Barry Song <21cnbao@gmail.com>
Cc: akpm@linux-foundation.org, anshuman.khandual@arm.com,
	catalin.marinas@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-mm@kvack.org, steven.price@arm.com, will@kernel.org,
	aarcange@redhat.com, guojian@oppo.com, hanchuanhua@oppo.com,
	hannes@cmpxchg.org, hughd@google.com,
	linux-kernel@vger.kernel.org, minchan@kernel.org,
	shy828301@gmail.com, v-songbaohua@oppo.com, ying.huang@intel.com,
	zhangshiming@oppo.com
Subject: Re: [RESEND PATCH v3] arm64: enable THP_SWAP for arm64
Date: Mon, 18 Jul 2022 17:06:53 +0100	[thread overview]
Message-ID: <YtWFHfs0mYonWBwH@casper.infradead.org> (raw)
In-Reply-To: <20220718090050.2261-1-21cnbao@gmail.com>

On Mon, Jul 18, 2022 at 09:00:50PM +1200, Barry Song wrote:
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 1652a9800ebe..e1c540e80eec 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -101,6 +101,7 @@ config ARM64
>  	select ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
>  	select ARCH_WANT_LD_ORPHAN_WARN
>  	select ARCH_WANTS_NO_INSTR
> +	select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES

Can't you avoid all the other changes by simply doing:

	select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES && !ARM64_MTE

>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>  	select ARM_AMBA
>  	select ARM_ARCH_TIMER
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 0b6632f18364..78d6f6014bfb 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -45,6 +45,12 @@
>  	__flush_tlb_range(vma, addr, end, PUD_SIZE, false, 1)
>  #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
>  
> +static inline bool arch_thp_swp_supported(void)
> +{
> +	return !system_supports_mte();
> +}
> +#define arch_thp_swp_supported arch_thp_swp_supported
> +
>  /*
>   * Outside of a few very special situations (e.g. hibernation), we always
>   * use broadcast TLB invalidation instructions, therefore a spurious page
> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
> index de29821231c9..4ddaf6ad73ef 100644
> --- a/include/linux/huge_mm.h
> +++ b/include/linux/huge_mm.h
> @@ -461,4 +461,16 @@ static inline int split_folio_to_list(struct folio *folio,
>  	return split_huge_page_to_list(&folio->page, list);
>  }
>  
> +/*
> + * archs that select ARCH_WANTS_THP_SWAP but don't support THP_SWP due to
> + * limitations in the implementation like arm64 MTE can override this to
> + * false
> + */
> +#ifndef arch_thp_swp_supported
> +static inline bool arch_thp_swp_supported(void)
> +{
> +	return true;
> +}
> +#endif
> +
>  #endif /* _LINUX_HUGE_MM_H */
> diff --git a/mm/swap_slots.c b/mm/swap_slots.c
> index 2a65a89b5b4d..10b94d64cc25 100644
> --- a/mm/swap_slots.c
> +++ b/mm/swap_slots.c
> @@ -307,7 +307,7 @@ swp_entry_t folio_alloc_swap(struct folio *folio)
>  	entry.val = 0;
>  
>  	if (folio_test_large(folio)) {
> -		if (IS_ENABLED(CONFIG_THP_SWAP))
> +		if (IS_ENABLED(CONFIG_THP_SWAP) && arch_thp_swp_supported())
>  			get_swap_pages(1, &entry, folio_nr_pages(folio));
>  		goto out;
>  	}
> -- 
> 2.25.1
> 
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-07-18 16:07 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-18  9:00 [RESEND PATCH v3] arm64: enable THP_SWAP for arm64 Barry Song
2022-07-18  9:00 ` Barry Song
2022-07-18 16:06 ` Matthew Wilcox [this message]
2022-07-18 16:06   ` Matthew Wilcox
2022-07-18 20:14   ` Barry Song
2022-07-18 20:14     ` Barry Song
2022-07-19  0:43 ` Huang, Ying
2022-07-19  0:43   ` Huang, Ying
2022-07-19  1:23   ` Barry Song
2022-07-19  1:23     ` Barry Song
2022-07-19  3:08     ` Anshuman Khandual
2022-07-19  3:08       ` Anshuman Khandual
2022-07-19  3:28       ` Huang, Ying
2022-07-19  3:28         ` Huang, Ying
2022-07-19  3:34         ` Anshuman Khandual
2022-07-19  3:34           ` Anshuman Khandual
2022-07-19  3:58           ` Huang, Ying
2022-07-19  3:58             ` Huang, Ying
2022-07-19  3:59           ` Barry Song
2022-07-19  3:59             ` Barry Song
2022-07-19  4:03             ` Barry Song
2022-07-19  4:03               ` Barry Song
2022-07-19  5:46               ` Huang, Ying
2022-07-19  5:46                 ` Huang, Ying
2022-07-19  6:13                 ` Barry Song
2022-07-19  6:13                   ` Barry Song
2022-07-19  6:33                   ` Huang, Ying
2022-07-19  6:33                     ` Huang, Ying
2022-07-19  7:01                     ` Barry Song
2022-07-19  7:01                       ` Barry Song
2022-07-19  7:19                       ` Huang, Ying
2022-07-19  7:19                         ` Huang, Ying
2022-07-19  8:44                         ` Barry Song
2022-07-19  8:44                           ` Barry Song
2022-07-19  4:03             ` Anshuman Khandual
2022-07-19  4:03               ` Anshuman Khandual
2022-07-20  1:46               ` Barry Song
2022-07-20  1:46                 ` Barry Song
2022-07-20  2:36                 ` Anshuman Khandual
2022-07-20  2:36                   ` Anshuman Khandual
2022-07-20  9:17                   ` Will Deacon
2022-07-20  9:17                     ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YtWFHfs0mYonWBwH@casper.infradead.org \
    --to=willy@infradead.org \
    --cc=21cnbao@gmail.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=anshuman.khandual@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=guojian@oppo.com \
    --cc=hanchuanhua@oppo.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=shy828301@gmail.com \
    --cc=steven.price@arm.com \
    --cc=v-songbaohua@oppo.com \
    --cc=will@kernel.org \
    --cc=ying.huang@intel.com \
    --cc=zhangshiming@oppo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.