public inbox for linux-mm@kvack.org
 help / color / mirror / Atom feed
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


  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