[PATCH 22/28] mm/damon/core: introduce DAMON_FILTER_TYPE_MEMCG
From: SeongJae Park
Date: Mon May 18 2026 - 19:50:05 EST
Belonging memory cgoup is another data attribute that can be useful to
monitor. Introduce a new DAMON filter type, namely
DAMON_FILTER_TYPE_MEMCG, for monitoring of this attribute.
Signed-off-by: SeongJae Park <sj@xxxxxxxxxx>
---
include/linux/damon.h | 6 ++++++
mm/damon/core.c | 14 ++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/include/linux/damon.h b/include/linux/damon.h
index 1fb271a35e98f..6a54c601889bd 100644
--- a/include/linux/damon.h
+++ b/include/linux/damon.h
@@ -742,9 +742,11 @@ struct damon_intervals_goal {
* enum damon_filter_type - Type of &struct damon_filter
*
* @DAMON_FILTER_TYPE_ANON: Anonymous pages.
+ * @DAMON_FILTER_TYPE_MEMCG: Specific memcg's pages.
*/
enum damon_filter_type {
DAMON_FILTER_TYPE_ANON,
+ DAMON_FILTER_TYPE_MEMCG,
};
/**
@@ -753,12 +755,16 @@ enum damon_filter_type {
* @type: Type of the region.
* @matching: Whether this filter is for the type-matching ones.
* @allow: Whether the @type-@matching ones should pass this filter.
+ * @memcg_id: Memcg id of the question if @type is DAMON_FILTER_MEMCG.
* @list: Siblings list.
*/
struct damon_filter {
enum damon_filter_type type;
bool matching;
bool allow;
+ union {
+ u64 memcg_id;
+ };
struct list_head list;
};
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 5ba7ad4df4351..4fc90b0bdac88 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1433,6 +1433,13 @@ static void damon_commit_filter(struct damon_filter *dst,
dst->type = src->type;
dst->matching = src->matching;
dst->allow = src->allow;
+ switch (dst->type) {
+ case DAMON_FILTER_TYPE_MEMCG:
+ dst->memcg_id = src->memcg_id;
+ break;
+ default:
+ break;
+ }
}
static int damon_commit_filters(struct damon_probe *dst,
@@ -1457,6 +1464,13 @@ static int damon_commit_filters(struct damon_probe *dst,
src_filter->matching, src_filter->allow);
if (!new_filter)
return -ENOMEM;
+ switch (src_filter->type) {
+ case DAMON_FILTER_TYPE_MEMCG:
+ new_filter->memcg_id = src_filter->memcg_id;
+ break;
+ default:
+ break;
+ }
damon_add_filter(dst, new_filter);
}
return 0;
--
2.47.3