public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
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 6/8] mm: cma: use pageblock_order as the single alignment
Date: Wed,  5 Jan 2022 16:47:54 -0500	[thread overview]
Message-ID: <20220105214756.91065-7-zi.yan@sent.com> (raw)
In-Reply-To: <20220105214756.91065-1-zi.yan@sent.com>

From: Zi Yan <ziy@nvidia•com>

Now alloc_contig_range() works at pageblock granularity. Change CMA
allocation, which uses alloc_contig_range(), to use pageblock_order
alignment.

Signed-off-by: Zi Yan <ziy@nvidia•com>
---
 include/linux/mmzone.h  | 5 +----
 kernel/dma/contiguous.c | 2 +-
 mm/cma.c                | 6 ++----
 mm/page_alloc.c         | 6 +++---
 4 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 0aa549653e4e..d28a02a893d6 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -54,10 +54,7 @@ enum migratetype {
 	 *
 	 * The way to use it is to change migratetype of a range of
 	 * pageblocks to MIGRATE_CMA which can be done by
-	 * __free_pageblock_cma() function.  What is important though
-	 * is that a range of pageblocks must be aligned to
-	 * MAX_ORDER_NR_PAGES should biggest page be bigger than
-	 * a single pageblock.
+	 * __free_pageblock_cma() function.
 	 */
 	MIGRATE_CMA,
 #endif
diff --git a/kernel/dma/contiguous.c b/kernel/dma/contiguous.c
index 3d63d91cba5c..ac35b14b0786 100644
--- a/kernel/dma/contiguous.c
+++ b/kernel/dma/contiguous.c
@@ -399,7 +399,7 @@ static const struct reserved_mem_ops rmem_cma_ops = {
 
 static int __init rmem_cma_setup(struct reserved_mem *rmem)
 {
-	phys_addr_t align = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
+	phys_addr_t align = PAGE_SIZE << pageblock_order;
 	phys_addr_t mask = align - 1;
 	unsigned long node = rmem->fdt_node;
 	bool default_cma = of_get_flat_dt_prop(node, "linux,cma-default", NULL);
diff --git a/mm/cma.c b/mm/cma.c
index bc9ca8f3c487..d171158bd418 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -180,8 +180,7 @@ int __init cma_init_reserved_mem(phys_addr_t base, phys_addr_t size,
 		return -EINVAL;
 
 	/* ensure minimal alignment required by mm core */
-	alignment = PAGE_SIZE <<
-			max_t(unsigned long, MAX_ORDER - 1, pageblock_order);
+	alignment = PAGE_SIZE << pageblock_order;
 
 	/* alignment should be aligned with order_per_bit */
 	if (!IS_ALIGNED(alignment >> PAGE_SHIFT, 1 << order_per_bit))
@@ -268,8 +267,7 @@ int __init cma_declare_contiguous_nid(phys_addr_t base,
 	 * migratetype page by page allocator's buddy algorithm. In the case,
 	 * you couldn't get a contiguous memory, which is not what we want.
 	 */
-	alignment = max(alignment,  (phys_addr_t)PAGE_SIZE <<
-			  max_t(unsigned long, MAX_ORDER - 1, pageblock_order));
+	alignment = max(alignment,  (phys_addr_t)PAGE_SIZE << pageblock_order);
 	if (fixed && base & (alignment - 1)) {
 		ret = -EINVAL;
 		pr_err("Region at %pa must be aligned to %pa bytes\n",
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index faee7637740a..63d76f436ed1 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -9013,8 +9013,8 @@ static inline void split_free_page_into_pageblocks(struct page *free_page,
  *			be either of the two.
  * @gfp_mask:	GFP mask to use during compaction
  *
- * The PFN range does not have to be pageblock or MAX_ORDER_NR_PAGES
- * aligned.  The PFN range must belong to a single zone.
+ * The PFN range does not have to be pageblock aligned. The PFN range must
+ * belong to a single zone.
  *
  * The first thing this routine does is attempt to MIGRATE_ISOLATE all
  * pageblocks in the range.  Once isolated, the pageblocks should not
@@ -9130,7 +9130,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
 	ret = 0;
 
 	/*
-	 * Pages from [start, end) are within a MAX_ORDER_NR_PAGES
+	 * Pages from [start, end) are within a pageblock_nr_pages
 	 * aligned blocks that are marked as MIGRATE_ISOLATE.  What's
 	 * more, all pages in [start, end) are free in page allocator.
 	 * What we are going to do is to allocate all pages from
-- 
2.34.1


  parent reply	other threads:[~2022-01-05 21:52 UTC|newest]

Thread overview: 24+ 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 ` [RFC PATCH v3 1/8] mm: page_alloc: avoid merging non-fallbackable pageblocks with others Zi Yan
2022-01-12 10:54   ` David Hildenbrand
2022-01-13 11:36     ` Mike Rapoport
2022-01-13 12:28       ` David Hildenbrand
2022-01-13 14:50         ` 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-12 11:01   ` David Hildenbrand
2022-01-13 14:57     ` Zi Yan
2022-01-13 16:23       ` Zi Yan
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-12 11:04   ` David Hildenbrand
2022-01-13 15:46     ` Zi Yan
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 ` [RFC PATCH v3 5/8] mm: page_isolation: check specified range for unmovable pages during isolation Zi Yan
2022-01-14 13:38   ` David Hildenbrand
2022-01-14 15:14     ` Zi Yan
2022-01-05 21:47 ` Zi Yan [this message]
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-14 13:44   ` David Hildenbrand
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

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-7-zi.yan@sent.com \
    --to=zi.yan@sent$(echo .)com \
    --cc=david@redhat$(echo .)com \
    --cc=hch@lst$(echo .)de \
    --cc=iommu@lists$(echo .)linux-foundation.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-mm@kvack$(echo .)org \
    --cc=linuxppc-dev@lists$(echo .)ozlabs.org \
    --cc=m.szyprowski@samsung$(echo .)com \
    --cc=mgorman@techsingularity$(echo .)net \
    --cc=renzhengeek@gmail$(echo .)com \
    --cc=robin.murphy@arm$(echo .)com \
    --cc=vbabka@suse$(echo .)cz \
    --cc=virtualization@lists$(echo .)linux-foundation.org \
    --cc=ziy@nvidia$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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