From: Eric Chanudet <echanude@redhat.com>
To: "Sumit Semwal" <sumit.semwal@linaro.org>,
"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
"Brian Starkey" <Brian.Starkey@arm.com>,
"John Stultz" <jstultz@google.com>,
"T.J. Mercier" <tjmercier@google.com>,
"Christian König" <christian.koenig@amd.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"David Hildenbrand" <david@kernel.org>,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Mike Rapoport" <rppt@kernel.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Michal Hocko" <mhocko@suse.com>
Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org,
Maxime Ripard <mripard@redhat.com>,
Albert Esteve <aesteve@redhat.com>,
linux-mm@kvack.org, Eric Chanudet <echanude@redhat.com>,
Maxime Ripard <mripard@kernel.org>
Subject: [PATCH v2 1/3] cma: Register dmem region for each cma region
Date: Wed, 18 Feb 2026 12:14:10 -0500 [thread overview]
Message-ID: <20260218-dmabuf-heap-cma-dmem-v2-1-b249886fb7b2@redhat.com> (raw)
In-Reply-To: <20260218-dmabuf-heap-cma-dmem-v2-0-b249886fb7b2@redhat.com>
From: Maxime Ripard <mripard@kernel.org>
Now that the dmem cgroup has been merged, we need to create memory
regions for each allocator devices might allocate DMA memory from.
Since CMA is one of these allocators, we need to create such a region.
CMA can deal with multiple regions though, so we'll need to create a
dmem region per CMA region.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Eric Chanudet <echanude@redhat.com>
---
mm/cma.c | 13 ++++++++++++-
mm/cma.h | 3 +++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/mm/cma.c b/mm/cma.c
index 813e6dc7b0954864c9ef8cf7adc6a2293241de47..78016647d512868cd87bc2c1a52dd2295acaaf01 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -25,6 +25,7 @@
#include <linux/string_choices.h>
#include <linux/log2.h>
#include <linux/cma.h>
+#include <linux/cgroup_dmem.h>
#include <linux/highmem.h>
#include <linux/io.h>
#include <linux/kmemleak.h>
@@ -142,6 +143,15 @@ static void __init cma_activate_area(struct cma *cma)
int allocrange, r;
struct cma_memrange *cmr;
unsigned long bitmap_count, count;
+ struct dmem_cgroup_region *region;
+
+ region = dmem_cgroup_register_region(cma_get_size(cma), "cma/%s", cma->name);
+ if (IS_ERR(region))
+ goto out;
+
+#ifdef CONFIG_CGROUP_DMEM
+ cma->dmem_cgrp_region = region;
+#endif
for (allocrange = 0; allocrange < cma->nranges; allocrange++) {
cmr = &cma->ranges[allocrange];
@@ -183,7 +193,8 @@ static void __init cma_activate_area(struct cma *cma)
cleanup:
for (r = 0; r < allocrange; r++)
bitmap_free(cma->ranges[r].bitmap);
-
+ dmem_cgroup_unregister_region(region);
+out:
/* Expose all pages to the buddy, they are useless for CMA. */
if (!test_bit(CMA_RESERVE_PAGES_ON_ERROR, &cma->flags)) {
for (r = 0; r < allocrange; r++) {
diff --git a/mm/cma.h b/mm/cma.h
index c70180c36559c295d837725e26596cf546cd8b7e..e91bedcb17be8c9e0d31aea1b67c0db36315536d 100644
--- a/mm/cma.h
+++ b/mm/cma.h
@@ -62,6 +62,9 @@ struct cma {
unsigned long flags;
/* NUMA node (NUMA_NO_NODE if unspecified) */
int nid;
+#ifdef CONFIG_CGROUP_DMEM
+ struct dmem_cgroup_region *dmem_cgrp_region;
+#endif
};
enum cma_flags {
--
2.52.0
next prev parent reply other threads:[~2026-02-18 17:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-18 17:14 [PATCH v2 0/3] dma-buf: heaps: cma: enable dmem cgroup accounting Eric Chanudet
2026-02-18 17:14 ` Eric Chanudet [this message]
2026-02-18 17:14 ` [PATCH v2 2/3] cma: Provide accessor to cma dmem region Eric Chanudet
2026-02-18 17:14 ` [PATCH v2 3/3] dma-buf: heaps: cma: charge each cma heap's dmem Eric Chanudet
2026-02-19 7:17 ` Christian König
2026-02-19 17:10 ` Eric Chanudet
2026-02-20 8:16 ` Christian König
2026-02-19 9:16 ` Maxime Ripard
2026-02-19 17:21 ` Eric Chanudet
2026-02-19 9:45 ` [PATCH v2 0/3] dma-buf: heaps: cma: enable dmem cgroup accounting Albert Esteve
2026-02-20 1:14 ` T.J. Mercier
2026-02-20 9:45 ` Christian König
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-dmabuf-heap-cma-dmem-v2-1-b249886fb7b2@redhat.com \
--to=echanude@redhat.com \
--cc=Brian.Starkey@arm.com \
--cc=Liam.Howlett@oracle.com \
--cc=aesteve@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=benjamin.gaignard@collabora.com \
--cc=christian.koenig@amd.com \
--cc=david@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jstultz@google.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=mripard@kernel.org \
--cc=mripard@redhat.com \
--cc=rppt@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=surenb@google.com \
--cc=tjmercier@google.com \
--cc=vbabka@suse.cz \
/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