All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zi Yan <ziy@nvidia.com>
To: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 4/4] mm/mempolicy: Use vma_alloc_folio() in new_page()
Date: Mon, 04 Apr 2022 15:51:30 -0400	[thread overview]
Message-ID: <C02AAB5E-306A-4D1F-9F82-A707DF3AD9B5@nvidia.com> (raw)
In-Reply-To: <20220404193006.1429250-5-willy@infradead.org>

[-- Attachment #1: Type: text/plain, Size: 2096 bytes --]

On 4 Apr 2022, at 15:30, Matthew Wilcox (Oracle) wrote:

> Simplify new_page() by unifying the THP and base page cases, and
> handle orders other than 0 and HPAGE_PMD_ORDER correctly.
>
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> ---
>  mm/mempolicy.c | 25 +++++++++++--------------
>  1 file changed, 11 insertions(+), 14 deletions(-)
>
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index ec15f4f4b714..d6d7a95b0cce 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -1191,8 +1191,10 @@ int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
>   */
>  static struct page *new_page(struct page *page, unsigned long start)
>  {
> +	struct folio *dst, *src = page_folio(page);
>  	struct vm_area_struct *vma;
>  	unsigned long address;
> +	gfp_t gfp = GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL;
>
>  	vma = find_vma(current->mm, start);
>  	while (vma) {
> @@ -1202,24 +1204,19 @@ static struct page *new_page(struct page *page, unsigned long start)
>  		vma = vma->vm_next;
>  	}
>
> -	if (PageHuge(page)) {
> -		return alloc_huge_page_vma(page_hstate(compound_head(page)),
> +	if (folio_test_hugetlb(src)) {
> +		return alloc_huge_page_vma(page_hstate(&src->page),
>  				vma, address);
> -	} else if (PageTransHuge(page)) {
> -		struct page *thp;
> -
> -		thp = alloc_hugepage_vma(GFP_TRANSHUGE, vma, address,
> -					 HPAGE_PMD_ORDER);
> -		if (!thp)
> -			return NULL;
> -		prep_transhuge_page(thp);
> -		return thp;
> +	} else if (folio_test_large(src)) {
> +		gfp = GFP_TRANSHUGE;
>  	}

Nit. The two bracket pairs from the two ifs can be removed.

> +
>  	/*
> -	 * if !vma, alloc_page_vma() will use task or system default policy
> +	 * if !vma, vma_alloc_folio() will use task or system default policy
>  	 */
> -	return alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL,
> -			vma, address);
> +	dst = vma_alloc_folio(gfp, folio_order(src), vma, address,
> +			folio_test_large(src));
> +	return &dst->page;
>  }
>  #else
>
> -- 
> 2.34.1


--
Best Regards,
Yan, Zi

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 854 bytes --]

  reply	other threads:[~2022-04-04 19:51 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-04 19:30 [PATCH 0/4] Alternative fixes for migration Matthew Wilcox (Oracle)
2022-04-04 19:30 ` [PATCH 1/4] mm/migrate: Use a folio in alloc_migration_target() Matthew Wilcox (Oracle)
2022-04-04 19:30 ` [PATCH 2/4] mm/migrate: Use a folio in migrate_misplaced_transhuge_page() Matthew Wilcox (Oracle)
2022-04-04 19:30 ` [PATCH 3/4] mm: Add vma_alloc_folio() Matthew Wilcox (Oracle)
2022-04-04 19:30 ` [PATCH 4/4] mm/mempolicy: Use vma_alloc_folio() in new_page() Matthew Wilcox (Oracle)
2022-04-04 19:51   ` Zi Yan [this message]
2022-04-07 13:11     ` Matthew Wilcox
2022-04-04 19:53 ` [PATCH 0/4] Alternative fixes for migration Zi Yan
2022-04-07  6:14 ` William Kucharski
2022-04-07  6:16 ` William Kucharski

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=C02AAB5E-306A-4D1F-9F82-A707DF3AD9B5@nvidia.com \
    --to=ziy@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=willy@infradead.org \
    /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.