mm-damon-core-update-probe-hits-for-new-parameter-commit.patch removed from -mm tree
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 <[email protected]>
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.
---
mm/damon/core.c | 28 +++++++++++++++++++++++++--- mm/damon/tests/core-kunit.h | 13 ++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-)
mm/damon/core.c renamed from mm/damon/core.c~mm-damon-core-update-probe-hits-for-new-parameter-commit +25 -3
@@ -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_resudamon_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); }/*
mm/damon/tests/core-kunit.h renamed from mm/damon/tests/core-kunit.h~mm-damon-core-update-probe-hits-for-new-parameter-commit +10 -3
@@ -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 [email protected] 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