From: Maxime Ripard <mripard@redhat.com>
To: Thierry Reding <thierry.reding@kernel.org>
Cc: David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Sumit Semwal <sumit.semwal@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Benjamin Gaignard <benjamin.gaignard@collabora.com>,
Brian Starkey <Brian.Starkey@arm.com>,
John Stultz <jstultz@google.com>,
"T . J . Mercier" <tjmercier@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@redhat.com>,
Mike Rapoport <rppt@kernel.org>,
Sumit Garg <sumit.garg@kernel.org>,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-tegra@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
linux-mm@kvack.org
Subject: Re: [PATCH v2 04/10] mm/cma: Allow dynamically creating CMA areas
Date: Wed, 18 Feb 2026 09:55:53 +0100 [thread overview]
Message-ID: <20260218-lean-faithful-beaver-2efd77@houat> (raw)
In-Reply-To: <aY3j57xvdOY09EwQ@orome>
[-- Attachment #1: Type: text/plain, Size: 3827 bytes --]
On Thu, Feb 12, 2026 at 03:44:11PM +0100, Thierry Reding wrote:
> On Fri, Jan 23, 2026 at 02:25:16PM +0100, Maxime Ripard wrote:
> > On Thu, Jan 22, 2026 at 05:10:03PM +0100, Thierry Reding wrote:
> > > From: Thierry Reding <treding@nvidia.com>
> > >
> > > There is no technical reason why there should be a limited number of CMA
> > > regions, so extract some code into helpers and use them to create extra
> > > functions (cma_create() and cma_free()) that allow creating and freeing,
> > > respectively, CMA regions dynamically at runtime.
> > >
> > > The static array of CMA areas cannot be replaced by dynamically created
> > > areas because for many of them, allocation must not fail and some cases
> > > may need to initialize them before the slab allocator is even available.
> > > To account for this, keep these "early" areas in a separate list and
> > > track the dynamic areas in a separate list.
> > >
> > > Signed-off-by: Thierry Reding <treding@nvidia.com>
> >
> > AFAIU, this won't create a new cma heap when registering. This goes
> > against the recent work we did to create one for every cma region.
> >
> > I guess, since you have a driver that would explicitly handle that
> > region, we should create some kind of opt-out mechanism, but by default,
> > we should still create such a heap.
>
> It sounds like there's a bit of a conflict between what you want to
> achieve and what this series attempts to do.
It's not ongoing really, it's part of 6.19.
> The way I see it, the CMA code is more of a helper that gives you a
> specific functionality set. Exposing each CMA area as a heap that
> userspace can allocate from seems like a bad idea to me.
>
> Without knowing anything specific about a CMA area you don't know if it
> makes sense to expose it as a heap. Given that there is very little
> information associated with a CMA area there's only so much guessing
> that you can do. I think it'd be more sensible to make CMA areas opt-in
> to have a heap created for them rather than requiring opt-out. Exposing
> a heap publicly applies only to a (potentially) small subset of all CMA
> areas, albeit at the moment it may seem that that is what it's primarily
> used for.
Do you have any specific example in mind except for that driver?
So, the reason why we did that was, mostly, to allow proper cgroup
memory accounting through dmem. In order to enable it in DRM and v4l2,
it was agreed upon that we would switch the use of dma_alloc_* to rely
on the heaps instead, where the memory accounting is greatly simplified.
So we want any reserved memory region a device can allocate from to have
a heap.
So I do think we need the call to register a heap in rmem_cma_setup.
That being said...
> In fact, for this particular driver nobody must allocate from any of the
> CMA regions associated with the heap driver outside of that heap driver,
> simply because the heap driver maintains meta data about these CMA
> regions for things to work. If we allow access to it from anywhere,
> things are eventually going to explode.
... I also agree that having it in dma_contiguous_reserve() might be
overdoing it, and I assume it would solve the issue with your driver?
> > That being said, it's not clear to me why the heap driver uses CMA in
> > the first place.
>
> We use CMA as a way of reclaiming memory if needed. The heap that we
> create is meant to be resizable, so that when nothing uses the heap, the
> memory can be reused for other purposes. However, when memory is
> allocated from the heap, we need to reclaim that memory for the heap and
> relocate any buffers allocated from the region somewhere else. CMA does
> all of that for us, so it seemed like the logical choice for this.
Ack, thanks!
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
next prev parent reply other threads:[~2026-02-18 8:56 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-22 16:09 [PATCH v2 00/10] dma-bug: heaps: Add Tegra VPR support Thierry Reding
2026-01-22 16:10 ` [PATCH v2 01/10] dt-bindings: reserved-memory: Document Tegra VPR Thierry Reding
2026-01-22 16:10 ` [PATCH v2 02/10] dt-bindings: display: tegra: Document memory regions Thierry Reding
2026-01-22 17:36 ` Rob Herring (Arm)
2026-01-22 16:10 ` [PATCH v2 03/10] bitmap: Add bitmap_allocate() function Thierry Reding
2026-01-22 16:10 ` [PATCH v2 04/10] mm/cma: Allow dynamically creating CMA areas Thierry Reding
2026-01-23 2:11 ` kernel test robot
2026-01-23 2:43 ` kernel test robot
2026-01-23 13:25 ` Maxime Ripard
2026-02-12 14:44 ` Thierry Reding
2026-02-18 8:55 ` Maxime Ripard [this message]
2026-01-22 16:10 ` [PATCH v2 05/10] dma-buf: heaps: Add debugfs support Thierry Reding
2026-01-22 16:10 ` [PATCH v2 06/10] dma-buf: heaps: Add support for Tegra VPR Thierry Reding
2026-01-23 3:25 ` kernel test robot
2026-01-23 13:30 ` Maxime Ripard
2026-02-12 14:50 ` Thierry Reding
2026-02-18 9:42 ` Maxime Ripard
2026-01-22 16:10 ` [PATCH v2 07/10] arm64: tegra: Add VPR placeholder node on Tegra234 Thierry Reding
2026-01-23 13:28 ` Maxime Ripard
2026-02-12 14:51 ` Thierry Reding
2026-02-18 10:56 ` Maxime Ripard
2026-01-22 16:10 ` [PATCH v2 08/10] arm64: tegra: Add GPU " Thierry Reding
2026-01-22 16:10 ` [PATCH v2 09/10] arm64: tegra: Hook up VPR to host1x Thierry Reding
2026-01-22 16:10 ` [PATCH v2 10/10] arm64: tegra: Hook up VPR to the GPU Thierry Reding
2026-01-22 18:07 ` [PATCH v2 00/10] dma-bug: heaps: Add Tegra VPR support Rob Herring
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=20260218-lean-faithful-beaver-2efd77@houat \
--to=mripard@redhat.com \
--cc=Brian.Starkey@arm.com \
--cc=airlied@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=benjamin.gaignard@collabora.com \
--cc=conor+dt@kernel.org \
--cc=david@redhat.com \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jstultz@google.com \
--cc=krzk+dt@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-mm@kvack.org \
--cc=linux-tegra@vger.kernel.org \
--cc=robh@kernel.org \
--cc=rppt@kernel.org \
--cc=simona@ffwll.ch \
--cc=sumit.garg@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=thierry.reding@kernel.org \
--cc=tjmercier@google.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