From nobody Mon Sep 28 20:05:58 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1BDF22580F3 for ; Tue, 18 Aug 2026 03:46:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024777; cv=none; b=XnV+7NFosuOScsQBwhuPc0rnBYALZKi9aUvb2ULO6RLLz1qRQfzcCXsmkZaLhFjjtoor+RztB7/Y/1j2OGqBihZaqCq17xO1Iq0NXPP35xnWJYzTxEQBBNy34EnjMdDwCq6XGvK6SxxOqlY7CBDe+qkmHFq16CBgVjRHpdsL1Nk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024777; c=relaxed/simple; bh=kYC4QQqxDYM8I4uPfjXO9ISGQ4PSqpAyELi/rWAaDJw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iKYB5tCaHYNng4O5L1tTjh+WDJqwUS5ARlYeGBzL6CjmHITEg7cEY2SUxybsiw0JIp61olXMOScrqmJmwxA8o/T9wrw/S+XMsFnS6qMl+XJZueRurPQnN8Jl9tWt9qR7Q6ab0As6Hd+kYs6FZb64i89DQMZe58wO/CDbNhdFDsQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ucla.edu; spf=pass smtp.mailfrom=g.ucla.edu; dkim=pass (2048-bit key) header.d=g-ucla-edu.20251104.gappssmtp.com header.i=@g-ucla-edu.20251104.gappssmtp.com header.b=Xuda+yVg; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ucla.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=g.ucla.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=g-ucla-edu.20251104.gappssmtp.com header.i=@g-ucla-edu.20251104.gappssmtp.com header.b="Xuda+yVg" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2ccf2360620so40311235ad.3 for ; Mon, 17 Aug 2026 20:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=g-ucla-edu.20251104.gappssmtp.com; s=20251104; t=1787024775; x=1787629575; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lcV78j2ZP/Yix6CCbssJ5cpLVJY9XnuazqlvUAmQ51E=; b=Xuda+yVgmSf+HxbtcG4sRUh/TGQr2LbWIUI4mSsTKz9zCV1x9Md6KYgI96t/og6p58 QE4Qbn7o8WbOQSqIBr4EBjEN0WdHUi9b8vH4dSoR9DUvDEV6Z/n2YKVxjOY+V+LMXDjA AVHDFWNrJck34gh8Ma1qbbUTHo+BItx8tKXcGgRfNXVshBRdeGE97mzm8FvJ8BpWWa9d /gtFdVUZm7fA5iE33Ws5m8SScQxHXc7OPnNkQCa38vLva18W6LUH5QUyDOUurF9xHCYD YIMp2XvID96bxS76vE35ml7tve+wSPh2JaD1KSXqflUXylbnXUq7TdJi8Sob0kE8TYDU 89hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787024775; x=1787629575; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=lcV78j2ZP/Yix6CCbssJ5cpLVJY9XnuazqlvUAmQ51E=; b=YspCT+4buQNXqlK473zNTam0xF2sbHe/ce+2zNT2mnjnm2LHKm7UD62fIF873Y8aX0 w0wMqZAV7pn7W5zJ8hmOxVI02HdcEnsNbnp0UpyVx64nUejI+/Tv5pwTMSc6v5rgWVaz SkhmvgJFDffLxSeIVhEbB5fZPEF/aOwE2c35FoXHAuBWvWgyEG0Lf1acryHM2OLT8lbi e2w2CJVONrYFMjQ3PlZVBBaOYgG67fJrNA7GQ6qtYwxQTJpQ++AzwILewBeaKflVUpSX RuJJvlT1RhnHZ/juTvH4rjiGNnZgrTUxzU+I0v7htk8gIW+F29N5Vr00hqOxOZEoinKk 0JFw== X-Forwarded-Encrypted: i=1; AHgh+Rq99nzyWT4qHyA0O31OaZeFY66H7fjKPtOqlCuj30sBtZXZBbAEMsp59At9SMhD8WYrtpHqq1uVd0g9J6M=@vger.kernel.org X-Gm-Message-State: AOJu0Yxa50Pd1eX9HVHEwmLlFXL0UL/H712EPrpvC4xMb1RGOi60e7wo P1AbdUqojCx2KxfHOQtPIqmabbGLEc6TZ7L/i/C0I8+gnHUtXF7DFZywDOF/xXN7Nqg= X-Gm-Gg: AR+sD107/7FjX+N1lAA+KRoLC0zz1nxn+fLPAOw4j5wNmjl+mXM3saPxk8ph7c/JHW0 IDsG9vE8eyt4MUDszcNareR2T1uc/1lMRHGHj7Rf4ALszjrgyurYwNIp8GnHR8tFie/YJh2UcXW b8a57wX/ErMHZI014AejnIoh6n6Lv6KWx3EmRsQn43eEqpKJO+s12TuVEIjAGYT6lnur8nb1rrC 6Q+QKyExUyYw5i30uPJfXy6o3mwVWneUkuUFjIs1MVVwI82bEvMCDZ4j+pb8XTbkIM7yZYfWqCM sLVvnHy4xEu7J941hmUwQ1rRpZdG3vdKJnzfg0mN2nSb4Wdmgqha3ZFymWQHLr9TbHKG1itX44f klt/33/PTgn14Kol8WEYLIJFnUYznygctDHvnIjGkkSjiJCXejGwybtHtqs5R1WQfaYri/JREvl JB4r7jFFDbkn0gdeTgHUwt94r93q8m9lyeiI0Nplw+0nAAUoVGfAx9G6c0w+/nVUNjL9eNzX1MY k+ZSmHmEO3GpJPC X-Received: by 2002:a17:902:e950:b0:2d3:a6db:299 with SMTP id d9443c01a7336-2d3b0c312b7mr344343175ad.6.1787024775405; Mon, 17 Aug 2026 20:46:15 -0700 (PDT) Received: from damon-kunit-dev.tailb106f5.ts.net ([73.93.135.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3267be8e35bsm11453293eec.14.2026.08.17.20.46.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 20:46:14 -0700 (PDT) From: Jason Angelov To: sj@kernel.org, akpm@linux-foundation.org Cc: shu17az@gmail.com, jiayuan.chen@shopee.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Jason Angelov Subject: [PATCH 1/2] mm/damon/core-kunit: test probe_hits handling at region split and merge Date: Tue, 18 Aug 2026 03:45:51 +0000 Message-ID: <20260818034552.11975-2-jasonangelov@ucla.edu> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818034552.11975-1-jasonangelov@ucla.edu> References: <20260818034552.11975-1-jasonangelov@ucla.edu> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" damon_split_region_at() copies probe_hits[] and last_probe_hits[] to the new split region. damon_merge_two_regions() sets probe_hits[] to the size-weighted average of the merged regions. Extend damon_test_split_at() and damon_test_merge_two() tests to cover those fields. Signed-off-by: Jason Angelov Reviewed-by: SJ Park --- mm/damon/tests/core-kunit.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 4a536d41cdb2..2db94d49c9ba 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -152,6 +152,8 @@ static void damon_test_split_at(struct kunit *test) } r->nr_accesses =3D 42; r->last_nr_accesses =3D 15; + r->probe_hits[0] =3D 7; + r->last_probe_hits[0] =3D 3; r->age =3D 10; damon_add_region(r, t); damon_split_region_at(t, r, 25); @@ -168,6 +170,8 @@ static void damon_test_split_at(struct kunit *test) =20 KUNIT_EXPECT_EQ(test, r->nr_accesses, r_new->nr_accesses); KUNIT_EXPECT_EQ(test, r->last_nr_accesses, r_new->last_nr_accesses); + KUNIT_EXPECT_EQ(test, r->probe_hits[0], r_new->probe_hits[0]); + KUNIT_EXPECT_EQ(test, r->last_probe_hits[0], r_new->last_probe_hits[0]); KUNIT_EXPECT_EQ(test, r->age, r_new->age); =20 out: @@ -189,6 +193,7 @@ static void damon_test_merge_two(struct kunit *test) kunit_skip(test, "region alloc fail"); } r->nr_accesses =3D 10; + r->probe_hits[0] =3D 6; r->age =3D 9; damon_add_region(r, t); r2 =3D damon_new_region(100, 300); @@ -197,6 +202,7 @@ static void damon_test_merge_two(struct kunit *test) kunit_skip(test, "second region alloc fail"); } r2->nr_accesses =3D 20; + r2->probe_hits[0] =3D 14; r2->age =3D 21; damon_add_region(r2, t); =20 @@ -204,6 +210,7 @@ static void damon_test_merge_two(struct kunit *test) KUNIT_EXPECT_EQ(test, r->ar.start, 0ul); KUNIT_EXPECT_EQ(test, r->ar.end, 300ul); KUNIT_EXPECT_EQ(test, r->nr_accesses, 16u); + KUNIT_EXPECT_EQ(test, r->probe_hits[0], 11); KUNIT_EXPECT_EQ(test, r->age, 17u); =20 i =3D 0; --=20 2.43.0 From nobody Mon Sep 28 20:05:58 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 69A773AB5B2 for ; Tue, 18 Aug 2026 03:46:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024779; cv=none; b=SJceoaRcsix41INFJcNlN+xrZNXmYDgufxEw815w1z3SQHelMjw2+l9x1rRMeTnL1ok9siITzmdjNXS3PBv2Yw1jIPUi9KObefs9pSt5f2+WDSlpIoSbgYN9jHvX5R1yTWU/jX3SLrUptIQkn3L2B3uiL4ND5Qnu6qeYooZoR9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024779; c=relaxed/simple; bh=BmcomMSONTWOIWRXzO+a38W4DDfeltbqysAe/UNmlZ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LOhMaXIPppIHhqJW2hbqJglIbeKr8iYIUbPjgTajXBUsfWTtxaveredWtAoodfbglBKOKVfg3L8i5aQftrIdKbbu/xbyKhtAKXeKuB0aYw8LoYnEHUuvbM6E05g9l2XSwdUzL5B13F6b4NJiGvMqHZpKw2bBmvZOXz+6DSn3sZI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ucla.edu; spf=pass smtp.mailfrom=g.ucla.edu; dkim=pass (2048-bit key) header.d=g-ucla-edu.20251104.gappssmtp.com header.i=@g-ucla-edu.20251104.gappssmtp.com header.b=RHO+yQWr; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ucla.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=g.ucla.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=g-ucla-edu.20251104.gappssmtp.com header.i=@g-ucla-edu.20251104.gappssmtp.com header.b="RHO+yQWr" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2ccf2360620so40311395ad.3 for ; Mon, 17 Aug 2026 20:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=g-ucla-edu.20251104.gappssmtp.com; s=20251104; t=1787024777; x=1787629577; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fDkagHVNS2LJhNT8XESQiKeoHr8QVrsAQC8Ivqfl/sw=; b=RHO+yQWrChovOf/VvVF97QueBI0yTOnBvaBfd56sMLI1MgxkyQX89wedTdqvrgMzt2 iVYAH5ZJWCnrEM09Sr6Cr4nhbTlNovIqhCeSFBO6qEy79CGN4IS1MaJElR4Tv8hSY0Jw HfXb1N3E2m2jM6KBeynp/3wIqmjWQ1alZlx9HsgCz5/2eLXi3Pd1vtefDgjbKUok8Icn Mmo+Ppe2BwYuJTay5fHjJwyUl+3EFlBzBWbmvG3nnJGYAOh0twojpEIYjMVqB+Dw91d6 dUlLEw6ohN7LtBarhOAu1ig/oRTVj1miKf+XuIEH57lsI0BaGpXB4chgDMC3zuYw+N8g lHrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787024777; x=1787629577; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fDkagHVNS2LJhNT8XESQiKeoHr8QVrsAQC8Ivqfl/sw=; b=is57EBdiPYKtEic2HD5jd45GKnYFxT4RnYiP71UAo0Omh3Zu9x86VAEqPlOPdwMtRe o6KiGfsPXs+TYPpT06KQ9YsBLbERFKFnwjBeHrebJMANeK55lsYfJNd9K5nIuyCJwG+E KvsmMM6r2jvMbC92BwOMt5k2jszA/L8Rf8INKBmtMPk/V5u35UbAJ0YRrp4/oXoFcM+D N+0y6j6JqbYDRattDNeKycrWoNKJ3ee51I1fjQmF8u6AjBKN7q33BwTqDvaIyKtvvMO8 es3SDGwqXSkLx2y4oDXKVShOiwUe21yiASdzRTB7xjRa+ys2bQWIqR2/x6HcepboHfhs ojGg== X-Forwarded-Encrypted: i=1; AHgh+RrJaOgUhL5ta7uSVrJMzm0bv0LzRVJdVhX0JOtaOxEddYoAKJA50hsg0Z3dUjvmmkFAa5py5g6hin2jKR4=@vger.kernel.org X-Gm-Message-State: AOJu0YyM0NjTCn9DmqyPPx+lpr4C9+AiQgsBpvikgeqqb2ndXvn/ciJZ djjHmVoTge9pDEPHUfqztsBF6tsfqcDh/iEKcrUIRhi3tDWULXwh5uk/18jSB4+YZn0= X-Gm-Gg: AR+sD1054W+RswdPgpzskHLK2VU5Ui2Xfytf48Ci1UcAolbsgUgolVjxcRy8jncisqJ JSulCkdPDQ4QRl1jDhjuiDUpVWCTpPHVcnO58luqbyimGFvcb/bFlSbNTdXoFjkzuTPiubvhWGf 9hn9I12PidlpCOyppoH9s4VKaMFYTUKOEBkIC3xuaA9Z3lKniPX0L28GQQSuaS26XklEx1JqATu Cfe1AmmW3Jot9RkgqYCuubtjxx77/77RSdkbYTwECkAZhWB1kBVG5p6Bu88gbdiL4una7EKP7kN Nljxp+oVeACoDLHYtMQZF0txgO57D6cXuK1NSg+JK1MblshEZKVM4tmHh7d1b1vmRvCCMmioUMR aZOGkA1dNlbBwmS+DlUlidSV1sYS3CePOJTb42VPtmbqQlq/Zb055z/gnd8Sjq3BxG2/E3jd/9O /qgOUff4h0ppv+g+TymCImd9TEDDFhJCKDEHWmuFtqBrqC3WsLz9KgOY0/jz1WRWMcspXOGKLll umFFLs9alDFXY2e X-Received: by 2002:a17:903:37c4:b0:2d2:da8e:9017 with SMTP id d9443c01a7336-2d3b0c5437dmr334519695ad.8.1787024776791; Mon, 17 Aug 2026 20:46:16 -0700 (PDT) Received: from damon-kunit-dev.tailb106f5.ts.net ([73.93.135.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3267be8e35bsm11453293eec.14.2026.08.17.20.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 20:46:16 -0700 (PDT) From: Jason Angelov To: sj@kernel.org, akpm@linux-foundation.org Cc: shu17az@gmail.com, jiayuan.chen@shopee.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Jason Angelov Subject: [PATCH 2/2] mm/damon/core-kunit: test damon_valid_probe_params() Date: Tue, 18 Aug 2026 03:45:52 +0000 Message-ID: <20260818034552.11975-3-jasonangelov@ucla.edu> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818034552.11975-1-jasonangelov@ucla.edu> References: <20260818034552.11975-1-jasonangelov@ucla.edu> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" damon_valid_probe_params() makes damon_commit_ctx() reject probe configurations that could overflow a probe_hits counter, a single (weight * probe_hits) product, or the sum of those products. Add a kunit test covering each rejection at its boundary: - samples per aggregation interval: U8_MAX is allowed, one more could overflow a probe_hits counter - single weight: the largest whose product fits in unsigned int is allowed, one larger is rejected - multiple probes: each product fits, but their sum overflows - no weight set: the validation is skipped Signed-off-by: Jason Angelov Reviewed-by: SJ Park --- mm/damon/tests/core-kunit.h | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 2db94d49c9ba..b1ca4c8e03f0 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -1338,6 +1338,62 @@ static void damon_test_commit_ctx(struct kunit *test) damon_destroy_ctx(dst); } =20 +static void damon_test_valid_probe_params(struct kunit *test) +{ + struct damon_ctx *ctx; + struct damon_probe *probe, *probe2; + + ctx =3D damon_new_ctx(); + if (!ctx) + kunit_skip(test, "ctx alloc fail"); + probe =3D damon_new_probe(); + if (!probe) { + damon_destroy_ctx(ctx); + kunit_skip(test, "probe alloc fail"); + } + damon_add_probe(ctx, probe); + + /* Parameters are validated only if any probe weight is set. */ + ctx->attrs.sample_interval =3D 1; + ctx->attrs.aggr_interval =3D 1000000; + KUNIT_EXPECT_TRUE(test, damon_valid_probe_params(ctx)); + + /* Up to U8_MAX samples per aggregation interval are allowed. */ + probe->weight =3D 100; + ctx->attrs.aggr_interval =3D 255; + KUNIT_EXPECT_TRUE(test, damon_valid_probe_params(ctx)); + + /* More samples could overflow the probe_hits counters. */ + ctx->attrs.aggr_interval =3D 256; + KUNIT_EXPECT_FALSE(test, damon_valid_probe_params(ctx)); + + /* The largest weight whose weighted hit count fits in unsigned int. */ + ctx->attrs.aggr_interval =3D 255; + probe->weight =3D UINT_MAX / 255; + KUNIT_EXPECT_TRUE(test, damon_valid_probe_params(ctx)); + + /* Any larger weight could overflow its weighted hit count. */ + probe->weight =3D UINT_MAX / 255 + 1; + KUNIT_EXPECT_FALSE(test, damon_valid_probe_params(ctx)); + + /* With one sample per aggregation, even the largest weight fits. */ + ctx->attrs.aggr_interval =3D 1; + probe->weight =3D UINT_MAX; + KUNIT_EXPECT_TRUE(test, damon_valid_probe_params(ctx)); + + /* The sum of all probes' weighted hit counts could also overflow. */ + probe2 =3D damon_new_probe(); + if (!probe2) { + damon_destroy_ctx(ctx); + kunit_skip(test, "probe2 alloc fail"); + } + probe2->weight =3D 1; + damon_add_probe(ctx, probe2); + KUNIT_EXPECT_FALSE(test, damon_valid_probe_params(ctx)); + + damon_destroy_ctx(ctx); +} + static void damos_test_filter_out(struct kunit *test) { struct damon_target *t; @@ -1664,6 +1720,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damos_test_commit_migrate_hot), KUNIT_CASE(damon_test_commit_target_regions), KUNIT_CASE(damon_test_commit_ctx), + KUNIT_CASE(damon_test_valid_probe_params), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), KUNIT_CASE(damon_test_set_filters_default_reject), --=20 2.43.0