From: Zi Yan <zi.yan@sent.com>
To: David Hildenbrand <david@redhat.com>, linux-mm@kvack.org
Cc: Mel Gorman <mgorman@techsingularity.net>, Zi Yan <ziy@nvidia.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Robin Murphy <robin.murphy@arm.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
Eric Ren <renzhengeek@gmail.com>,
virtualization@lists.linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>,
Vlastimil Babka <vbabka@suse.cz>
Subject: [RFC PATCH v3 3/8] mm: migrate: allocate the right size of non hugetlb or THP compound pages.
Date: Wed, 5 Jan 2022 16:47:51 -0500 [thread overview]
Message-ID: <20220105214756.91065-4-zi.yan@sent.com> (raw)
In-Reply-To: <20220105214756.91065-1-zi.yan@sent.com>
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.
Signed-off-by: Zi Yan <ziy@nvidia.com>
---
mm/migrate.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/mm/migrate.c b/mm/migrate.c
index c7da064b4781..b1851ffb8576 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1546,9 +1546,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask = htlb_modify_alloc_mask(h, gfp_mask);
return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);
- }
-
- if (PageTransHuge(page)) {
+ } else if (is_transparent_hugepage(page)) {
/*
* clear __GFP_RECLAIM to make the migration callback
* consistent with regular THP allocations.
@@ -1556,14 +1554,19 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask &= ~__GFP_RECLAIM;
gfp_mask |= GFP_TRANSHUGE;
order = HPAGE_PMD_ORDER;
+ } else if (PageCompound(page)) {
+ /* for non-LRU movable compound pages */
+ gfp_mask |= __GFP_COMP;
+ order = compound_order(page);
}
+
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;
--
2.34.1
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Zi Yan <zi.yan@sent.com>
To: David Hildenbrand <david@redhat.com>, linux-mm@kvack.org
Cc: Mel Gorman <mgorman@techsingularity.net>, Zi Yan <ziy@nvidia.com>,
Robin Murphy <robin.murphy@arm.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
Eric Ren <renzhengeek@gmail.com>,
virtualization@lists.linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>,
Vlastimil Babka <vbabka@suse.cz>,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: [RFC PATCH v3 3/8] mm: migrate: allocate the right size of non hugetlb or THP compound pages.
Date: Wed, 5 Jan 2022 16:47:51 -0500 [thread overview]
Message-ID: <20220105214756.91065-4-zi.yan@sent.com> (raw)
In-Reply-To: <20220105214756.91065-1-zi.yan@sent.com>
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.
Signed-off-by: Zi Yan <ziy@nvidia.com>
---
mm/migrate.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/mm/migrate.c b/mm/migrate.c
index c7da064b4781..b1851ffb8576 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1546,9 +1546,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask = htlb_modify_alloc_mask(h, gfp_mask);
return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);
- }
-
- if (PageTransHuge(page)) {
+ } else if (is_transparent_hugepage(page)) {
/*
* clear __GFP_RECLAIM to make the migration callback
* consistent with regular THP allocations.
@@ -1556,14 +1554,19 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask &= ~__GFP_RECLAIM;
gfp_mask |= GFP_TRANSHUGE;
order = HPAGE_PMD_ORDER;
+ } else if (PageCompound(page)) {
+ /* for non-LRU movable compound pages */
+ gfp_mask |= __GFP_COMP;
+ order = compound_order(page);
}
+
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;
--
2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Zi Yan <zi.yan@sent.com>
To: 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>,
Eric Ren <renzhengeek@gmail.com>, Zi Yan <ziy@nvidia.com>
Subject: [RFC PATCH v3 3/8] mm: migrate: allocate the right size of non hugetlb or THP compound pages.
Date: Wed, 5 Jan 2022 16:47:51 -0500 [thread overview]
Message-ID: <20220105214756.91065-4-zi.yan@sent.com> (raw)
In-Reply-To: <20220105214756.91065-1-zi.yan@sent.com>
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.
Signed-off-by: Zi Yan <ziy@nvidia.com>
---
mm/migrate.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/mm/migrate.c b/mm/migrate.c
index c7da064b4781..b1851ffb8576 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1546,9 +1546,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask = htlb_modify_alloc_mask(h, gfp_mask);
return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);
- }
-
- if (PageTransHuge(page)) {
+ } else if (is_transparent_hugepage(page)) {
/*
* clear __GFP_RECLAIM to make the migration callback
* consistent with regular THP allocations.
@@ -1556,14 +1554,19 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
gfp_mask &= ~__GFP_RECLAIM;
gfp_mask |= GFP_TRANSHUGE;
order = HPAGE_PMD_ORDER;
+ } else if (PageCompound(page)) {
+ /* for non-LRU movable compound pages */
+ gfp_mask |= __GFP_COMP;
+ order = compound_order(page);
}
+
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;
--
2.34.1
next prev parent reply other threads:[~2022-01-05 21:48 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-05 21:47 [RFC PATCH v3 0/8] Use pageblock_order for cma and alloc_contig_range alignment Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 1/8] mm: page_alloc: avoid merging non-fallbackable pageblocks with others Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-12 10:54 ` David Hildenbrand
2022-01-12 10:54 ` David Hildenbrand
2022-01-12 10:54 ` David Hildenbrand
2022-01-12 10:54 ` David Hildenbrand
2022-01-13 11:36 ` Mike Rapoport
2022-01-13 11:36 ` Mike Rapoport
2022-01-13 11:36 ` Mike Rapoport
2022-01-13 12:28 ` David Hildenbrand
2022-01-13 12:28 ` David Hildenbrand
2022-01-13 12:28 ` David Hildenbrand
2022-01-13 12:28 ` David Hildenbrand
2022-01-13 14:50 ` Zi Yan via iommu
2022-01-13 14:50 ` Zi Yan
2022-01-13 14:50 ` Zi Yan
2022-01-13 14:49 ` Zi Yan via iommu
2022-01-13 14:49 ` Zi Yan
2022-01-13 14:49 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 2/8] mm: compaction: handle non-lru compound pages properly in isolate_migratepages_block() Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-12 11:01 ` David Hildenbrand
2022-01-12 11:01 ` David Hildenbrand
2022-01-12 11:01 ` David Hildenbrand
2022-01-12 11:01 ` David Hildenbrand
2022-01-13 14:57 ` Zi Yan via iommu
2022-01-13 14:57 ` Zi Yan
2022-01-13 14:57 ` Zi Yan
2022-01-13 16:23 ` Zi Yan via iommu
2022-01-13 16:23 ` Zi Yan
2022-01-13 16:23 ` Zi Yan
2022-01-05 21:47 ` Zi Yan [this message]
2022-01-05 21:47 ` [RFC PATCH v3 3/8] mm: migrate: allocate the right size of non hugetlb or THP compound pages Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-12 11:04 ` David Hildenbrand
2022-01-12 11:04 ` David Hildenbrand
2022-01-12 11:04 ` David Hildenbrand
2022-01-12 11:04 ` David Hildenbrand
2022-01-13 15:46 ` Zi Yan via iommu
2022-01-13 15:46 ` Zi Yan
2022-01-13 15:46 ` Zi Yan
2022-01-13 15:50 ` David Hildenbrand
2022-01-13 15:50 ` David Hildenbrand
2022-01-13 15:50 ` David Hildenbrand
2022-01-13 15:50 ` David Hildenbrand
2022-01-05 21:47 ` [RFC PATCH v3 4/8] mm: make alloc_contig_range work at pageblock granularity Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 5/8] mm: page_isolation: check specified range for unmovable pages during isolation Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-14 13:38 ` David Hildenbrand
2022-01-14 13:38 ` David Hildenbrand
2022-01-14 13:38 ` David Hildenbrand
2022-01-14 13:38 ` David Hildenbrand
2022-01-14 15:14 ` Zi Yan via iommu
2022-01-14 15:14 ` Zi Yan
2022-01-14 15:14 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 6/8] mm: cma: use pageblock_order as the single alignment Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 7/8] drivers: virtio_mem: use pageblock size as the minimum virtio_mem size Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-14 13:44 ` David Hildenbrand
2022-01-14 13:44 ` David Hildenbrand
2022-01-14 13:44 ` David Hildenbrand
2022-01-14 13:44 ` David Hildenbrand
2022-01-14 15:15 ` Zi Yan via iommu
2022-01-14 15:15 ` Zi Yan
2022-01-14 15:15 ` Zi Yan
2022-01-05 21:47 ` [RFC PATCH v3 8/8] arch: powerpc: adjust fadump alignment to be pageblock aligned Zi Yan
2022-01-05 21:47 ` Zi Yan
2022-01-05 21:47 ` 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=20220105214756.91065-4-zi.yan@sent.com \
--to=zi.yan@sent.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=mgorman@techsingularity.net \
--cc=mpe@ellerman.id.au \
--cc=renzhengeek@gmail.com \
--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 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.