From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFAF03EE1C6; Thu, 21 May 2026 14:34:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374079; cv=none; b=ezfc+wJ/pwacgnJvauRn65A+pj5dCsM3TEYuo4pte7Qa1T892braHtsshYTU97jp/STfN5XxB5oVGSjMxu8a5HEVxhN7fb9POyQOVgghniLup6K+UvtS/vekASEX9g6fiY3T3J9zQhW7l7DarPDY7tZFzEnCdiEHLmh8ujiJlto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374079; c=relaxed/simple; bh=8B9IiCSCXwYFGO3g7QwEtxLcmC3JtXQgAOF4um9StEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YNFC/NF/TpFdlAFemlN2gRtM8egy7ELVLk8NRK2CoquZx7/g65Z+FWwDF4UGzwno1nuf8powEhfm1agcFyx0Q+t5JAbaFb7Zh6Ewc7OFsli1dtxUBH4WLns3dS9hHQsr+TNDVroHxi/WUgt1Xj9tBLiUDujwUTFzha8jkT4gqnU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AMUsZIf9; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AMUsZIf9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA9E11F00A3B; Thu, 21 May 2026 14:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374077; bh=5i2WVbg2PjBsmn2NfpjKEh0VGjqNajgL/l9BFto2EhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=AMUsZIf9llHaj+LMaBC6OfmqVdMv4o6AxcDfQ9KSHUD6w21A49A9s6lLb3X0UmsnD PM+CdMA9+zuqcZaNQ3MzcLIF+Ot9zyn/xFMifwlfsikGP/+N28I2xvTa4WaranbdpA vYNEEAz4ZsRileTbMkA+D20t/vv1ZWxrXvfV22ZxUEbIvTYJlPQ0QStRRYPlOhqlFP P75wrk+PZyWQQpu7eWcDF70i70vYfRTRNz/co0tQHMBDyBraLS1VUlMUGZzkPs08lK Ee0GmtRDEaWJiOwhrv/EuMO+1Gtk/fB7ZHP4uwOYZZ+eunW1riAQX6A+xVioLJ3XEk SLlvX3nddJAZg== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 01/14] mm/damon/core: safely handle no region case in damon_set_regions() Date: Thu, 21 May 2026 07:34:11 -0700 Message-ID: <20260521143428.83157-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_set_regions() calls damon_first_region() regardless of the number of DAMON regions in a given DAMON target. damon_first_region() internally uses list_first_entry(), which clearly documents the list is expected to be not empty. Due to the internal implementation of the macro, damon_set_regions() is safe for now. But the internal implementation of the macro can be changed in future. Refactor the function to explicitly and safely handle the empty region list case without depending on the internal implementation. No behavioral change is intended. Signed-off-by: SeongJae Park --- mm/damon/core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index 0267faf216b95..40946a7f6f549 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -356,6 +356,19 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, damon_destroy_region(r, t); } =20 + if (!damon_nr_regions(t)) { + for (i =3D 0; i < nr_ranges; i++) { + r =3D damon_new_region( + ALIGN_DOWN(ranges[i].start, + min_region_sz), + ALIGN(ranges[i].end, min_region_sz)); + if (!r) + return -ENOMEM; + damon_add_region(r, t); + } + return 0; + } + r =3D damon_first_region(t); /* Add new regions or resize existing regions to fit in the ranges */ for (i =3D 0; i < nr_ranges; i++) { --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 633953806C1; Thu, 21 May 2026 14:34:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374079; cv=none; b=gKtUM5OyOBcYK5oOFiG5BLEYLwnTQDh07WixiYym/0clq1W9XT3PwFZjgpr949VTyOytJFCYlkn2D9RLTnIYB/W4mbePASiV5UbYLHHAp7BklOGBR9zFf+LPy5rUjojQtAZTL1cebwp/RTp8xpdQt02bdc/gfmpIAZi0w5JKNfw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374079; c=relaxed/simple; bh=SeQSeIT9kw4GiQ+HZa+CgcRvg0CvL1bbL4gPUN4MWDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oWf8Yv9e3Q20taKN679ONcM4BiRN/7i+h+sn8+P4HzB9Yq121azkQpeuilm6b3RE4PB/8T6sZLZQdLLkPlazKRxCGS8BnMRIYsH4KzO9D0S73UcHrnYeQMj0uHVQoACGJ89+UNw/JD9YBI89rIuWOjm36VJ4spShIpteCw23TNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bWEuYdaN; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bWEuYdaN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07E491F00A3D; Thu, 21 May 2026 14:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374078; bh=iMM8ZRfSsARmGo6eD+hRIbIxGHEMj2jHM5nMAylgAOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=bWEuYdaNmVFDjKsvRuqq0YJHRvCUaAx2GvJr9y3wf/72QFXCBCP5rUH7TqGW7iQJE bBZZpk650IhubHqIwaD3RR3WZ/xBWzD+e5BtzDBK8V5caF6krimBN09VdUGqiphQ9i G+Wwgm6Ghl3smylvGOwZDVG1E49zp9cH+irT9akiBGo/ubPnqxpn44F4JENymzjUf+ y06/U4llsZhlI3lzFZ9wFOUyu29lPX6yKhem0HuViWrgSrqFYaNMoM+KhkE+S0nsAT tqQhxF3Zefm12Ssc4iXZRH9BxQKKNmIREsYxTkATQT3YIHarbKSNBWh0z71oQlf7T7 JOTLdLi+PrT4A== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 02/14] mm/damon/core: do not use region out of a loop in damon_set_regions() Date: Thu, 21 May 2026 07:34:12 -0700 Message-ID: <20260521143428.83157-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_set_regions() assumes the DAMON region iterator is referencing the last region after the region iteration loop is completed. The code is indeed implemented in the way, but that is not a documented safe behavior. Hence it is unreliable and difficult to read. Cleanup the code to avoid the case. No behavioral change is intended. Signed-off-by: SeongJae Park --- mm/damon/core.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 40946a7f6f549..e8cf3632115e5 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -374,6 +374,7 @@ int damon_set_regions(struct damon_target *t, struct da= mon_addr_range *ranges, for (i =3D 0; i < nr_ranges; i++) { struct damon_region *first =3D NULL, *last, *newr; struct damon_addr_range *range; + bool insert_before_r =3D false; =20 range =3D &ranges[i]; /* Get the first/last regions intersecting with the range */ @@ -383,8 +384,10 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, first =3D r; last =3D r; } - if (r->ar.start >=3D range->end) + if (r->ar.start >=3D range->end) { + insert_before_r =3D true; break; + } } if (!first) { /* no region intersects with this range */ @@ -394,7 +397,11 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, ALIGN(range->end, min_region_sz)); if (!newr) return -ENOMEM; - damon_insert_region(newr, damon_prev_region(r), r, t); + if (insert_before_r) + damon_insert_region(newr, damon_prev_region(r), + r, t); + else + damon_add_region(newr, t); } else { /* resize intersecting regions to fit in this range */ first->ar.start =3D ALIGN_DOWN(range->start, --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD03C3EF673; Thu, 21 May 2026 14:34:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374080; cv=none; b=I8xlEbtMJ0mz5fYS2AnBD0IpWSBuZ+PyuURzRtY/LD/OKYMSPSmMbVA+3buguyNkyFC21x71C4sOi20yCXS01r4wDyeQboeApMWpCTgDSMR1eKvERwYzqSXSLhO8YrjlPNY/hbCH57m1cMAaEwLJFzgsJfY1ehylNMkGFq8iFmY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374080; c=relaxed/simple; bh=HU4D50xUEXGTjEy1hYAKL14nhun18f8ZSclPBfAPuZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t/HEKXLSI+4pumRDXaVNvE8tEZ6QfsYdZfPv3qgN3UW1sYZLgQbtoV3AFab+7BOcSFGfHu5r6ltk4pMPRRxM4T3yF+cCodwdn47PCAbatU69QX+10oHbZi2Rqt+L3MJhifzB1g/kKA4zq2fykIHT7NF1Fk3dyclKM+6AjBBWRCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RQJ0siWs; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RQJ0siWs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 554841F00A3C; Thu, 21 May 2026 14:34:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374078; bh=CRNoWJlEPylYeAv7EKMrmhsVza1n4tj76p/bqvx4fJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=RQJ0siWssrYWvg/DGI5+vQwOu7nENn2+wcgZV/fjpbB4EuWj7PszjrEKwKbU3ibkT /bvopnQnWIleF5nL8HOX0wGPRdtLSo0Vw05get+n+DV6yA9blh8EAIeBX2hXh8jGxw P/Xi2iu9sgB0QpTZYh1ci1g6TD36vQD+bgR4l4Jol5dNKr4bDXLhbStD3lUGtGozMk aCKFQ6LiqlYE3BA3j55pXTcmPmkikxvTfJzoq9hzX4vDk5DdImd+IO/w6FcSQZpK05 bHp+C1uYYFKRVasUmlTn9z2WPo73H73W+ASKXakuNWieK9buVSsw4+383suNdFwWFo BdtXduN5bN1tA== From: SeongJae Park To: Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 03/14] samples/damon/mtier: replace damon_add_region() with damon_set_regions() Date: Thu, 21 May 2026 07:34:13 -0700 Message-ID: <20260521143428.83157-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" mtier DAMON sample module and DAMON virtual address operation set (vaddr) unit tests are using damon_add_region() for setup of DAMON monitoring target region boundaries setup. But, damon_set_regions() is designed for exactly the purpose. All other DAMON API callers use the function for the purpose. Replace damon_add_region() usage in mtier sample module with damon_set_regions(), for unifying the use case and reducing the maintenance cost. Signed-off-by: SeongJae Park --- samples/damon/mtier.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/samples/damon/mtier.c b/samples/damon/mtier.c index 775838a23d935..eb1143de8df17 100644 --- a/samples/damon/mtier.c +++ b/samples/damon/mtier.c @@ -75,11 +75,11 @@ static struct damon_ctx *damon_sample_mtier_build_ctx(b= ool promote) struct damon_ctx *ctx; struct damon_attrs attrs; struct damon_target *target; - struct damon_region *region; struct damos *scheme; struct damos_quota_goal *quota_goal; struct damos_filter *filter; struct region_range addr; + struct damon_addr_range range; int ret; =20 ctx =3D damon_new_ctx(); @@ -120,10 +120,12 @@ static struct damon_ctx *damon_sample_mtier_build_ctx= (bool promote) addr.end =3D promote ? node1_end_addr : node0_end_addr; } =20 - region =3D damon_new_region(addr.start, addr.end); - if (!region) + range.start =3D addr.start; + range.end =3D addr.end; + + ret =3D damon_set_regions(target, &range, 1, DAMON_MIN_REGION_SZ); + if (ret) goto free_out; - damon_add_region(region, target); =20 scheme =3D damon_new_scheme( /* access pattern */ --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A4D03F0A9F; Thu, 21 May 2026 14:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; cv=none; b=Q+jEPpae6oyGzfbsI0NUFZUS/zM8MLf8U7qxmxI7IoeUCVXIfLMdxA466IInbT45XjhePjbFdwa2lZCHU8EsSza0ciJhOcVU1Wp/TSyYguaCV55aVje2Pz/XxONAuQlv9+Gx6DTQj2JjXm6ooxL0DD/3Fp45u684vx8AC5/rjGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; c=relaxed/simple; bh=mNfg97l0DT5bsgZWe32uZCMNCLcD17spo4z+2wU6rn4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P2Rfekk8qPHZEoSKZ9/CM20tjfMKYRTJmM3G3w7RLmS1MRb4+oK1hvHSarQuZgq0wKEfasuVYI1iw5RwE/qSsVmgHy1fWrt4ZqVerkJZqkW0OeksgoBRNgz5RJoj4S4bOKuqdzUcTChvV8ZlyEZ9R8NBX0ldAkBQoh03FLzmkkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ln2jHlAr; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ln2jHlAr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D8981F00A3F; Thu, 21 May 2026 14:34:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374078; bh=7YG6GjDiTDF7+hhcDJxfKB/57kZkbDeh0ESzV1mlaFU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ln2jHlAr4jbvgui7gZ1N521h/uXjENEZDiuJzweT8xNGaj/u8J8BQMiQcDOiNCDyz KEBnafI/4+P6m+qldnu7G2ah71+fkRmLzz2A3/PPDNSAJ6JwcLjd/MpfDMoY9AwMyi ngtmvFOlAZ+b4lnGDaPp5R9eU/FJQmm5aUvuyDHKkGN2+p/+3a9SHmIbl1/spRvL4k BfUgZ6JPZZpAe+1Q7chPmvULUqca4KDkYnWCsl38aLBG4z3qhgkXwcGKfKoI99m1si Me0m9R6UJueK0iK/77Zwu8v2AKhrjrbFSkJCSOMVIhcVlPcLEuHFWtpp5m/+dkuans s4FVf/cu4lCzQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Brendan Higgins , David Gow , damon@lists.linux.dev, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 04/14] mm/damon/tests/vaddr-kunit: replace damon_add_region() with damon_set_regions() Date: Thu, 21 May 2026 07:34:14 -0700 Message-ID: <20260521143428.83157-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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 virtual address operation set (vaddr) unit tests is using damon_add_region() for setup of DAMON monitoring target region boundaries setup. But, damon_set_regions() is designed for exactly the purpose. All other DAMON API callers use the function for the purpose. Replace damon_add_region() usage in the unit tests with damon_set_regions(), for unifying the use case and reducing the maintenance cost. Signed-off-by: SeongJae Park --- mm/damon/tests/vaddr-kunit.h | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h index 98e734d77d517..563fbc7e3f448 100644 --- a/mm/damon/tests/vaddr-kunit.h +++ b/mm/damon/tests/vaddr-kunit.h @@ -132,22 +132,35 @@ static void damon_do_test_apply_three_regions(struct = kunit *test, unsigned long *expected, int nr_expected) { struct damon_target *t; + struct damon_addr_range *ranges; struct damon_region *r; int i; =20 t =3D damon_new_target(); if (!t) kunit_skip(test, "target alloc fail"); + + ranges =3D kmalloc_array(nr_regions / 2, sizeof(*ranges), GFP_KERNEL); + if (!ranges) { + damon_destroy_target(t, NULL); + kunit_skip(test, "ranges alloc fail"); + } for (i =3D 0; i < nr_regions / 2; i++) { - r =3D damon_new_region(regions[i * 2], regions[i * 2 + 1]); - if (!r) { - damon_destroy_target(t, NULL); - kunit_skip(test, "region alloc fail"); - } - damon_add_region(r, t); + ranges[i].start =3D regions[i * 2]; + ranges[i].end =3D regions[i * 2 + 1]; } + if (damon_set_regions(t, ranges, nr_regions / 2, + DAMON_MIN_REGION_SZ)) { + kfree(ranges); + damon_destroy_target(t, NULL); + kunit_skip(test, "damon_set_regions() fail"); + } + kfree(ranges); =20 - damon_set_regions(t, three_regions, 3, DAMON_MIN_REGION_SZ); + if (damon_set_regions(t, three_regions, 3, DAMON_MIN_REGION_SZ)) { + damon_destroy_target(t, NULL); + kunit_skip(test, "second damon_set_regions() fail"); + } =20 for (i =3D 0; i < nr_expected / 2; i++) { r =3D __nth_region_of(t, i); --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68430407CD7; Thu, 21 May 2026 14:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; cv=none; b=cyYGo5W/aJUQMSuUccQDPTSRu1WCOmZbbxNiWDWTNSVenSn0VFYmkjnwevzZNFw2nBb8Q6r71sBtfIDAUaJJqRekHM8HqINXBlvBrgpRAbZA7lfzahoPAQAnEp4aapx5eidluQlLx9G2B6LkcvKj0SatT1dJbQFxAMguWweW+Gk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; c=relaxed/simple; bh=U3R/VpB5fsj2Kzc8E2SVAl/KkIrkOZVOd6iQ6EUqjEk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YrHcRubdpdPa83RlU8LmFzTap0wFuygQQ8ZCOl6IQYgcqreJQTFvpqKvYF2wmG9j9LhsG2447lDimgeMVsZCOAbfG3KqtJmvMmaIyQNg44TAw31vkVCcr9cVqxgjqeEFjTE0tmI+/7xW7/zD4rb3CNtTfyMnzDBn9IDpIUd3tS0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jOgQlyu0; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jOgQlyu0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1902C1F00ADE; Thu, 21 May 2026 14:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374079; bh=lFIspApNE5pg+37NC/h+0JPjyuQa8BCwW93puC6WNUA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jOgQlyu0BYsrKxDGlx0PvO7DdBjbvN7CW5DtqEpZxMUx2Gcdtqam12jT6ss4J0h1C y+R0+IWciA5VKq9J9KKjc0DwF2nzueOQhyBWFK7hqYBgy6ezzPOvvnFle30C7lkEoa lEoZPAZFl+V5dSxi33GHp9x3NMsj76wu1qXq4t3oh6r5pHRpznDfPy+Bq09lYzd8cQ bWEnmKmOn+lIY3dtRmU/g/jopxQUMyxiWkmSTu7x8nVoLmuup+GRvb5z8FYImMKHKk Fi+QGPU4BNnF7VaXbzeTdRUyL7uLfCSPhnElHpOU6zEx+HqQ2kQG5jZlpwMnhDqpvW u0YLb3ENq/SCw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 05/14] mm/damon/core: hide damon_add_region() Date: Thu, 21 May 2026 07:34:15 -0700 Message-ID: <20260521143428.83157-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_add_region() is being used by only DAMON core, but exposed to DAMON API callers. Exposing something that is not really being used by others will only increase the maintenance cost. Hide it. Signed-off-by: SeongJae Park --- include/linux/damon.h | 1 - mm/damon/core.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 4014fd0d463cb..b9370c1779cba 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1024,7 +1024,6 @@ static inline void damon_insert_region(struct damon_r= egion *r, t->nr_regions++; } =20 -void damon_add_region(struct damon_region *r, struct damon_target *t); void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); diff --git a/mm/damon/core.c b/mm/damon/core.c index e8cf3632115e5..7d1de6ff54eba 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -250,7 +250,7 @@ struct damon_region *damon_new_region(unsigned long sta= rt, unsigned long end) return region; } =20 -void damon_add_region(struct damon_region *r, struct damon_target *t) +static void damon_add_region(struct damon_region *r, struct damon_target *= t) { list_add_tail(&r->list, &t->regions_list); t->nr_regions++; --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2B92407CE6; Thu, 21 May 2026 14:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; cv=none; b=Mz9JT/WuWa9cFMG2tVSfgCWpmyW1agRf0bXptcYdyM/9hyr91jyoc9s6JOMCaKlWo63GLwINtbcCIgsOTWM9mlkPDfHiK+eRR2Bbt2bqnTU8C960WDB8CbD3TpCQcdMmHignuevgKgT3mNAn/OU7FC+Qndrwu2H0IxJT18iBRp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; c=relaxed/simple; bh=/YKZkQU2w0xT9X6y4g6IAtKtOkJAVQT/NTHny/zpY+0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WUBLXDXDJsoNeAtg0AhzvfQHZfDfSNiS9UhIJejTCjRc8vp2FpBcm6y0Co7KLt+kwjBYAfxdJMdhQ5tbSFdfdnCfFs8bF8lbWnLNV5nwyuaMmFLucCV7wsJyrY5uIAxd4nxeNGkt+NUrg/ig/CCrJ8XOJamO+Ps5jZGiSkPW4kA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IS64a2PH; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IS64a2PH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 669551F00A3B; Thu, 21 May 2026 14:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374079; bh=NwOzNgtGbmRdNv9xvtTz1sguHFhxD3l9rWcheeXYL1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=IS64a2PH6/REiXHI6VNWirE2NqkzSzWCIc4tb38kavuiH/RK+OTzAUFs9X47En1pW yss1y5NSvZ2aY9tVyugrwCUaqEJXgncShSlYeAjr89Num+YAtjAI3Tu3QSr7fVu4tU LqlFycjyRjV/LN9pgJUBq2RFCr7GvXJsToq/+YiOdEE6waCeQ7yHGxjUotCSptL/St Vx/Oan14SPL1BAIBxQxuQ1Jmib3P0zydUZRp6+abIUMyL/iUSk/v6XNjrFmee6cZ2x SejYA7L8VWeZfe08W/kCipDCvMnNOkbcmiV8m2rlteX4DwXd0myXgfgtd5zW8MXsdl Pc0R2JMLoc4+g== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 06/14] mm/damon/core: hide damon_insert_region() Date: Thu, 21 May 2026 07:34:16 -0700 Message-ID: <20260521143428.83157-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_insert_region() is being used by only DAMON core, but exposed to DAMON API callers. Exposing something that is not really being used by others will only increase the maintenance cost. Hide it. Signed-off-by: SeongJae Park --- include/linux/damon.h | 11 ----------- mm/damon/core.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index b9370c1779cba..3acca7deb1693 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1013,17 +1013,6 @@ void damon_add_probe(struct damon_ctx *ctx, struct d= amon_probe *probe); =20 struct damon_region *damon_new_region(unsigned long start, unsigned long e= nd); =20 -/* - * Add a region between two other regions - */ -static inline void damon_insert_region(struct damon_region *r, - struct damon_region *prev, struct damon_region *next, - struct damon_target *t) -{ - __list_add(&r->list, &prev->list, &next->list); - t->nr_regions++; -} - void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); diff --git a/mm/damon/core.c b/mm/damon/core.c index 7d1de6ff54eba..53b4bdd27b39d 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -256,6 +256,17 @@ static void damon_add_region(struct damon_region *r, s= truct damon_target *t) t->nr_regions++; } =20 +/* + * Add a region between two other regions + */ +static inline void damon_insert_region(struct damon_region *r, + struct damon_region *prev, struct damon_region *next, + struct damon_target *t) +{ + __list_add(&r->list, &prev->list, &next->list); + t->nr_regions++; +} + #ifdef CONFIG_DAMON_DEBUG_SANITY static void damon_verify_del_region(struct damon_target *t) { --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10C12407CED; Thu, 21 May 2026 14:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; cv=none; b=J3irJvbzgTNxkALp4e0TcZQQ5iKsY1sGwLXg3Vugy97UG363MKtAFqXJe7OyYu3iFus5T1G07huSPTgM8Xtp9Ofn9eQ6wsaLYc1gA2tCcm9RN6RiPdbeIE02acyXZyVn37zawQBYB3u7I6M0+fPcrTFLRG08GtSm+A+/CCzhjrs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374081; c=relaxed/simple; bh=Io1W+l0y38wprpiIkcNjCK1tfQcAY0yDIRtRdd0LSw0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jn64LAthbPg1C8B+0oKTY9JvJrJPi4SxBa3bLDrEC2MSABS2CkVgdjzlwmr/ETMyG6jQ5lhNBE29Ya9HuUM4ayVZlWnMzR7c8jz8Zgk2yriFQiUkRl9C/wexpyeWbhndlK8CApXwxNoyXU1vAV5QkE+z/HUtVjVEn9XgLAd14Kc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TNydnoB6; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TNydnoB6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4EC71F000E9; Thu, 21 May 2026 14:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374079; bh=ITBL4yRv8OcoOU4P8OrL5kgNMtEVib2v8kU4r8mcDLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=TNydnoB6sIKWld1N3SMAnA8lttU37d6YABnmMJ4mfPU3329lt4Qoz5v3C//EYGJYK drNbHedORmv86s+wMfzB+ODgCSqMNAuPxiOXsWALdW5IwhNAnNI/SNqz1Jfb1/zJMT MEj4wegqn0OEFFqjzfbP9PZdjhd5w9BkR4SiSGqTNFjxYlkgcC6YB1gdq+8aCffDL2 365RMt3j7MwJvi/JAemUvRX/nVyEqe8JSvBA7Ch1ZXwIVwfxZrhHSE4u2bwZ9Yrrmy kj0+3Ukw8DcPKg+lWQsbTGkd/sHUIZe0YbcJWvRCN+VcYt94XiVvY1jP38MriuIs0c 47QU+G1IFAA0Q== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 07/14] mm/damon/core: hide damon_destroy_region() Date: Thu, 21 May 2026 07:34:17 -0700 Message-ID: <20260521143428.83157-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_destroy_region() is being used by only DAMON core, but exposed to DAMON API callers. Exposing something that is not really being used by others will only increase the maintenance cost. Hide it. Signed-off-by: SeongJae Park --- include/linux/damon.h | 1 - mm/damon/core.c | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 3acca7deb1693..638ee65f88dcb 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1013,7 +1013,6 @@ void damon_add_probe(struct damon_ctx *ctx, struct da= mon_probe *probe); =20 struct damon_region *damon_new_region(unsigned long start, unsigned long e= nd); =20 -void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); void damon_update_region_access_rate(struct damon_region *r, bool accessed, diff --git a/mm/damon/core.c b/mm/damon/core.c index 53b4bdd27b39d..8a9202937781c 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -291,7 +291,8 @@ static void damon_free_region(struct damon_region *r) kmem_cache_free(damon_region_cache, r); } =20 -void damon_destroy_region(struct damon_region *r, struct damon_target *t) +static void damon_destroy_region(struct damon_region *r, + struct damon_target *t) { damon_del_region(r, t); damon_free_region(r); --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AECD9408011; Thu, 21 May 2026 14:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374082; cv=none; b=NSmpXVa089fRAvRUASuVn1yNttZ5EGuw4V7eUcHyRVmv6/9ZM2OMisxUuvzUfuzb9nF/AbXHwDisSwCMdmnaUNCffTj2zduDI9t9xPMYwqu+KKl/fU4g9IzZvLKq218cZemirgpfRTrv2tetTkv6egmhIHa47ZirKW3PBV0hO3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374082; c=relaxed/simple; bh=C0Qiz/68PoSKpJYdHo2J3oJvAucJHQFM7W7CTyDoh2w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PAdjlIqyAREyPfgBxJ1iGDtJ562Z1vltkIz92kY+DV5QG6XV4v5I9vzHrqJo8jDJ0zQ7AJZfapoW6NOc2rB2kqDSkStFygV59QBYVZEnpK5Bo7+P7Q8eitDWDO0Bdzku2/bI2EgCghxv1g9HMuAvg5ZetM2d0kxE8juG1Z/H7qc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Bb2iZK2U; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Bb2iZK2U" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0E9E11F00ADF; Thu, 21 May 2026 14:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374080; bh=3LRLg3Pzb74v2r5bZtbtebH98gpHkUBcEoBkx4Qaj+A=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Bb2iZK2UMHiPZv8SKKL/yoDF4gv8vV5A+pgyEOKT1pwH7/K2ISRcbS9rmfnlwFFSS Qeh47d11YXvF2i+D6xsPQrl4PGnpgZ0rwTV833Q7YfQQptks5u7cLK8Mueg8eOTw7C l0LCo3rK5EEJYloplfrCstp6bHJUYi6hPsLoLhzFtKKMXnLVimskDW6LGFxAHkRu27 VMHlfbBOESc2DBlpx5iyRZ78CMfrPvJ3553IjAtZqnWIpwATMVo4/5NYd9fZF5UU64 ZTq/ywC0GDdL7Ax0FPP1Qfg3IzFi2NzbcnZk2zLjOebkOA2GgIlyufEoK7MybQxAsZ 87/oVhc7J9rxg== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 08/14] mm/damon/core: add kdamond_call() debug_sanity check Date: Thu, 21 May 2026 07:34:18 -0700 Message-ID: <20260521143428.83157-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" kdamond_call() is the place where DAMON API callers are allowed to access the DAMON context's public internal state including the monitoring results. Hence it is important to ensure it is called with the expected DAMON context state. Do the check under DAMON_DEBUG_SANITY. Signed-off-by: SeongJae Park --- mm/damon/core.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index 8a9202937781c..9cde5b47b9585 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3331,6 +3331,37 @@ static void kdamond_usleep(unsigned long usecs) usleep_range_idle(usecs, usecs + 1); } =20 +#ifdef CONFIG_DAMON_DEBUG_SANITY +static void damon_verify_ctx(struct damon_ctx *c) +{ + struct damon_target *t; + struct damon_region *r; + + damon_for_each_target(t, c) { + struct damon_region *prev_r =3D NULL; + unsigned int nr_regions =3D 0; + + damon_for_each_region(r, t) { + WARN_ONCE(r->ar.start >=3D r->ar.end, + "region start (%lu) >=3D end (%lu)\n", + r->ar.start, r->ar.end); + WARN_ONCE(prev_r && prev_r->ar.end > r->ar.start, + "region overlap (%lu > %lu)\n", + prev_r->ar.end, r->ar.start); + prev_r =3D r; + nr_regions++; + } + WARN_ONCE(damon_nr_regions(t) !=3D nr_regions, + "nr_regions mismatch: %u !=3D %u\n", + damon_nr_regions(t), nr_regions); + } +} +#else +static void damon_verify_ctx(struct damon_ctx *c) +{ +} +#endif + /* * kdamond_call() - handle damon_call_control objects. * @ctx: The &struct damon_ctx of the kdamond. @@ -3346,6 +3377,8 @@ static void kdamond_call(struct damon_ctx *ctx, bool = cancel) struct damon_call_control *control, *next; LIST_HEAD(controls); =20 + damon_verify_ctx(ctx); + mutex_lock(&ctx->call_controls_lock); list_splice_tail_init(&ctx->call_controls, &controls); mutex_unlock(&ctx->call_controls_lock); --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B07E2408015; Thu, 21 May 2026 14:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374082; cv=none; b=f2h8Jgfz2F3OlyxO8b8Y8T1Zlz1lJW4hlwu/ZarxM2uNodQKVll2+t5N3ameLer+VXwsIfTJ3onv+LUrRp98r0KD7iJTdwLOXuy08eoXIC1eWNUb1j8DzdxYJ5BH4uCjrJh78GRwvlXedONy4pRipYPuqfPsp1/2MdNgz1c7bsg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374082; c=relaxed/simple; bh=60hNbVqTSP21yPGuac3bHL+OYhfMoIX08QASyu0GIRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nPPnAqwdriGDWnxjBe1DrHr5qT+zugSjpKt7H2tbLG4a2KaU0JZs9elxbDegljOBCGtzynhXq+vGT6uMgWTjQBchm87wfZZMV4QtlRjgi0Q9QgcD0E7frvfgTQQL394ewWNQDw15g4KvEooDkfEAHo/qdZuQ6zgtoIMlScdnTME= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JtY5kwgF; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JtY5kwgF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EF3F1F00A3E; Thu, 21 May 2026 14:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374080; bh=rlDrTS/qDNMBtSrkkbpm6odK2sEC/p6nHvamOoXHSXU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JtY5kwgF4NwiR351gN+IX2c7r/wJR+0aeF7H+sK8LicM/7/DxyiXigb0TCZ1ozEla 0RsIyyO4Lbz+bYSE71gTiHiEncqPdNwEjAwFHjE9PFGwQXfptpQx8MVzKARWNuF4j5 bUXioO3JgTlq0Qggl4aqdkeJUsipCmLdCYQHj4ztcuCwMGAMYvGS+k9HedAVX2vIkx qOG7euYJG+CuXuKHcsz+GPig1oDr2n1hMWQtC59Y1CNr0J8yBnRu1umoNlKsHJFzM/ SbfuvdcQFxDNkXl7ogp47u87t/ROI5Loqe5V7v/dmaWoOgz8drDrXyVXyc35TDD/p0 JUEYKQKQluElw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 09/14] mm/damon/core: remove damon_verify_nr_regions() Date: Thu, 21 May 2026 07:34:19 -0700 Message-ID: <20260521143428.83157-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" When CONFIG_DAMON_DEBUG_SANITY is enabled, damon_verify_nr_regions() is called for each damon_nr_regions() invocation. damon_veify_nr_regions() iterates all regions. damon_nr_regions() is called for each region in kdamond_reset_aggregated() and damos_apply_scheme(). Hence it imposes O(n**2) overhead where n is the number of regions. Though the verification is enabled only under DAMON_DEBUG_SANITY, which is not for production use cases, it could be too high overhead. Meanwhile, damon_verify_ctx() is doing the damon_nr_regions() test. Because damon_verify_ctx() is called for each kdamond_call(), the test coverage from damon_verify_ctx() could be sufficient. Remove damon_nr_regions() verification. Signed-off-by: SeongJae Park --- mm/damon/core.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 9cde5b47b9585..265d51ade25bf 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -686,27 +686,8 @@ void damon_destroy_target(struct damon_target *t, stru= ct damon_ctx *ctx) damon_free_target(t); } =20 -#ifdef CONFIG_DAMON_DEBUG_SANITY -static void damon_verify_nr_regions(struct damon_target *t) -{ - struct damon_region *r; - unsigned int count =3D 0; - - damon_for_each_region(r, t) - count++; - WARN_ONCE(count !=3D t->nr_regions, "t->nr_regions (%u) !=3D count (%u)\n= ", - t->nr_regions, count); -} -#else -static void damon_verify_nr_regions(struct damon_target *t) -{ -} -#endif - unsigned int damon_nr_regions(struct damon_target *t) { - damon_verify_nr_regions(t); - return t->nr_regions; } =20 --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1FA7540801B; Thu, 21 May 2026 14:34:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; cv=none; b=lT+7S0+OQoY96HZjzvk+tia327UeY6qTivY5UgxKWEzwULb+vcEaJvPKbiMeYWR2cD5+bT72UMDqB8yj/noY3sVapaIKAHQ1EahOz9gkMASN0ucixTyFDfs/U3rfR+IJSDzbzYzL39rL0Xu1W/slOFrgKRjPPxPi84jf3XZ5sxM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; c=relaxed/simple; bh=APLmcBIo1O/M2Pv9o2Vdrv9QdP3CWdcypcr8bidZpQw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Oa/cWRAz9lU6D/YQwFEW07A4wK1aiohhPFNl5SaGYEq6N8c7SLDEfIvqf/E6ehKy1LMkGPPKhUrqTrQD+XQM5UcJzVEIhx+zgj4Lsp1jJIbGCmW+CWOZhVjHF8dpMh+daqfqHebk4Kv1FmGKPMtM6AcoyqAb6M7y3fboaxFhaqE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZzdDcdIQ; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZzdDcdIQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF16F1F00A3C; Thu, 21 May 2026 14:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374081; bh=rIvjFu8eu4Q0A0nJgGFhpNwMfwikQRRw8RbElJURXJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ZzdDcdIQERBkcPS+c3Xdfq2mJl9Iazp9/dme8M6FhGjAXPYTuUg71RZM2JuuZSU5z TIO446K+cyJOang2ILC+ntls5a66HbUsd8CSc6hzJeQoYYfNHqVPiWrWPaXEA4DU7F m3MqBPEJXg9S/IN3nqH3cmucS/VShH/Ts/HP/k0PmkMtMrylhvzbv11/InfM+larIO SUwv5FvQylO8QE37HeWHiy2teZZgxArhPa3Fph+1JTlvv8PRDetnKgMBWRdZ0YWajo pxGjF1CRk0aZWmOjlokfJNhxTahBwSxQUsq6sK1k2C0Dbyt6A1CSmcA3cWA3cUKSoS +9FSMjAyB/plg== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Brendan Higgins , David Gow , damon@lists.linux.dev, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 10/14] mm/damon/tests/core-kunit: add damon_set_regions() test cases Date: Thu, 21 May 2026 07:34:20 -0700 Message-ID: <20260521143428.83157-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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_set_regions() is one of the main DAMON kernel API functions that set up the monitoring target memory region boundaries. Implement unit tests for verifying its basic functionalities. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 142 ++++++++++++++++++++++++++++++------ 1 file changed, 120 insertions(+), 22 deletions(-) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 866f716e5760d..1cfb8c176b873 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -390,41 +390,139 @@ static void damon_test_ops_registration(struct kunit= *test) } } =20 -static void damon_test_set_regions(struct kunit *test) +static void damon_test_set_regions_for(struct kunit *test, + struct damon_addr_range *old_ranges, int sz_old_ranges, + struct damon_addr_range *new_ranges, int sz_new_ranges, + unsigned long min_region_sz, + struct damon_addr_range *expect_ranges, int sz_expect_ranges) { - struct damon_target *t =3D damon_new_target(); - struct damon_region *r1, *r2; - struct damon_addr_range range =3D {.start =3D 8, .end =3D 28}; - unsigned long expects[] =3D {8, 16, 16, 24, 24, 28}; - int expect_idx =3D 0; + struct damon_target *t; struct damon_region *r; + int i; =20 + t =3D damon_new_target(); if (!t) kunit_skip(test, "target alloc fail"); - r1 =3D damon_new_region(4, 16); - if (!r1) { - damon_free_target(t); - kunit_skip(test, "region alloc fail"); - } - r2 =3D damon_new_region(24, 32); - if (!r2) { - damon_free_target(t); - damon_free_region(r1); - kunit_skip(test, "second region alloc fail"); + for (i =3D 0; i < sz_old_ranges; i++) { + r =3D damon_new_region(old_ranges[i].start, old_ranges[i].end); + if (!r) { + damon_destroy_target(t, NULL); + kunit_skip(test, "%d-th r alloc fail\n", i); + } + damon_add_region(r, t); } =20 - damon_add_region(r1, t); - damon_add_region(r2, t); - damon_set_regions(t, &range, 1, 1); + damon_set_regions(t, new_ranges, sz_new_ranges, min_region_sz); =20 - KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 3); + KUNIT_EXPECT_EQ(test, damon_nr_regions(t), sz_expect_ranges); + if (damon_nr_regions(t) !=3D sz_expect_ranges) { + damon_destroy_target(t, NULL); + return; + } + i =3D 0; damon_for_each_region(r, t) { - KUNIT_EXPECT_EQ(test, r->ar.start, expects[expect_idx++]); - KUNIT_EXPECT_EQ(test, r->ar.end, expects[expect_idx++]); + KUNIT_EXPECT_EQ(test, r->ar.start, expect_ranges[i].start); + KUNIT_EXPECT_EQ(test, r->ar.end, expect_ranges[i++].end); } + damon_destroy_target(t, NULL); } =20 +static void damon_test_set_regions(struct kunit *test) +{ + /* Initial build up on empty target. */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){}, 0, + (struct damon_addr_range[]){ + {.start =3D 5, .end =3D 15}, + {.start =3D 15, .end =3D 25}, + }, 2, + 1, + (struct damon_addr_range[]){ + {.start =3D 5, .end =3D 15}, + {.start =3D 15, .end =3D 25}, + }, 2); + /* Un-intersecting regions should be removed. */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 4, .end =3D 16}, + {.start =3D 24, .end =3D 32}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 18, .end =3D 23}, + }, 1, + 1, + (struct damon_addr_range[]){ + {.start =3D 18, .end =3D 23}, + }, 1); + /* + * Holes should be filled up with new regions. + * + * old: [4, 16) [24, 32) + * new: [8, 28) + * expect: [8, 16)[16,24),[24, 28) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 4, .end =3D 16}, + {.start =3D 24, .end =3D 32}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 8, .end =3D 28}, + }, 1, + 1, + (struct damon_addr_range[]){ + {.start =3D 8, .end =3D 16}, + {.start =3D 16, .end =3D 24}, + {.start =3D 24, .end =3D 28}, + }, 3); + /* + * New regions should be able to be appended. + * + * old: [0, 4)[4, 17) + * new: [0, 15) [25, 40) + * expect: [0, 4)[4, 15) [25, 40) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 4, .end =3D 17}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + }, 2, + 1, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 4, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + }, 3); + /* + * New regions should be able to be inserted. + * + * old: [0, 4) [42, 52) + * new: [0, 15) [25, 40) [44, 50) + * expect: [0, 15) [25, 40) [44, 50) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 42, .end =3D 52}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + {.start =3D 44, .end =3D 50}, + }, 3, + 1, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + {.start =3D 44, .end =3D 50}, + }, 3); +} + static void damon_test_nr_accesses_to_accesses_bp(struct kunit *test) { struct damon_attrs attrs =3D { --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C77DA40911C; Thu, 21 May 2026 14:34:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; cv=none; b=XuFbSQv7TlrmmlR2hh4CtMkuCjYbGF6+WXLuKOICU6ODr/EhY4qi+2rViqcCqzPEwcqVSMCSVMmzGgOV8L5e0hhk8hcmj070aNxhMzy0VECAP+LP6q7q5AQwyriY4syuC7UmvddrSgg2cHasIelceHc3OAY5DaBMud/a1TYtNNY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; c=relaxed/simple; bh=GCwpp9tVndKgfB2xT0JiM24CGov0zLgkMw/jizl1l1g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A7PpoL5HUJy1g2jSDXG1Rc2/z/Gemg76A6BO2IprCti233lx6sqWbmuXcu26TkFLN1mdwC/5EinmpY61TFQJuSVaTVEJuLPjRK4SlFTDEcK3y1b+544n3tL/rvYx9YPvRSCsAaEUOszv1qXVaxJnD3mC6SD/Ps7tBcMqT6m4G0U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F69e6r6B; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F69e6r6B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F6751F00A3D; Thu, 21 May 2026 14:34:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374081; bh=iEjjWBHpUcq7nMlrb1+WzxDoNOgxUnUZ3YjegNS7FQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=F69e6r6BcRcQCE51aqZBQpHoeSZl4Kfu2dFiXgBh98s5RaO+Yn6I4gbHLk3B5vRX5 u8tLxKzx9/UVR+7qSApZxy6U1dP/Zbl7MIRYjdMy2UAnkRcd7Y9wog2fdFIyjHSg3G 7or+svTc+QKWIeUgNlnrqBuxykLisG9dL/1e+3ob3Jf0zrgY/YzEGKSprH3Ja+SPIO O0f9feCV3NsgjC+qDaXUlHKkLqn6WbtMp2tlVQ6iF4UJ6KlBSmSTB8BG2g8320Bd8E u1aHkZi8MVTrj9+29V5q0CG5V/6bzpsGCIGzumJck+xqaktUxXUvUyidlf71gkqcYt foM+WcAz25B0Q== From: SeongJae Park To: Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 11/14] selftests/damon/sysfs.py: stop kdamonds before failing Date: Thu, 21 May 2026 07:34:21 -0700 Message-ID: <20260521143428.83157-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" When an assertion is failed, sysfs.py DAMON selftest immediately exits the test program leaving the DAMON running behind. Many of the following tests need to start DAMON on their own. But because DAMON that was started by sysfs.py is still running, those start attempts fail, and the tests are failed or skipped. Update sysfs.py to stop DAMON before exiting the test program due to the assertion failure. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index cd4d82c852113..aa03a1187489f 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -24,9 +24,12 @@ def dump_damon_status_dict(pid): except Exception as e: return None, 'json.load fail (%s)' % e =20 +kdamonds =3D None def fail(expectation, status): print('unexpected %s' % expectation) print(json.dumps(status, indent=3D4)) + if kdamonds is not None: + kdamonds.stop() exit(1) =20 def assert_true(condition, expectation, status): @@ -248,6 +251,7 @@ def assert_ctxs_committed(kdamonds): ctx.pause =3D False =20 def main(): + global kdamonds kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( contexts=3D[_damon_sysfs.DamonCtx( --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1CE83F1AA3; Thu, 21 May 2026 14:34:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; cv=none; b=IKx9JJjbVwLLEPvNuuuopKQq6qlxtTkgutDdm3Ae3aer2I1s2X/vnVMw+8BaJw2YstX9M6CQ5sDvfQb6uELKDur5RTi992Dl+duv3fvb4LFg3em4d4nYAG8dNRLaLWQSoO8oQXLlEvCOAIneSD2CTugS6Vb5YNs9SV6u5bcKwH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; c=relaxed/simple; bh=4Z9nDEpElV7CLHeQzITxn/6P2S9ErV3Ie4yqUQCoJI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ynsit1k30dE5DBxfQ25TfaERmLD34/0LwochR577OjopWAnUqGFSIsZLRkzZMl17hv70Rv9uf2fFOtpomi4n12Y4B/O6Hr1PADY5rbYB9HwbVBVaW7hwNt32USwOovrrCGxjTZQMrwheoo9t2M4+EP7+LrznzCo5fIy33iDNuyg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WTMrLp2t; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WTMrLp2t" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 858B31F00A3B; Thu, 21 May 2026 14:34:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374081; bh=9HFBKYb5cdZ3muhhdyyxDCFvE0VgsBfb1xW7NVeIcwg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=WTMrLp2tMCX5YrgBj1ZWopah5kwGLQ9bIUqP6GQ7R86Qf+Ls98eZL6M+oMHMdugFK ZiDFQ7zdYA78rZPuMiG2O1C+WKmIzSs3iUvsIl6Jjo1ZFN4AWbATyksDCzIjaMCkJJ S+/BT6SI1KcNWwkVAJPCxlTbRVtv206SKPNT8s31dmpgRJYdwpayB/d4uddaHdh61W tyQhXwxCZpdmEOutdJ64kHxLVWb6s/Yav9n87oo3roOEjz8vifutgJ3iR0O3iHonqA ciYnzBgiOxbcrzBaFL1s84bDKgQrKskVReHR9vhif2YNhp9qM7nSJFcMku9Ivg2ZHP ourNbu2RZ+OnA== From: SeongJae Park To: Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 12/14] selftests/damon/sysfs.sh: test monitoring intervals goal dir Date: Thu, 21 May 2026 07:34:22 -0700 Message-ID: <20260521143428.83157-13-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" sysfs.sh DAMON selftest is not testing monitoring intervals goal directory. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftes= ts/damon/sysfs.sh index 1ac3e2ce8e448..b3418214ed358 100755 --- a/tools/testing/selftests/damon/sysfs.sh +++ b/tools/testing/selftests/damon/sysfs.sh @@ -282,6 +282,17 @@ test_targets() ensure_dir "$targets_dir/1" "not_exist" } =20 + +test_intervals_goal() +{ + goal_dir=3D$1 + ensure_dir "$goal_dir" "exist" + ensure_file "$goal_dir/access_bp" "exist" "600" + ensure_file "$goal_dir/aggrs" "exist" "600" + ensure_file "$goal_dir/min_sample_us" "exist" "600" + ensure_file "$goal_dir/max_sample_us" "exist" "600" +} + test_intervals() { intervals_dir=3D$1 @@ -289,6 +300,7 @@ test_intervals() ensure_file "$intervals_dir/aggr_us" "exist" "600" ensure_file "$intervals_dir/sample_us" "exist" "600" ensure_file "$intervals_dir/update_us" "exist" "600" + test_intervals_goal "$intervals_dir/intervals_goal" } =20 test_damon_filter() --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 315A5409603; Thu, 21 May 2026 14:34:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; cv=none; b=ewGyETT4tb0Tig0VW7LTWEwdbwJSGcnQy2qk/10B9jdQlJZezNxMUn7oJ/jLQqCQocTh0suuGLOjwsFPNbUoDGYw8D7O57VhIg851ckwGlM4YHqvQXiliP65+9PV0Fd50ZlRqTFY0mZbPUGUMEpGyhm6PKMpnYURw2AZIkp3CIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374083; c=relaxed/simple; bh=ws0D8iuldfRLR1MHNkuGGInMFKktNMpgiEm6ektZ6B4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tbyrEg+SLJ6JHqFr7WeWnznonI0sibh4r4RBIiCcf6M68kN69RViyVhx5fhDcF/bS8BgfvzOr9BXZZDwECQUrL3tiv/MyQzyNn2I8Y3Fb46ey5VZHuhtKHyf/xlVkJ055DV/2ZYtivhANhwp61u0hkkspz1UNkvKvewDvkAWDfg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IK9JnRGc; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IK9JnRGc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE5671F0155A; Thu, 21 May 2026 14:34:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374082; bh=jOZYn/0HiUYme65VRURmz3VNOCuqOPU+0+8yZhbpho8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=IK9JnRGcTK2zdvVbFZfaf1hH0Y/rwP6hR3UsV11SYLL8Eeadueby+++WOFS9Rmdrp hFdSwop/qaVXAN1wzBy3PURsmJOa7AUArEWVzUSvhgFo4vs6rPqLZFIsGoIutpv10h o7krfODDUU4idkN14D72zcDVIC/aKKad59jVFDDMrl+qa6euJ8Qc3kmHkU3lUB0FwX H/NP1OhsMBe0CjzFnaVeUqQyrYAV0QTCDLGb1OppaLVA1Ic5PLLoQfTVSc0yRWDJno iceoP2mrfha1O87pe48OZmwlDA/tLfqs0DANQOVUUKrCy4Gu4YgLPVrQdYuxe5C1v7 xR+jIMpf7pmwg== From: SeongJae Park To: Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 13/14] selftests/damon/sysfs.sh: test addr_unit file existence Date: Thu, 21 May 2026 07:34:23 -0700 Message-ID: <20260521143428.83157-14-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" sysfs.sh DAMON selftest is not testing the existence of addr_unit sysfs file. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftes= ts/damon/sysfs.sh index b3418214ed358..92b44c86818af 100755 --- a/tools/testing/selftests/damon/sysfs.sh +++ b/tools/testing/selftests/damon/sysfs.sh @@ -365,6 +365,7 @@ test_context() ensure_dir "$context_dir" "exist" ensure_file "$context_dir/avail_operations" "exit" 400 ensure_file "$context_dir/operations" "exist" 600 + ensure_file "$context_dir/addr_unit" "exist" 600 test_monitoring_attrs "$context_dir/monitoring_attrs" test_targets "$context_dir/targets" test_schemes "$context_dir/schemes" --=20 2.47.3 From nobody Sun May 24 20:33:03 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96FB6409DFD; Thu, 21 May 2026 14:34:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374084; cv=none; b=h6iiZ9BRFAlfV9hwy3vDYukKNFRPYSwzOiYpw3JsssHt48dQnBqKnkI7eDbkqHtbO2la0CgQA15cMh3/K+JNXj059q3X5fb8Ib2AdsEVus0Y1K704nPKFMzki5zSX19EE8xCf/i7RdL0nHfdZNxfu1tn63RUhVoi4oQ2fYdNY1o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374084; c=relaxed/simple; bh=vlSxJq/mZG/PC7FG4BVhxJBrns4C2X+9/1QoBF2tbHI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jW2IpY8KN64wyUU3xwRzcn8KB69zKm4nOWVpCeA7wDJi3zKjfHREi6MvNyEmSBW+Zp3WVrn9fOxac4p1ckWsWWwl9vYWN8ZxCdYZOHmW285jlwBCDuxq7u08ldQ1/2IgCd11MjghMtJk0dkykUCeFkTa1pZxSbbx1zp4s9vEFwk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mbr7hz7Y; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Mbr7hz7Y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41F651F000E9; Thu, 21 May 2026 14:34:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779374082; bh=9Q+fxjZuCnosHblIbwlECkpSubPFTTaxfUpkwZ9ZxQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Mbr7hz7YcemYHIxCvxgFidxLPabBO8v8iCe2Dre4oypmwg0kxT1enQSSazfXttV+8 kH291s3wRJ/bUNnbBxFDOgs5/VqudtNmebjbmVGul6KwPy0MFk4wSHIlrzkcwkJU4j hQuGQZOihSsTDTCx/PLg2TR/X25Iu3R8EQs+SMmPO43r1yKs3bKrXyVxyyMnczfKfc MEjJftNjgf0el7HBkoLOsyrwLb1nSPYJExJYuqGqEgfD5KQkxdeE/FyBlqZrIo1Y69 AUVD/EYmd26qTTVQQwD2ME1FipFvS+ogR6EKmXCNRuvC26jsEryDCOqW1OIwfq7HYQ ArXeLXg9YDuTw== From: SeongJae Park To: Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.2 14/14] selftests/damon/sysfs.sh: test pause file existence Date: Thu, 21 May 2026 07:34:24 -0700 Message-ID: <20260521143428.83157-15-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521143428.83157-1-sj@kernel.org> References: <20260521143428.83157-1-sj@kernel.org> 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" sysfs.sh DAMON selftest is not testing the existence of the 'pause' sysfs file. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftes= ts/damon/sysfs.sh index 92b44c86818af..78f4badb5bebb 100755 --- a/tools/testing/selftests/damon/sysfs.sh +++ b/tools/testing/selftests/damon/sysfs.sh @@ -366,6 +366,7 @@ test_context() ensure_file "$context_dir/avail_operations" "exit" 400 ensure_file "$context_dir/operations" "exist" 600 ensure_file "$context_dir/addr_unit" "exist" 600 + ensure_file "$context_dir/pause" "exist" 600 test_monitoring_attrs "$context_dir/monitoring_attrs" test_targets "$context_dir/targets" test_schemes "$context_dir/schemes" --=20 2.47.3