[PATCH v4 0/2] mm/damon: fix the temporal goal tuner's size quota conversion

Donggeun Yoo posted 2 patches 1 day, 13 hours ago
mm/damon/core.c             |  2 +-
mm/damon/tests/core-kunit.h | 48 +++++++++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
[PATCH v4 0/2] mm/damon: fix the temporal goal tuner's size quota conversion
Posted by Donggeun Yoo 1 day, 13 hours ago
damos_goal_tune_esz_bp_temporal() hands the size quota to
damos_set_effective_quota() through quota->esz_bp in basis points, and
the multiply that gets it there is unchecked.  On 32-bit it wraps above
429496 bytes, and a wrapped product below 10000 divides to a zero
effective quota.  damos_quota_is_full() is then true on the first test
of every charge window, so the scheme makes no progress for as long as
the goal is unachieved.

Patch 1 bounds the conversion.  Patch 2 pins the boundary in the core
kunit suite, where the new test would fail without patch 1 on any word
size.

v2: https://lore.kernel.org/damon/20260920023111.2466265-1-donggeunyoo.kernel@gmail.com/
v3: https://lore.kernel.org/damon/20260920122411.610213-1-donggeunyoo.kernel@gmail.com/

v3 was posted before the discussion on v2 had finished.  My mistake;
this version was held until the thread settled.

Changes in v4, from SJ Park's review of v2; the code is unchanged:
- patch 1: drop the 256 MiB mention
- patch 1: say what the user sees before saying the setup is unlikely
- patch 1: cut the closing paragraph to "Bound the multiply."
- patch 2: unchanged, and carries the Reviewed-by

Rebased onto mm-new 8d29b5365d52.

DAMON kunit on x86_64: 39 tests, all passing with both patches; 38
passing and damos_test_esz_goal_temporal failing with patch 2 alone.

Donggeun Yoo (2):
  mm/damon/core: prevent size quota overflow in the temporal goal tuner
  mm/damon/tests/core-kunit: test the temporal tuner's size quota
    conversion

 mm/damon/core.c             |  2 +-
 mm/damon/tests/core-kunit.h | 48 +++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)

-- 
2.53.0
Re: [PATCH v4 0/2] mm/damon: fix the temporal goal tuner's size quota conversion
Posted by SJ Park 1 day, 7 hours ago
On Wed, 23 Sep 2026 09:25:57 +0900 Donggeun Yoo <donggeunyoo.kernel@gmail.com> wrote:

> damos_goal_tune_esz_bp_temporal() hands the size quota to
> damos_set_effective_quota() through quota->esz_bp in basis points, and
> the multiply that gets it there is unchecked.  On 32-bit it wraps above
> 429496 bytes, and a wrapped product below 10000 divides to a zero
> effective quota.  damos_quota_is_full() is then true on the first test
> of every charge window, so the scheme makes no progress for as long as
> the goal is unachieved.
> 
> Patch 1 bounds the conversion.  Patch 2 pins the boundary in the core
> kunit suite, where the new test would fail without patch 1 on any word
> size.
> 
> v2: https://lore.kernel.org/damon/20260920023111.2466265-1-donggeunyoo.kernel@gmail.com/
> v3: https://lore.kernel.org/damon/20260920122411.610213-1-donggeunyoo.kernel@gmail.com/
> 
> v3 was posted before the discussion on v2 had finished.  My mistake;
> this version was held until the thread settled.
> 
> Changes in v4, from SJ Park's review of v2; the code is unchanged:
> - patch 1: drop the 256 MiB mention
> - patch 1: say what the user sees before saying the setup is unlikely
> - patch 1: cut the closing paragraph to "Bound the multiply."
> - patch 2: unchanged, and carries the Reviewed-by

From next time, please add full changelog (changes in v3, v2).

Otherwise, looks good to me.  Thank you for finding and fixing the bug with the
test, Donggeun.

This series is applied to damon/next [1] tree.  If this patch is not added to
mm.git in short term (~1 week?), I will ask mm.git maintainer (Andrew Morton)
to pick this.  So, no action from your side is needed for now.  If it seems I
also forgot doing that or you cannot wait for my action, please feel free to
ping me or Andrew.

[1] https://origin.kernel.org/doc/html/latest/mm/damon/maintainer-profile.html#scm-trees


Thanks,
SJ

[...]