From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Feng Tang <feng.tang@linux.alibaba.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Robin Murphy <robin.murphy@arm.com>,
Ying Huang <ying.huang@linux.alibaba.com>,
Andrew Morton <akpm@linux-foundation.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Liam.Howlett@oracle.com, Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>,
linux-mm@kvack.org, Christoph Hellwig <hch@lst.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
iommu@lists.linux.dev, linux-kernel@vger.kernel.org,
Changrong Chen <chenchangrong.ccr@alibaba-inc.com>
Subject: Re: [PATCH v3] dma-contiguous: setup default numa cma area if not configured explicitly
Date: Fri, 1 May 2026 20:51:39 +0200 [thread overview]
Message-ID: <f900172c-341a-4956-b7b7-b297418be913@kernel.org> (raw)
In-Reply-To: <afBxtIdWqv8pD8YE@U-2FWC9VHC-2323.local>
On 4/28/26 10:37, Feng Tang wrote:
> Hi David,
Hi!
[...]
>>
>> Okay, so on x86 it is not silent, because they don't even have a default CMA area?
>
> Right for default kernel configs.
>
> In kernel/dma/Kconfig:
>
> config CMA_SIZE_MBYTES
> int "Size in Mega Bytes"
> depends on !CMA_SIZE_SEL_PERCENTAGE
> default 0 if X86
> default 16
>
> config CMA_SIZE_PERCENTAGE
> int "Percentage of total memory"
> depends on !CMA_SIZE_SEL_MBYTES
> default 0 if X86
> default 10
>
>>>
>>> One thought is to follow the current cma reserving policy for platform
>>> with 'CONFIG_DMA_NUMA_CMA=y', that if the numa cma (either the 'numa cma'
>>> or 'cma pernuma' method) is not explicitly configured, set it up
>>> according to size of default 'dma_contiguous_default_area', while
>>> skipping the numa node where the 'dma_contiguous_default_area' lies
>>> in, this way the default behavior of platform with one NUMA node is
>>> kept unchanged.
>>
>> So, the kernel is configured to have a certain CONFIG_CMA_SIZE_MBYTES size, but
>> you go ahead and multiply that by the number of nodes? Sounds wrong.
>
> Yes. I thought about that, and didn't have good solution, and used this
> given it's on a multi-numa-node machine, which may not be too bad
> regarding memory usage.
It sounds wrong given the existing config options.
>
> Robin did concern about the memory usage for embedded/small devices in
> v2 review, and we change to v3 to not affect them.
>
>>
>> The whole proposal here looks rather hacky.
>
> I agree :)
>
>> Wouldn't a default for e.g., pernuma_size_bytes make more sense, that users can
>> then overwrite on the cmdline?
>
> This sounds good to me, if no objection from others. Maybe default 64MB
> or more. One good part is, all these setup is under protection of
> CONFIG_DMA_NUMA_CMA.
I cannot do the heavy thinking here because -EBUSY, but maybe you want a config
option similar to CMA_SIZE_MBYTES/CMA_SIZE_PERCENTAGE that either controls that
these sizes will be split over NUMA nodes, or another one, that sets the default
for pernuma.
[...]
>>> +extern int cma_get_nid(const struct cma *cma)
>>> +{
>>> + return cma->nid;
>>> +}
>>
>> Why do you have to store the nid instead of just looking it up from the base_pfn
>> in here?
>
> My thought was 'struct cma' already have 'nid' member, and when CONFIG_NUMA=y,
> it may be useful to save the 'nid' info instead of NUMA_NO_NODE for the default
> cma area (cmdline like cma=XXG@YYG could make it on different node)
Ah, yeah. It's a bit nasty that we have to handle the default area like that.
Another sign that we probably shouldn't deal with the default area :)
>
>>
>> Also, what is the expectation when the ranges would span different NIDs? (is
>> that possible?)
>
> Per my understanding, it won't. There is a cma_validate_zones() to prevent it
> from crossing zones.
It's a bit confusing, because it ignores other nids.
--
Cheers,
David
next prev parent reply other threads:[~2026-05-01 18:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 6:05 [PATCH v3] dma-contiguous: setup default numa cma area if not configured explicitly Feng Tang
2026-04-28 7:52 ` David Hildenbrand (Arm)
2026-04-28 8:37 ` Feng Tang
2026-04-28 9:03 ` Feng Tang
2026-05-01 18:51 ` David Hildenbrand (Arm) [this message]
2026-05-01 5:57 ` kernel test robot
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=f900172c-341a-4956-b7b7-b297418be913@kernel.org \
--to=david@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=chenchangrong.ccr@alibaba-inc.com \
--cc=feng.tang@linux.alibaba.com \
--cc=hch@lst.de \
--cc=iommu@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mhocko@suse.com \
--cc=robin.murphy@arm.com \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
--cc=ying.huang@linux.alibaba.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