[PATCH 0/2] mm/damon: test and document power-of-2 min_region_sz requirement

0 views
Skip to first unread message

SeongJae Park

unread,
Mar 7, 2026, 2:42:28 PM (13 days ago) Mar 7
to Andrew Morton, SeongJae Park, Liam R. Howlett, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
Since commit c80f46ac228b ("mm/damon/core: disallow non-power of two
min_region_sz"), min_region_sz is always restricted to be a power of
two. Add a kunit test to confirm the functionality. Also, the change
adds a restriction to addr_unit parameter. Clarify it on the document.

SeongJae Park (2):
mm/damon/tests/core-kunit: add a test for damon_commit_ctx()
Docs/mm/damon/design: document the power-of-two limitation for
addr_unit

Documentation/mm/damon/design.rst | 2 ++
mm/damon/tests/core-kunit.h | 22 ++++++++++++++++++++++
2 files changed, 24 insertions(+)


base-commit: 4380f0b6370ead5000b8d155b25a86cb59d68c06
--
2.47.3

SeongJae Park

unread,
Mar 7, 2026, 2:42:29 PM (13 days ago) Mar 7
to Andrew Morton, SeongJae Park, Brendan Higgins, David Gow, da...@lists.linux.dev, kuni...@googlegroups.com, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
Add a kunit test for confirming the change that is made on commit
c80f46ac228b ("mm/damon/core: disallow non-power of two min_region_sz")
functions as expected.

Signed-off-by: SeongJae Park <s...@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 44a983fca9501..65181c6dac1b4 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -1060,6 +1060,27 @@ static void damon_test_commit_target_regions(struct kunit *test)
(unsigned long[][2]) {{3, 8}, {8, 10}}, 2);
}

+static void damon_test_commit_ctx(struct kunit *test)
+{
+ struct damon_ctx *src, *dst;
+
+ src = damon_new_ctx();
+ if (!src)
+ kunit_skip(test, "src alloc fail");
+ dst = damon_new_ctx();
+ if (!dst) {
+ damon_destroy_ctx(src);
+ kunit_skip(test, "dst alloc fail");
+ }
+ /* Only power of two min_region_sz is allowed. */
+ src->min_region_sz = 4096;
+ KUNIT_EXPECT_EQ(test, damon_commit_ctx(dst, src), 0);
+ src->min_region_sz = 4095;
+ KUNIT_EXPECT_EQ(test, damon_commit_ctx(dst, src), -EINVAL);
+ damon_destroy_ctx(src);
+ damon_destroy_ctx(dst);
+}
+
static void damos_test_filter_out(struct kunit *test)
{
struct damon_target *t;
@@ -1316,6 +1337,7 @@ static struct kunit_case damon_test_cases[] = {
KUNIT_CASE(damos_test_commit_pageout),
KUNIT_CASE(damos_test_commit_migrate_hot),
KUNIT_CASE(damon_test_commit_target_regions),
+ KUNIT_CASE(damon_test_commit_ctx),
KUNIT_CASE(damos_test_filter_out),
KUNIT_CASE(damon_test_feed_loop_next_input),
KUNIT_CASE(damon_test_set_filters_default_reject),
--
2.47.3
Reply all
Reply to author
Forward
0 new messages