From: Mike Rapoport <rppt@kernel.org>
To: Oscar Salvador <osalvador@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alexandre Ghiti <alexghiti@rivosinc.com>,
David Hildenbrand <david@redhat.com>,
Pratyush Yadav <ptyadav@amazon.de>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 3/3] cma: move allocation from HIGHMEM to a helper function
Date: Thu, 3 Jul 2025 20:27:55 +0300 [thread overview]
Message-ID: <aGa9mworOcOE6GhV@kernel.org> (raw)
In-Reply-To: <aGZTApK8WxFrTxI0@localhost.localdomain>
On Thu, Jul 03, 2025 at 11:53:06AM +0200, Oscar Salvador wrote:
> On Wed, Jul 02, 2025 at 08:36:05PM +0300, Mike Rapoport wrote:
> > From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
> >
> > When CONFIG_HIGMEM is enabled, __cma_declare_contiguous_nid() first
> > tries to allocate the area from HIGHMEM and if that fails it falls back
> > to allocation from low memory.
> >
> > Split allocation from HIGMEM into a helper function to further decouple
> > logic related to CONFIG_HIGHMEM.
> >
> > Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> > ---
> > mm/cma.c | 52 +++++++++++++++++++++++++++++-----------------------
> > 1 file changed, 29 insertions(+), 23 deletions(-)
> >
> > diff --git a/mm/cma.c b/mm/cma.c
> > index 1df8ff312d99..0a24c46f3296 100644
> > --- a/mm/cma.c
> > +++ b/mm/cma.c
> > @@ -376,6 +376,30 @@ static int __init cma_fixed_reserve(phys_addr_t base, phys_addr_t size)
> > return 0;
> > }
> >
> > +static phys_addr_t __init cma_alloc_highmem(phys_addr_t base, phys_addr_t size,
> > + phys_addr_t align, phys_addr_t *limit, int nid)
> > +{
> > + phys_addr_t addr = 0;
> > +
> > + if (IS_ENABLED(CONFIG_HIGHMEM)) {
> > + phys_addr_t highmem = __pa(high_memory - 1) + 1;
> > +
> > + /*
> > + * All pages in the reserved area must come from the same zone.
> > + * If the requested region crosses the low/high memory boundary,
> > + * try allocating from high memory first and fall back to low
> > + * memory in case of failure.
> > + */
> > + if (base < highmem && *limit > highmem) {
> > + addr = memblock_alloc_range_nid(size, align, highmem,
> > + *limit, nid, true);
> > + *limit = highmem;
> > + }
> > + }
>
> Not a big deal, but maybe better to do it in one function? Maybe even move
> the CONFIG_PHYS_ADDR_T_64BIT block in there as well? So memblock_alloc_range_nid()
> calls would be contained in one place and the X86_64/HIGHMEM comments as
> well.
> Just a thought.
Yeah, this will be neater, thanks!
Will send v2 shortly.
> --
> Oscar Salvador
> SUSE Labs
--
Sincerely yours,
Mike.
prev parent reply other threads:[~2025-07-03 17:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-02 17:36 [PATCH 0/3] cma: factor out HIGMEM logic from __cma_declare_contiguous_nid Mike Rapoport
2025-07-02 17:36 ` [PATCH 1/3] cma: move __cma_declare_contiguous_nid() before its usage Mike Rapoport
2025-07-03 9:21 ` Oscar Salvador
2025-07-03 11:11 ` David Hildenbrand
2025-07-02 17:36 ` [PATCH 2/3] cma: split resrvation of fixed area into a helper function Mike Rapoport
2025-07-03 9:34 ` Oscar Salvador
2025-07-03 11:12 ` David Hildenbrand
2025-07-02 17:36 ` [PATCH 3/3] cma: move allocation from HIGHMEM to " Mike Rapoport
2025-07-03 9:53 ` Oscar Salvador
2025-07-03 11:14 ` David Hildenbrand
2025-07-03 17:27 ` Mike Rapoport [this message]
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=aGa9mworOcOE6GhV@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alexghiti@rivosinc.com \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=osalvador@suse.de \
--cc=ptyadav@amazon.de \
/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.