* [merged mm-stable] mm-damon-core-update-probe-hits-for-new-parameter-commit.patch removed from -mm tree
@ 2026-08-05 2:24 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-08-05 2:24 UTC (permalink / raw)
To: mm-commits, sj, akpm
The quilt patch titled
Subject: mm/damon/core: update probe hits for new parameter commit
has been removed from the -mm tree. Its filename was
mm-damon-core-update-probe-hits-for-new-parameter-commit.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: SJ Park <sj@kernel.org>
Subject: mm/damon/core: update probe hits for new parameter commit
Date: Wed, 8 Jul 2026 06:53:56 -0700
Users can update DAMON parameters at runtime. If the samples and/or
aggregation intervals are updated in this way, monitoring results
depending on the intervals should also be updated for a more accurate
snapshot. The age and nr_accesses are properly updated, while probe_hits
are not updated in the way. Do the update.
Link: https://lore.kernel.org/20260708135359.122587-7-sj@kernel.org
Signed-off-by: SJ Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/damon/core.c | 28 +++++++++++++++++++++++++---
mm/damon/tests/core-kunit.h | 13 ++++++++++---
2 files changed, 35 insertions(+), 6 deletions(-)
--- a/mm/damon/core.c~mm-damon-core-update-probe-hits-for-new-parameter-commit
+++ a/mm/damon/core.c
@@ -897,10 +897,32 @@ static unsigned int damon_nr_samples_for
damon_sample_count_to_bp(nr, old_attrs), new_attrs);
}
+static void damon_update_probe_hits(struct damon_region *r,
+ struct damon_attrs *old_attrs, struct damon_attrs *new_attrs,
+ bool aggregating, struct damon_ctx *ctx)
+{
+ struct damon_probe *p;
+ int i = 0;
+
+ damon_for_each_probe(p, ctx) {
+ r->last_probe_hits[i] = damon_nr_samples_for_new_attrs(
+ r->last_probe_hits[i], old_attrs, new_attrs);
+ if (!aggregating)
+ r->probe_hits[i] = damon_nr_samples_for_new_attrs(
+ r->probe_hits[i], old_attrs,
+ new_attrs);
+ else
+ r->probe_hits[i] = 0;
+ i++;
+ }
+}
+
static void damon_update_monitoring_result(struct damon_region *r,
struct damon_attrs *old_attrs, struct damon_attrs *new_attrs,
- bool aggregating)
+ bool aggregating, struct damon_ctx *ctx)
{
+ damon_update_probe_hits(r, old_attrs, new_attrs, aggregating, ctx);
+
r->last_nr_accesses = damon_nr_samples_for_new_attrs(
r->last_nr_accesses, old_attrs, new_attrs);
if (!aggregating)
@@ -940,8 +962,8 @@ static void damon_update_monitoring_resu
damon_for_each_target(t, ctx)
damon_for_each_region(r, t)
- damon_update_monitoring_result(
- r, old_attrs, new_attrs, aggregating);
+ damon_update_monitoring_result(r, old_attrs, new_attrs,
+ aggregating, ctx);
}
/*
--- a/mm/damon/tests/core-kunit.h~mm-damon-core-update-probe-hits-for-new-parameter-commit
+++ a/mm/damon/tests/core-kunit.h
@@ -581,32 +581,39 @@ static void damon_test_update_monitoring
.sample_interval = 10, .aggr_interval = 1000,};
struct damon_attrs new_attrs;
struct damon_region *r = damon_new_region(3, 7);
+ struct damon_ctx *ctx;
if (!r)
kunit_skip(test, "region alloc fail");
+ ctx = damon_new_ctx();
+ if (!ctx) {
+ damon_free_region(r);
+ kunit_skip(test, "ctx alloc fail");
+ }
r->nr_accesses = 15;
r->age = 20;
new_attrs = (struct damon_attrs){
.sample_interval = 100, .aggr_interval = 10000,};
- damon_update_monitoring_result(r, &old_attrs, &new_attrs, false);
+ damon_update_monitoring_result(r, &old_attrs, &new_attrs, false, ctx);
KUNIT_EXPECT_EQ(test, r->nr_accesses, 15);
KUNIT_EXPECT_EQ(test, r->age, 2);
new_attrs = (struct damon_attrs){
.sample_interval = 1, .aggr_interval = 1000};
- damon_update_monitoring_result(r, &old_attrs, &new_attrs, false);
+ damon_update_monitoring_result(r, &old_attrs, &new_attrs, false, ctx);
KUNIT_EXPECT_EQ(test, r->nr_accesses, 150);
KUNIT_EXPECT_EQ(test, r->age, 2);
new_attrs = (struct damon_attrs){
.sample_interval = 1, .aggr_interval = 100};
- damon_update_monitoring_result(r, &old_attrs, &new_attrs, false);
+ damon_update_monitoring_result(r, &old_attrs, &new_attrs, false, ctx);
KUNIT_EXPECT_EQ(test, r->nr_accesses, 150);
KUNIT_EXPECT_EQ(test, r->age, 20);
damon_free_region(r);
+ damon_destroy_ctx(ctx);
}
static void damon_test_set_attrs(struct kunit *test)
_
Patches currently in -mm which might be from sj@kernel.org are
mm-damon-adjust-isolated-pages-stat-for-damos_migrate_hotcold.patch
samples-damon-mtier-error-out-for-zero-quota-goal-target-values.patch
mm-damon-lru_sort-error-out-for-10000-active_mem_bp.patch
mm-damon-reclaim-skip-damon_call-if-ctx-has-not-started.patch
mm-damon-lru_sort-skip-damon_call-if-ctx-has-not-started.patch
mm-damon-core-skip-aging-from-repeated-aggressive-merging.patch
mm-damon-core-hide-private-damon_region-fields.patch
mm-damon-core-hide-private-damon_target-fields.patch
mm-damon-core-hide-private-damos_quota_goal-fields.patch
mm-damon-core-hide-private-damos_quota-fields.patch
mm-damon-core-hide-private-damos_filter-fields.patch
mm-damon-core-hide-private-damos-fields.patch
mm-damon-core-hide-private-damon_filter-fields.patch
mm-damon-core-hide-private-damon_probe-fields.patch
mm-damon-sysfs-do-not-directly-access-damon_ctx-ops.patch
mm-damon-core-hide-core-private-damon_ctx-fields.patch
mm-damon-core-avoid-infinite-kdamond_merge_regions-internal-loop.patch
mm-damon-tests-core-kunit-catch-test-failure-in-test_merge_regions_of.patch
mm-damon-vaddr-drop-last-same-folio-access-check-optimization.patch
mm-damon-paddr-drop-last-same-folio-access-check-reuse-optimization.patch
mm-damon-sysfs-read-addr_unit-only-once-in-damon_sysfs_apply_inputs.patch
mm-damon-sysfs-read-ops_id-only-once-in-damon_sysfs_apply_inputs.patch
mm-damon-core-initialize-damos-last_applied.patch
mm-damon-core-kunit-check-region-count-before-testing-in-split_at.patch
mm-damon-vaddr-kunit-check-region-count-in-three_regions-test.patch
mm-damon-core-kunit-handle-region-split-failure-in-filter_out.patch
mm-damon-core-kunit-skip-wrong-dest-walk-in-commit_dests_for.patch
mm-damon-core-kunit-skip-wrong-quota-goal-walk-in-commit_quota_goals.patch
mm-damon-core-kunit-skip-wrong-region-walk-in-commit_target_regions.patch
mm-damon-ops-common-use-nr_accesses-moving-sum-for-quota-score.patch
mm-damon-core-handle-region-split-failure-in-apply_min_nr_regions.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-05 2:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-05 2:24 [merged mm-stable] mm-damon-core-update-probe-hits-for-new-parameter-commit.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.