linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Eric Ren <renzhengeek@gmail.com>
To: Zi Yan <ziy@nvidia.com>, David Hildenbrand <david@redhat.com>,
	linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	Michael Ellerman <mpe@ellerman.id.au>,
	Christoph Hellwig <hch@lst.de>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Robin Murphy <robin.murphy@arm.com>,
	linuxppc-dev@lists.ozlabs.org,
	virtualization@lists.linux-foundation.org,
	iommu@lists.linux-foundation.org,
	Vlastimil Babka <vbabka@suse.cz>,
	Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [RFC PATCH v2 3/7] mm: migrate: allocate the right size of non hugetlb or THP compound pages.
Date: Fri, 10 Dec 2021 15:53:47 +0800	[thread overview]
Message-ID: <84807a03-f7d1-83cb-16df-bacc58de4529@gmail.com> (raw)
In-Reply-To: <20211209230414.2766515-4-zi.yan@sent.com>

Hi,

On 2021/12/10 07:04, Zi Yan wrote:
> From: Zi Yan <ziy@nvidia.com>
>
> alloc_migration_target() is used by alloc_contig_range() and non-LRU
> movable compound pages can be migrated. Current code does not allocate the
> right page size for such pages. Check THP precisely using
> is_transparent_huge() and add allocation support for non-LRU compound
> pages.
Could you elaborate on why the current code doesn't get the right size?  
how this patch fixes it.

The description sounds like it's an existing bug, if so, the patch 
subject should be changed to
"Fixes ..."?

>
> Signed-off-by: Zi Yan <ziy@nvidia.com>
> ---
>   mm/migrate.c | 8 ++++++--
>   1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/mm/migrate.c b/mm/migrate.c
> index d487a399253b..2ce3c771b1de 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -1563,7 +1563,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
>   		return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);
>   	}
>   
> -	if (PageTransHuge(page)) {
> +	if (is_transparent_hugepage(page)) {
>   		/*
>   		 * clear __GFP_RECLAIM to make the migration callback
>   		 * consistent with regular THP allocations.
> @@ -1572,13 +1572,17 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
if (PageTransHuge(page)) {  // just give more code context
...
>   		gfp_mask |= GFP_TRANSHUGE;
>   		order = HPAGE_PMD_ORDER;
order assigned here
>   	}
> +	if (PageCompound(page)) {
> +		gfp_mask |= __GFP_COMP;
> +		order = compound_order(page);
re-assinged again as THP is a compound page?

Thanks,
Eric
> +	}
>   	zidx = zone_idx(page_zone(page));
>   	if (is_highmem_idx(zidx) || zidx == ZONE_MOVABLE)
>   		gfp_mask |= __GFP_HIGHMEM;
>   
>   	new_page = __alloc_pages(gfp_mask, order, nid, mtc->nmask);
>   
> -	if (new_page && PageTransHuge(new_page))
> +	if (new_page && is_transparent_hugepage(page))
>   		prep_transhuge_page(new_page);
>   
>   	return new_page;



  reply	other threads:[~2021-12-10  7:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-09 23:04 [RFC PATCH v2 0/7] Use pageblock_order for cma and alloc_contig_range alignment Zi Yan
2021-12-09 23:04 ` [RFC PATCH v2 1/7] mm: page_alloc: avoid merging non-fallbackable pageblocks with others Zi Yan
2021-12-10  7:43   ` Eric Ren
2021-12-10 15:39     ` Zi Yan
2021-12-09 23:04 ` [RFC PATCH v2 2/7] mm: compaction: handle non-lru compound pages properly in isolate_migratepages_block() Zi Yan
2021-12-09 23:04 ` [RFC PATCH v2 3/7] mm: migrate: allocate the right size of non hugetlb or THP compound pages Zi Yan
2021-12-10  7:53   ` Eric Ren [this message]
2021-12-10 15:48     ` Zi Yan
2021-12-10 17:59       ` Yang Shi
2021-12-09 23:04 ` [RFC PATCH v2 4/7] mm: make alloc_contig_range work at pageblock granularity Zi Yan
2021-12-10  8:12   ` Eric Ren
2021-12-09 23:04 ` [RFC PATCH v2 5/7] mm: cma: use pageblock_order as the single alignment Zi Yan
2021-12-09 23:04 ` [RFC PATCH v2 6/7] drivers: virtio_mem: use pageblock size as the minimum virtio_mem size Zi Yan
2021-12-09 23:04 ` [RFC PATCH v2 7/7] arch: powerpc: adjust fadump alignment to be pageblock aligned Zi Yan
2021-12-10  7:30 ` [RFC PATCH v2 0/7] Use pageblock_order for cma and alloc_contig_range alignment Eric Ren
2021-12-10 15:30   ` Zi Yan
     [not found] ` <19404189-3bee-c02a-a596-2e5564e0f8f5@redhat.com>
2021-12-10 20:17   ` Zi Yan

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=84807a03-f7d1-83cb-16df-bacc58de4529@gmail.com \
    --to=renzhengeek@gmail.com \
    --cc=david@redhat.com \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mgorman@techsingularity.net \
    --cc=mpe@ellerman.id.au \
    --cc=robin.murphy@arm.com \
    --cc=vbabka@suse.cz \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=ziy@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox