summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2026-03-07 11:53:51 -0800
committerAndrew Morton <akpm@linux-foundation.org>2026-04-05 13:53:22 -0700
commit2a5f4454e00e630a3535b851fbe4f6e5d228cc5a (patch)
tree6e9cbd559c0c0fc7d37ed1f5d1bf16eb05db9f2b
parentfd83b0d1c49b7e52bdcd8704df04fdbae0c24194 (diff)
mm/damon/core: clarify damon_set_attrs() usages
damon_set_attrs() is called for multiple purposes from multiple places. Calling it in an unsafe context can make DAMON internal state polluted and results in unexpected behaviors. Clarify when it is safe, and where it is being called. Link: https://lkml.kernel.org/r/20260307195356.203753-4-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Acked-by: wang lian <lianux.mm@gmail.com> Cc: Brendan Higgins <brendan.higgins@linux.dev> Cc: David Gow <davidgow@google.com> Cc: David Hildenbrand <david@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes (Oracle) <ljs@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Shuah Khan <skhan@linuxfoundation.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/damon/core.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index db44294745e6..2d2332f3d377 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -751,8 +751,16 @@ static bool damon_valid_intervals_goal(struct damon_attrs *attrs)
* @ctx: monitoring context
* @attrs: monitoring attributes
*
- * This function should be called while the kdamond is not running, an access
- * check results aggregation is not ongoing (e.g., from damon_call().
+ * This function updates monitoring results and next monitoring/damos operation
+ * schedules. Because those are periodically updated by kdamond, this should
+ * be called from a safe contexts. Such contexts include damon_ctx setup time
+ * while the kdamond is not yet started, and inside of kdamond_fn().
+ *
+ * In detail, all DAMON API callers directly call this function for initial
+ * setup of damon_ctx before calling damon_start(). Some of the API callers
+ * also indirectly call this function via damon_call() -> damon_commit() for
+ * online parameters updates. Finally, kdamond_fn() itself use this for
+ * applying auto-tuned monitoring intervals.
*
* Every time interval is in micro-seconds.
*