* [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs
@ 2026-07-29 3:37 SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 01/10] mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold SJ Park
` (9 more replies)
0 siblings, 10 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Liam R. Howlett, Andrew Morton, Brendan Higgins,
David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes,
Michal Hocko, Mike Rapoport, Shuah Khan, Shuah Khan,
Suren Baghdasaryan, Vlastimil Babka, damon, kunit-dev, linux-doc,
linux-kernel, linux-kselftest, linux-mm
Misc cleanup, improvements and updates of code, test, and documents.
Patches 1-3 cleanup DAMON code. Patches 4-8 adds kunit and selftest
test cases for recently fixed bugs and a new feature. Patches 9 and 10
update guidelines for AI review and what document to read, on DAMON
documents.
Changes from RFC
- RFC: https://lore.kernel.org/20260728052811.192712-1-sj@kernel.org
- Remove ctx parameter of __damon_va_init_regions().
- Fix damon_nr_samples_per_aggr() overflow kunit test.
- Rebase to the latest mm-new.
SJ Park (10):
mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold
mm/damon/core: remove debug messages
mm/damon/vaddr: remove a debug message
mm/damon/tests/core-kunit: extend set_regions() test for error case
mm/damon/tests/core-kunit: test <=0 size damon_set_regions() inputs
mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
mm/damon/tests/core-kunit: test damon_nr_samples_per_aggr()
selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
Docs/mm/damon/maintainer-profile: update AI review for Sashiko replies
Docs/ABI/damon: recommend subsystem doc instead of admin-guide
.../ABI/testing/sysfs-kernel-mm-damon | 2 +-
Documentation/mm/damon/maintainer-profile.rst | 19 ++----
mm/damon/core.c | 12 +---
mm/damon/tests/core-kunit.h | 65 ++++++++++++++++---
mm/damon/vaddr.c | 16 +----
tools/testing/selftests/damon/sysfs.sh | 1 +
6 files changed, 68 insertions(+), 47 deletions(-)
base-commit: bc87db7fa4d8d45745620150a9487efcb6ebbd51
--
2.47.3
^ permalink raw reply [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 01/10] mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 02/10] mm/damon/core: remove debug messages SJ Park
` (8 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, damon, linux-kernel, linux-mm
kdamond_merge_regions() open-codes max region merge threshold
calculation. What it does is fundamentally the same as
damon_nr_samples_per_aggr() but missing a few corner cases. The
unhandled corner cases should be rare and make only a negligible level
of monitoring results degradation. But having the inconsistency could
increase future maintenance burden. Use the dedicated function.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index f7c9b94b6436b..4169268d94416 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -3470,8 +3470,7 @@ static void kdamond_merge_regions(struct damon_ctx *c, unsigned int threshold,
unsigned int max_thres;
bool count_age = true;
- max_thres = c->attrs.aggr_interval /
- (c->attrs.sample_interval ? c->attrs.sample_interval : 1);
+ max_thres = damon_nr_samples_per_aggr(&c->attrs);
while (true) {
nr_regions = 0;
damon_for_each_target(t, c) {
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 02/10] mm/damon/core: remove debug messages
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 01/10] mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 03/10] mm/damon/vaddr: remove a debug message SJ Park
` (7 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, damon, linux-kernel, linux-mm
There are a few debug messages in DAMON core. Those have not really
been used in a meaningful way for the last few years, though. Remove
those.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/core.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 4169268d94416..1b0f12d17de3a 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -3693,10 +3693,6 @@ static unsigned long damos_wmark_wait_us(struct damos *scheme)
/* higher than high watermark or lower than low watermark */
if (metric > scheme->wmarks.high || scheme->wmarks.low > metric) {
- if (scheme->wmarks.activated)
- pr_debug("deactivate a scheme (%d) for %s wmark\n",
- scheme->action,
- str_high_low(metric > scheme->wmarks.high));
scheme->wmarks.activated = false;
return scheme->wmarks.interval;
}
@@ -3706,8 +3702,6 @@ static unsigned long damos_wmark_wait_us(struct damos *scheme)
!scheme->wmarks.activated)
return scheme->wmarks.interval;
- if (!scheme->wmarks.activated)
- pr_debug("activate a scheme (%d)\n", scheme->action);
scheme->wmarks.activated = true;
return 0;
}
@@ -3850,8 +3844,6 @@ static int kdamond_fn(void *data)
struct damon_ctx *ctx = data;
unsigned long sz_limit = 0;
- pr_debug("kdamond (%d) starts\n", current->pid);
-
mutex_lock(&ctx->call_controls_lock);
ctx->call_controls_obsolete = false;
mutex_unlock(&ctx->call_controls_lock);
@@ -4005,7 +3997,6 @@ static int kdamond_fn(void *data)
mutex_unlock(&ctx->walk_control_lock);
damos_walk_cancel(ctx);
- pr_debug("kdamond (%d) finishes\n", current->pid);
mutex_lock(&ctx->kdamond_lock);
ctx->kdamond = NULL;
mutex_unlock(&ctx->kdamond_lock);
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 03/10] mm/damon/vaddr: remove a debug message
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 01/10] mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 02/10] mm/damon/core: remove debug messages SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 04/10] mm/damon/tests/core-kunit: extend set_regions() test for error case SJ Park
` (6 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, damon, linux-kernel, linux-mm
There is a debug message in the DAMON virtual address space operation
set. It has not really been used in a meaningful way for the last few
years, though. Remove it.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/vaddr.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c
index 0648400b2d65b..1b220f6f2632b 100644
--- a/mm/damon/vaddr.c
+++ b/mm/damon/vaddr.c
@@ -189,22 +189,12 @@ static int damon_va_three_regions(struct damon_target *t,
* <BIG UNMAPPED REGION 2>
* <stack>
*/
-static void __damon_va_init_regions(struct damon_ctx *ctx,
- struct damon_target *t)
+static void __damon_va_init_regions(struct damon_target *t)
{
- struct damon_target *ti;
struct damon_addr_range regions[3];
- int tidx = 0;
- if (damon_va_three_regions(t, regions)) {
- damon_for_each_target(ti, ctx) {
- if (ti == t)
- break;
- tidx++;
- }
- pr_debug("Failed to get three regions of %dth target\n", tidx);
+ if (damon_va_three_regions(t, regions))
return;
- }
damon_set_regions(t, regions, 3, DAMON_MIN_REGION_SZ);
}
@@ -217,7 +207,7 @@ static void damon_va_init(struct damon_ctx *ctx)
damon_for_each_target(t, ctx) {
/* the user may set the target regions as they want */
if (!damon_nr_regions(t))
- __damon_va_init_regions(ctx, t);
+ __damon_va_init_regions(t);
}
}
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 04/10] mm/damon/tests/core-kunit: extend set_regions() test for error case
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (2 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 03/10] mm/damon/vaddr: remove a debug message SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 05/10] mm/damon/tests/core-kunit: test <=0 size damon_set_regions() inputs SJ Park
` (5 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, Brendan Higgins, David Gow, damon,
kunit-dev, linux-kernel, linux-kselftest, linux-mm
damon_test_set_regions_for() is designed to test only success-expected
damon_set_regions() calls. Extend it to cover error-expected calls,
too.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/tests/core-kunit.h | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 4a536d41cdb2d..befc1196d6d60 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -463,11 +463,12 @@ static void damon_test_set_regions_for(struct kunit *test,
struct damon_addr_range *old_ranges, int sz_old_ranges,
struct damon_addr_range *new_ranges, int sz_new_ranges,
unsigned long min_region_sz,
- struct damon_addr_range *expect_ranges, int sz_expect_ranges)
+ struct damon_addr_range *expect_ranges, int sz_expect_ranges,
+ int expect_err)
{
struct damon_target *t;
struct damon_region *r;
- int i;
+ int i, err;
t = damon_new_target();
if (!t)
@@ -481,7 +482,8 @@ static void damon_test_set_regions_for(struct kunit *test,
damon_add_region(r, t);
}
- damon_set_regions(t, new_ranges, sz_new_ranges, min_region_sz);
+ err = damon_set_regions(t, new_ranges, sz_new_ranges, min_region_sz);
+ KUNIT_EXPECT_EQ(test, err, expect_err);
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), sz_expect_ranges);
if (damon_nr_regions(t) != sz_expect_ranges) {
@@ -510,7 +512,7 @@ static void damon_test_set_regions(struct kunit *test)
(struct damon_addr_range[]){
{.start = 5, .end = 15},
{.start = 15, .end = 25},
- }, 2);
+ }, 2, 0);
/* Un-intersecting regions should be removed. */
damon_test_set_regions_for(test,
(struct damon_addr_range[]){
@@ -523,7 +525,7 @@ static void damon_test_set_regions(struct kunit *test)
1,
(struct damon_addr_range[]){
{.start = 18, .end = 23},
- }, 1);
+ }, 1, 0);
/*
* Holes should be filled up with new regions.
*
@@ -544,7 +546,7 @@ static void damon_test_set_regions(struct kunit *test)
{.start = 8, .end = 16},
{.start = 16, .end = 24},
{.start = 24, .end = 28},
- }, 3);
+ }, 3, 0);
/*
* New regions should be able to be appended.
*
@@ -566,7 +568,7 @@ static void damon_test_set_regions(struct kunit *test)
{.start = 0, .end = 4},
{.start = 4, .end = 15},
{.start = 25, .end = 40},
- }, 3);
+ }, 3, 0);
/*
* New regions should be able to be inserted.
*
@@ -589,7 +591,7 @@ static void damon_test_set_regions(struct kunit *test)
{.start = 0, .end = 15},
{.start = 25, .end = 40},
{.start = 44, .end = 50},
- }, 3);
+ }, 3, 0);
}
static void damon_test_update_monitoring_result(struct kunit *test)
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 05/10] mm/damon/tests/core-kunit: test <=0 size damon_set_regions() inputs
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (3 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 04/10] mm/damon/tests/core-kunit: extend set_regions() test for error case SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() SJ Park
` (4 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, Brendan Higgins, David Gow, damon,
kunit-dev, linux-kernel, linux-kselftest, linux-mm
Commit 1292c0ecb1ca ("mm/damon/core: validate ranges in
damon_set_regions()") disallowed passing zero or negative size input
ranges to damon_set_regions(). Add kunit test cases for those inputs.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/tests/core-kunit.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index befc1196d6d60..ac15393a7935b 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -592,6 +592,20 @@ static void damon_test_set_regions(struct kunit *test)
{.start = 25, .end = 40},
{.start = 44, .end = 50},
}, 3, 0);
+ /* Zero size regions should return -EINVAL. */
+ damon_test_set_regions_for(test,
+ (struct damon_addr_range[]){}, 0,
+ (struct damon_addr_range[]){
+ {.start = 42, .end = 42},
+ }, 1, 1,
+ (struct damon_addr_range[]){}, 0, -EINVAL);
+ /* Negative size regions should return -EINVAL. */
+ damon_test_set_regions_for(test,
+ (struct damon_addr_range[]){}, 0,
+ (struct damon_addr_range[]){
+ {.start = 42, .end = 21},
+ }, 1, 1,
+ (struct damon_addr_range[]){}, 0, -EINVAL);
}
static void damon_test_update_monitoring_result(struct kunit *test)
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (4 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 05/10] mm/damon/tests/core-kunit: test <=0 size damon_set_regions() inputs SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:48 ` sashiko-bot
2026-07-29 3:37 ` [RFC PATCH v1.1 07/10] mm/damon/tests/core-kunit: test damon_nr_samples_per_aggr() SJ Park
` (3 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, Brendan Higgins, David Gow, damon,
kunit-dev, linux-kernel, linux-kselftest, linux-mm
Commit 954157679ec3 ("mm/damon/core: disallow overlapping input ranges
for damon_set_regions()") disallowed passing overlapping input ranges to
damon_set_regions(). Add a kunit test case for the overlapping input.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/tests/core-kunit.h | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index ac15393a7935b..3041b8288ec26 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -606,6 +606,17 @@ static void damon_test_set_regions(struct kunit *test)
{.start = 42, .end = 21},
}, 1, 1,
(struct damon_addr_range[]){}, 0, -EINVAL);
+ /*
+ * Regions resulting in same region after alingment should return
+ * -EINVAL.
+ */
+ damon_test_set_regions_for(test,
+ (struct damon_addr_range[]){}, 0,
+ (struct damon_addr_range[]){
+ {.start = 10, .end = 20},
+ {.start = 20, .end = 30},
+ }, 2, 4096,
+ (struct damon_addr_range[]){}, 0, -EINVAL);
}
static void damon_test_update_monitoring_result(struct kunit *test)
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 07/10] mm/damon/tests/core-kunit: test damon_nr_samples_per_aggr()
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (5 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal SJ Park
` (2 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Andrew Morton, Brendan Higgins, David Gow, damon,
kunit-dev, linux-kernel, linux-kselftest, linux-mm
damon_max_nr_accesses(), which is a previous version of
damon_nr_samples_per_aggr() before the renaming, was wrongly returning
zero or random overflowed values for extreme intervals setup. Commit
35d4a3cf70a8 ("mm/damon/ops-common: handle extreme intervals in
damon_hot_score()") updated the function to return correct or more valid
values. Add a kunit test to ensure it is working as expected.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/tests/core-kunit.h | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 3041b8288ec26..0a1882ce6a081 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -619,6 +619,27 @@ static void damon_test_set_regions(struct kunit *test)
(struct damon_addr_range[]){}, 0, -EINVAL);
}
+static void damon_test_nr_samples_per_aggr(struct kunit *test)
+{
+ struct damon_attrs attrs = {
+ .sample_interval = 0,
+ .aggr_interval = 0,
+ };
+
+ /* Zero aggregation interval doesn't cause division by zero */
+ KUNIT_EXPECT_EQ(test, damon_nr_samples_per_aggr(&attrs), 1);
+
+ /*
+ * Too large aggregation interval on 64 bit system doesn't cause
+ * overflow
+ */
+ if (ULONG_MAX > UINT_MAX) {
+ attrs.aggr_interval = (unsigned long)UINT_MAX + 1;
+ KUNIT_EXPECT_EQ(test, damon_nr_samples_per_aggr(&attrs),
+ UINT_MAX);
+ }
+}
+
static void damon_test_update_monitoring_result(struct kunit *test)
{
struct damon_attrs old_attrs = {
@@ -1670,6 +1691,7 @@ static struct kunit_case damon_test_cases[] = {
KUNIT_CASE(damon_test_split_above_half_progresses),
KUNIT_CASE(damon_test_ops_registration),
KUNIT_CASE(damon_test_set_regions),
+ KUNIT_CASE(damon_test_nr_samples_per_aggr),
KUNIT_CASE(damon_test_update_monitoring_result),
KUNIT_CASE(damon_test_set_attrs),
KUNIT_CASE(damon_test_mvsum),
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (6 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 07/10] mm/damon/tests/core-kunit: test damon_nr_samples_per_aggr() SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:45 ` sashiko-bot
2026-07-29 3:37 ` [RFC PATCH v1.1 09/10] Docs/mm/damon/maintainer-profile: update AI review for Sashiko replies SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 10/10] Docs/ABI/damon: recommend subsystem doc instead of admin-guide SJ Park
9 siblings, 1 reply; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Shuah Khan, damon, linux-kernel, linux-kselftest,
linux-mm
DAMON sysfs quota goal target_metric file now accepts 'hugepage_mem_bp'
input. Test it is accepted in fundamental DAMON sysfs file operation
selftest.
Signed-off-by: SJ Park <sj@kernel.org>
---
tools/testing/selftests/damon/sysfs.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftests/damon/sysfs.sh
index ddebde6edabe4..b66593c9ac471 100755
--- a/tools/testing/selftests/damon/sysfs.sh
+++ b/tools/testing/selftests/damon/sysfs.sh
@@ -210,6 +210,7 @@ test_goal()
ensure_write_succ "$fpath" "active_mem_bp" "valid input"
ensure_write_succ "$fpath" "inactive_mem_bp" "valid input"
ensure_write_succ "$fpath" "node_eligible_mem_bp" "valid input"
+ ensure_write_succ "$fpath" "hugepage_mem_bp" "valid input"
ensure_write_fail "$fpath" "foo" "invalid input"
ensure_file "$goal_dir/nid" "exist" "600"
ensure_file "$goal_dir/path" "exist" "600"
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 09/10] Docs/mm/damon/maintainer-profile: update AI review for Sashiko replies
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (7 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal SJ Park
@ 2026-07-29 3:37 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 10/10] Docs/ABI/damon: recommend subsystem doc instead of admin-guide SJ Park
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Liam R. Howlett, Andrew Morton, David Hildenbrand,
Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport,
Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, damon, linux-doc,
linux-kernel, linux-mm
In the past, sharing Sashiko review results was tedious. Also it was
suggested to minimize the recipients on the sharing mails. Hence the AI
review section of DAMON maintainer profile document was updated to give
guidance about available tools for making the sharing easier, and how
the recipients list should be managed.
Now DAMON is onboarded [1] to Sashiko's automatic review replies
feature. Sashiko directly sends its reviews as replies to the patch
mail thread. It also reduces the recipients list to deliver the
reporting to only the author and the mailing list.
Remove the old guidance that is no more necessary but only confusing.
[1] https://github.com/sashiko-dev/sashiko/commit/b554c7b6e733
Signed-off-by: SJ Park <sj@kernel.org>
---
Documentation/mm/damon/maintainer-profile.rst | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/Documentation/mm/damon/maintainer-profile.rst b/Documentation/mm/damon/maintainer-profile.rst
index fb2fa00cc9aa1..a7c1352339378 100644
--- a/Documentation/mm/damon/maintainer-profile.rst
+++ b/Documentation/mm/damon/maintainer-profile.rst
@@ -106,18 +106,9 @@ AI Review
For patches that are publicly posted to DAMON mailing list
(damon@lists.linux.dev), AI reviews of the patches will be available at
-sashiko.dev. The reviews could also be sent as mails to the author of the
-patch.
-
-Patch authors are encouraged to check the AI reviews and share their opinions.
-The sharing could be done as a reply to the mail thread. Consider reducing the
-recipients list for such sharing, since some people are not really interested
-in AI reviews. As a rule of thumb, drop stable@vger.kernel.org and individuals
-except DAMON maintainer.
-
-`hkml` also provides a `feature
-<https://github.com/sjp38/hackermail/blob/master/USAGE.md#forwarding-sashikodev-statuscomments-to-mailing-list>`_
-for such sharing. Please feel free to use the feature.
+sashiko.dev. The reviews will also be sent as replies to the author of the
+patch and the mailing list.
-It is only an optional recommendation. DAMON maintainer could also ask any
-question about the AI reviews, though.
+Patch authors are encouraged to check the AI reviews and share their opinions
+by replying on the mail thread. It is only an optional recommendation. DAMON
+maintainer could also ask any question about the AI reviews, though.
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC PATCH v1.1 10/10] Docs/ABI/damon: recommend subsystem doc instead of admin-guide
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
` (8 preceding siblings ...)
2026-07-29 3:37 ` [RFC PATCH v1.1 09/10] Docs/mm/damon/maintainer-profile: update AI review for Sashiko replies SJ Park
@ 2026-07-29 3:37 ` SJ Park
9 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:37 UTC (permalink / raw)
Cc: SJ Park, Liam R. Howlett, Andrew Morton, David Hildenbrand,
Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan,
Vlastimil Babka, damon, linux-kernel, linux-mm
DAMON ABI doc is recommending DAMON admin-guide for people who are
willing to know further about DAMON. Nowadays the subsystem doc
(Documentation/mm/damon) is a more recommended place for even beginners.
Recommend the subsystem doc over admin-guide.
Signed-off-by: SJ Park <sj@kernel.org>
---
Documentation/ABI/testing/sysfs-kernel-mm-damon | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-damon b/Documentation/ABI/testing/sysfs-kernel-mm-damon
index f8d2601e82904..ad21f58f3c912 100644
--- a/Documentation/ABI/testing/sysfs-kernel-mm-damon
+++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon
@@ -3,7 +3,7 @@ Date: Mar 2022
Contact: SJ Park <sj@kernel.org>
Description: Interface for Data Access MONitoring (DAMON). Contains files
for controlling DAMON. For more details on DAMON itself,
- please refer to Documentation/admin-guide/mm/damon/index.rst.
+ please refer to Documentation/mm/damon/index.rst.
What: /sys/kernel/mm/damon/admin/
Date: Mar 2022
--
2.47.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
2026-07-29 3:37 ` [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal SJ Park
@ 2026-07-29 3:45 ` sashiko-bot
2026-07-29 3:57 ` SJ Park
0 siblings, 1 reply; 15+ messages in thread
From: sashiko-bot @ 2026-07-29 3:45 UTC (permalink / raw)
To: SJ Park; +Cc: damon
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The selftest script expects the kernel to accept the 'hugepage_mem_bp' metric for the DAMON sysfs quota goal, but the corresponding kernel feature implementation is missing from this patch series. Writing this value to the `target_metric` sysfs file will return `-EINVAL`, causing the test to unconditionally fail and exit.
--
--- Patch [8]: [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal ---
commit 6c11ff9f30e87caf7ac58e12f507a641d985aebc
Author: SJ Park <sj@kernel.org>
selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
This commit updates the DAMON sysfs selftest to verify that the quota goal
target_metric file accepts the new hugepage_mem_bp input.
> diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftests/damon/sysfs.sh
> index f7fb94b84e716..8690aef1e436c 100755
> --- a/tools/testing/selftests/damon/sysfs.sh
> +++ b/tools/testing/selftests/damon/sysfs.sh
> @@ -210,6 +210,7 @@ test_goal()
> ensure_write_succ "$fpath" "active_mem_bp" "valid input"
> ensure_write_succ "$fpath" "inactive_mem_bp" "valid input"
> ensure_write_succ "$fpath" "node_eligible_mem_bp" "valid input"
> + ensure_write_succ "$fpath" "hugepage_mem_bp" "valid input"
[Severity: Medium]
Will this test reliably fail because the kernel implementation for the
hugepage_mem_bp metric is missing from this patch series?
If the corresponding kernel feature isn't included, writing this value
to the target_metric sysfs file in test_goal() will return -EINVAL. This
would cause ensure_write_succ() to unconditionally fail and abort the
selftest.
> ensure_write_fail "$fpath" "foo" "invalid input"
> ensure_file "$goal_dir/nid" "exist" "600"
> ensure_file "$goal_dir/path" "exist" "600"
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260729033751.131213-1-sj@kernel.org?part=8
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
2026-07-29 3:37 ` [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() SJ Park
@ 2026-07-29 3:48 ` sashiko-bot
2026-07-29 3:56 ` SJ Park
0 siblings, 1 reply; 15+ messages in thread
From: sashiko-bot @ 2026-07-29 3:48 UTC (permalink / raw)
To: SJ Park; +Cc: damon
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Typo in comment: 'alingment' should be 'alignment'.
--
--- Patch [6]: [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() ---
commit 696ade5451511d51ec415451a2df25bef4d15e9d
Author: SJ Park <sj@kernel.org>
mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
This commit adds a kunit test case to verify that passing overlapping input
ranges to damon_set_regions() is properly disallowed.
> diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
> index ac15393a7935b..3041b8288ec26 100644
> --- a/mm/damon/tests/core-kunit.h
> +++ b/mm/damon/tests/core-kunit.h
> @@ -606,6 +606,17 @@ static void damon_test_set_regions(struct kunit *test)
> {.start = 42, .end = 21},
> }, 1, 1,
> (struct damon_addr_range[]){}, 0, -EINVAL);
> + /*
> + * Regions resulting in same region after alingment should return
^^^^^^^^^
[Severity: Low]
This isn't a bug, but there is a typo here (alingment instead of alignment).
> + * -EINVAL.
> + */
> + damon_test_set_regions_for(test,
> + (struct damon_addr_range[]){}, 0,
> + (struct damon_addr_range[]){
> + {.start = 10, .end = 20},
> + {.start = 20, .end = 30},
> + }, 2, 4096,
> + (struct damon_addr_range[]){}, 0, -EINVAL);
> }
>
> static void damon_test_update_monitoring_result(struct kunit *test)
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260729033751.131213-1-sj@kernel.org?part=6
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
2026-07-29 3:48 ` sashiko-bot
@ 2026-07-29 3:56 ` SJ Park
0 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:56 UTC (permalink / raw)
To: sashiko-bot; +Cc: SJ Park, damon
On Wed, 29 Jul 2026 03:48:22 +0000 sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Low] Typo in comment: 'alingment' should be 'alignment'.
> --
>
> --- Patch [6]: [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() ---
> commit 696ade5451511d51ec415451a2df25bef4d15e9d
> Author: SJ Park <sj@kernel.org>
>
> mm/damon/tests/core-kunit: test overlapping ranges for set_regions()
>
> This commit adds a kunit test case to verify that passing overlapping input
> ranges to damon_set_regions() is properly disallowed.
>
> > diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
> > index ac15393a7935b..3041b8288ec26 100644
> > --- a/mm/damon/tests/core-kunit.h
> > +++ b/mm/damon/tests/core-kunit.h
> > @@ -606,6 +606,17 @@ static void damon_test_set_regions(struct kunit *test)
> > {.start = 42, .end = 21},
> > }, 1, 1,
> > (struct damon_addr_range[]){}, 0, -EINVAL);
> > + /*
> > + * Regions resulting in same region after alingment should return
> ^^^^^^^^^
>
> [Severity: Low]
> This isn't a bug, but there is a typo here (alingment instead of alignment).
Thank you, I will fix.
>
> > + * -EINVAL.
> > + */
> > + damon_test_set_regions_for(test,
> > + (struct damon_addr_range[]){}, 0,
> > + (struct damon_addr_range[]){
> > + {.start = 10, .end = 20},
> > + {.start = 20, .end = 30},
> > + }, 2, 4096,
> > + (struct damon_addr_range[]){}, 0, -EINVAL);
> > }
> >
> > static void damon_test_update_monitoring_result(struct kunit *test)
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260729033751.131213-1-sj@kernel.org?part=6
Thanks,
SJ
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
2026-07-29 3:45 ` sashiko-bot
@ 2026-07-29 3:57 ` SJ Park
0 siblings, 0 replies; 15+ messages in thread
From: SJ Park @ 2026-07-29 3:57 UTC (permalink / raw)
To: sashiko-bot; +Cc: SJ Park, damon
On Wed, 29 Jul 2026 03:45:05 +0000 sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The selftest script expects the kernel to accept the 'hugepage_mem_bp' metric for the DAMON sysfs quota goal, but the corresponding kernel feature implementation is missing from this patch series. Writing this value to the `target_metric` sysfs file will return `-EINVAL`, causing the test to unconditionally fail and exit.
> --
>
> --- Patch [8]: [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal ---
> commit 6c11ff9f30e87caf7ac58e12f507a641d985aebc
> Author: SJ Park <sj@kernel.org>
>
> selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal
>
> This commit updates the DAMON sysfs selftest to verify that the quota goal
> target_metric file accepts the new hugepage_mem_bp input.
>
> > diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftests/damon/sysfs.sh
> > index f7fb94b84e716..8690aef1e436c 100755
> > --- a/tools/testing/selftests/damon/sysfs.sh
> > +++ b/tools/testing/selftests/damon/sysfs.sh
> > @@ -210,6 +210,7 @@ test_goal()
> > ensure_write_succ "$fpath" "active_mem_bp" "valid input"
> > ensure_write_succ "$fpath" "inactive_mem_bp" "valid input"
> > ensure_write_succ "$fpath" "node_eligible_mem_bp" "valid input"
> > + ensure_write_succ "$fpath" "hugepage_mem_bp" "valid input"
>
> [Severity: Medium]
> Will this test reliably fail because the kernel implementation for the
> hugepage_mem_bp metric is missing from this patch series?
>
> If the corresponding kernel feature isn't included, writing this value
> to the target_metric sysfs file in test_goal() will return -EINVAL. This
> would cause ensure_write_succ() to unconditionally fail and abort the
> selftest.
This patch will drop RFC tag only after the hugepage_mem_bp implementation is
merged into mm.git.
>
> > ensure_write_fail "$fpath" "foo" "invalid input"
> > ensure_file "$goal_dir/nid" "exist" "600"
> > ensure_file "$goal_dir/path" "exist" "600"
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260729033751.131213-1-sj@kernel.org?part=8
Thanks,
SJ
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2026-07-29 3:57 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29 3:37 [RFC PATCH v1.1 00/10] mm/damon: cleanup code, add test cases, and update guidances in docs SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 01/10] mm/damon/core: use damon_nr_samples_per_aggr() for max merge threshold SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 02/10] mm/damon/core: remove debug messages SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 03/10] mm/damon/vaddr: remove a debug message SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 04/10] mm/damon/tests/core-kunit: extend set_regions() test for error case SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 05/10] mm/damon/tests/core-kunit: test <=0 size damon_set_regions() inputs SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 06/10] mm/damon/tests/core-kunit: test overlapping ranges for set_regions() SJ Park
2026-07-29 3:48 ` sashiko-bot
2026-07-29 3:56 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 07/10] mm/damon/tests/core-kunit: test damon_nr_samples_per_aggr() SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 08/10] selftests/damon/sysfs.sh: test hugepage_mem_bp quota goal SJ Park
2026-07-29 3:45 ` sashiko-bot
2026-07-29 3:57 ` SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 09/10] Docs/mm/damon/maintainer-profile: update AI review for Sashiko replies SJ Park
2026-07-29 3:37 ` [RFC PATCH v1.1 10/10] Docs/ABI/damon: recommend subsystem doc instead of admin-guide SJ Park
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox