* [merged mm-stable] mm-damon-sysfs-schemes-implement-probe-dir.patch removed from -mm tree
@ 2026-06-02 22:25 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-06-02 22:25 UTC (permalink / raw)
To: mm-commits, vbabka, surenb, shuah, rppt, rostedt, mhocko,
mhiramat, mathieu.desnoyers, ljs, liam, david, corbet, sj, akpm
The quilt patch titled
Subject: mm/damon/sysfs-schemes: implement probe dir
has been removed from the -mm tree. Its filename was
mm-damon-sysfs-schemes-implement-probe-dir.patch
This patch was dropped because it was merged into the mm-stable branch
of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: SeongJae Park <sj@kernel.org>
Subject: mm/damon/sysfs-schemes: implement probe dir
Date: Mon, 18 May 2026 16:41:04 -0700
Implement sysfs directory for showing per-probe hits count of each region.
Link: https://lore.kernel.org/20260518234119.97569-17-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/damon/sysfs-schemes.c | 101 ++++++++++++++++++++++++++++++++++---
1 file changed, 95 insertions(+), 6 deletions(-)
--- a/mm/damon/sysfs-schemes.c~mm-damon-sysfs-schemes-implement-probe-dir
+++ a/mm/damon/sysfs-schemes.c
@@ -11,11 +11,39 @@
#include "sysfs-common.h"
/*
+ * probe directory
+ */
+
+struct damos_sysfs_probe {
+ struct kobject kobj;
+};
+
+static struct damos_sysfs_probe *damos_sysfs_probe_alloc(void)
+{
+ return kzalloc_obj(struct damos_sysfs_probe);
+}
+
+static void damos_sysfs_probe_release(struct kobject *kobj)
+{
+ struct damos_sysfs_probe *probe = container_of(kobj,
+ struct damos_sysfs_probe, kobj);
+
+ kfree(probe);
+}
+
+static const struct kobj_type damos_sysfs_probe_ktype = {
+ .release = damos_sysfs_probe_release,
+ .sysfs_ops = &kobj_sysfs_ops,
+};
+
+/*
* probes directory
*/
struct damos_sysfs_probes {
struct kobject kobj;
+ struct damos_sysfs_probe **probes_arr;
+ int nr;
};
static struct damos_sysfs_probes *damos_sysfs_probes_alloc(void)
@@ -23,6 +51,60 @@ static struct damos_sysfs_probes *damos_
return kzalloc_obj(struct damos_sysfs_probes);
}
+static void damos_sysfs_probes_rm_dirs(struct damos_sysfs_probes *probes)
+{
+ struct damos_sysfs_probe **probes_arr = probes->probes_arr;
+ int i;
+
+ for (i = 0; i < probes->nr; i++)
+ kobject_put(&probes_arr[i]->kobj);
+ probes->nr = 0;
+ kfree(probes_arr);
+ probes->probes_arr = NULL;
+}
+
+static int damos_sysfs_probes_add_dirs(struct damos_sysfs_probes *probes,
+ struct damon_ctx *ctx)
+{
+ struct damon_probe *probe;
+ struct damos_sysfs_probe **probes_arr;
+ int i = 0;
+
+ damon_for_each_probe(probe, ctx)
+ i++;
+
+ if (!i)
+ return 0;
+
+ probes_arr = kmalloc_objs(*probes_arr, i);
+ if (!probes_arr)
+ return -ENOMEM;
+ probes->probes_arr = probes_arr;
+
+ i = 0;
+ damon_for_each_probe(probe, ctx) {
+ struct damos_sysfs_probe *sys_probe;
+ int err;
+
+ sys_probe = damos_sysfs_probe_alloc();
+ if (!sys_probe) {
+ damos_sysfs_probes_rm_dirs(probes);
+ return -ENOMEM;
+ }
+ err = kobject_init_and_add(&sys_probe->kobj,
+ &damos_sysfs_probe_ktype, &probes->kobj, "%d",
+ i);
+ if (err) {
+ kobject_put(&sys_probe->kobj);
+ damos_sysfs_probes_rm_dirs(probes);
+ return err;
+ }
+ probes_arr[i++] = sys_probe;
+ probes->nr++;
+ }
+ return 0;
+}
+
static void damos_sysfs_probes_release(struct kobject *kobj)
{
struct damos_sysfs_probes *probes = container_of(kobj,
@@ -67,7 +149,8 @@ static struct damon_sysfs_scheme_region
}
static int damos_sysfs_region_add_dirs(
- struct damon_sysfs_scheme_region *region)
+ struct damon_sysfs_scheme_region *region,
+ struct damon_ctx *ctx)
{
struct damos_sysfs_probes *probes = damos_sysfs_probes_alloc();
int err;
@@ -76,18 +159,24 @@ static int damos_sysfs_region_add_dirs(
return -ENOMEM;
err = kobject_init_and_add(&probes->kobj, &damos_sysfs_probes_ktype,
®ion->kobj, "probes");
- if (err) {
- kobject_put(&probes->kobj);
- return err;
- }
+ if (err)
+ goto fail;
+ err = damos_sysfs_probes_add_dirs(probes, ctx);
+ if (err)
+ goto fail;
region->probes = probes;
return 0;
+
+fail:
+ kobject_put(&probes->kobj);
+ return err;
}
static void damos_sysfs_region_rm_dirs(
struct damon_sysfs_scheme_region *region)
{
+ damos_sysfs_probes_rm_dirs(region->probes);
kobject_put(®ion->probes->kobj);
}
@@ -3051,7 +3140,7 @@ void damos_sysfs_populate_region_dir(str
&sysfs_regions->kobj, "%d",
sysfs_regions->nr_regions))
goto out;
- if (damos_sysfs_region_add_dirs(region))
+ if (damos_sysfs_region_add_dirs(region, ctx))
goto out;
list_add_tail(®ion->list, &sysfs_regions->regions_list);
_
Patches currently in -mm which might be from sj@kernel.org are
mm-damon-reclaim-handle-ctx-allocation-failure.patch
mm-damonn-lru_sort-handle-ctx-allocation-failure.patch
maintainers-add-testing-abi-documents-for-mm.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-06-02 22:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-02 22:25 [merged mm-stable] mm-damon-sysfs-schemes-implement-probe-dir.patch removed from -mm tree Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.