From nobody Mon May 25 01:14:32 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 36822374737; Wed, 20 May 2026 06:29:08 +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=1779258549; cv=none; b=RHfZogGT1YPu995mCfk0h6nKJ8UZUO8ft8um1wxW06f9x/Y7oyq8vDwON9wass1Kq7pdf6dHP7kWHrkqvSEeNlp/rTF2Y5okNk66xnUQFhvSiqw8MOZ7bIm2kIJ8zCk0xoY6lx8HspLzxjsMJ9VX657a82Tg4nfHyFlthtm4F30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258549; c=relaxed/simple; bh=8B9IiCSCXwYFGO3g7QwEtxLcmC3JtXQgAOF4um9StEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G5prRGnFehU4OkgfKD4/jVutX5NRzQABpV2zlU/OxAh3e7Lfa6drNi+0h9UekBwPC4BQDeXKGdIjE0bkBC4bfhHl7Q1b3u2CQu4dgV2ObA75PZ7SV3tviBjG6f6eqHlUne2TtZcuuN8NKxb3o7kLe4N8N8ZZqhfhvDTziAIvoEg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SyIpHYnj; 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="SyIpHYnj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA59B1F000E9; Wed, 20 May 2026 06:29:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258548; bh=5i2WVbg2PjBsmn2NfpjKEh0VGjqNajgL/l9BFto2EhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=SyIpHYnjvm5BvCUeqEVymybuuMIUQkaBuEJ8pOnKiKstfFIQQasKUJ8E3+IQRi8EL ++ItVK7QeRL/cDh/3UzevM1WxJc2l/rBxLrfxz+EqaI+WdxrdfF547J7zqN+fM3NM1 BOdn2Zo52cOP1D3oobAwUUoe9TpEuPeo0qxzI21COSS/ShGGs56TR7XW1llorDFMqY x+fZedTsTZf763mlRhzkDXMB+DOdOBM6oVxAs4nLW8Mh1ak81EQOHaserdRzql0HWu UhvQpB6DPCM7YfqU/P9R1Q7MsUifJTW7tfFC/wKO5UVinpsoOqYjLg6d7SkP257R0b y02wySKMDj7gw== 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 01/14] mm/damon/core: safely handle no region case in damon_set_regions() Date: Tue, 19 May 2026 23:28:33 -0700 Message-ID: <20260520062858.167011-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 772BE37475B; Wed, 20 May 2026 06:29:08 +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=1779258549; cv=none; b=DTkgCAWLcsYFBXR1rdKJOYMrc2DSr5YwsOJFfS6fSsETQryZuHOY+lO4G64UaPYQl+L5ZHWc+JtXXbXddXUTEoE3mwLH0XSVCUaS7V60l1DboloSO2m2WX5+jLgGKar+jFw8AAelIOo0kWtei/bNgeMPq32CCyiPVELtvWv4xVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258549; c=relaxed/simple; bh=SeQSeIT9kw4GiQ+HZa+CgcRvg0CvL1bbL4gPUN4MWDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PCPEJWLRXBDNoXqFqooZT+d/6dE9xQRbNfmYQ3op0hIWiPbWDk1e0smyMVB4im7WTziBVzuCuOK31m0hc4iDNy3G+7tZNzQ/WFzeENtM1edYWI8ZjV8LOv4ThIh9dbQXQE5l1kPid5LQrT1qaEMhkuYR8KzkSJJus0TYKivrnLA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Jeb/k8EC; 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="Jeb/k8EC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 366C81F00896; Wed, 20 May 2026 06:29:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258548; bh=iMM8ZRfSsARmGo6eD+hRIbIxGHEMj2jHM5nMAylgAOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Jeb/k8ECSQYxRI6pMowOh6vnr6v2+UOutb5+7NMmpN8FF1IXZJpsjUuTQ9yd2SvSq 5Ag7I03DN6djHqW2oGpkQZXli+vphAS5DiYacQptubs5ef09jxEkGFgiymJqWZBncz 9tPZte19BmEfU7f9nnGBfD+35oHbSe2O+HSDpgHH6J0AocP9YcvoFXKlwLRL+WrM2k WARX6EZRiFghYcrWO+oIaogBGaOEhXqF6VY/PUnMhboG3444EjP/YT1YyUcE4DA1OJ owN7iJszrl0AaSTlrb/LoFVzShHxxKa060kCKlomnzzS7kVMvcPjUvwjwHhZzzzkg1 HY9i5KvXSAbJA== 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 02/14] mm/damon/core: do not use region out of a loop in damon_set_regions() Date: Tue, 19 May 2026 23:28:34 -0700 Message-ID: <20260520062858.167011-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 C1D81374E42; Wed, 20 May 2026 06:29:08 +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=1779258550; cv=none; b=fweFTT+V9tXlPupMpox7tiGm+zZM5ABySRFVkCmFDEdIrxCz/PAtSekgLvSaUIHN2CUT24dii61fEEwud9hbSYqF+X9JaLwGo7W29Ka+LlX46pJV3HdC8y8pZSV54B1X5Chkjxkq8kUAW98gjwNE008RDpPowQ2nJz2M9t+3eHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258550; c=relaxed/simple; bh=HU4D50xUEXGTjEy1hYAKL14nhun18f8ZSclPBfAPuZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y3Zps7gApXuUgW8W9E1w+NEl62IGFxyacY7d8YsA8qpmPsG5HmFeme0Akw+dk0S79TPRXDBclZCaiCZ4amZzn1ZF4zpY3na1IB7XpAljtUXmnUix4/KCp8dniviX51o0jP+ZDxyN8AF5xnJSRMiXZ7J2kgaFsipMpiFM6286DbQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RwoCbvpT; 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="RwoCbvpT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 845ED1F00897; Wed, 20 May 2026 06:29:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258548; bh=CRNoWJlEPylYeAv7EKMrmhsVza1n4tj76p/bqvx4fJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=RwoCbvpTJSm+3gjcI+kXHqIadRx6WgRIL0CbfBz1U7AqVWHK3cxvJZmFyrN6ndDxM KE2SNvJOIGqFGn7eQnkZblRsP16GQ4VkZ3dC94e+jWm9iWesUFSvyzBaLG2z87g+xo CUB/7hxEIZg/guhyDPMNR6YKgm+cGukYESa71JCAZgws87Bf7d9X2t6P5G6sH4vPiF LpGIo2sIKVoWwA4wvwULsy7rOzD9Ees0JgvFaYoLRt/KFEHTJK+4rqY21/rIjXQfxX AgXRsPqU9R2B8Mj7NI1jup1/3se0G6/Cw8yR6j3H+ouuw/UtHtDn0aa8pouCGPR2m4 N3IP4pR3GNMUA== From: SeongJae Park To: Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 03/14] samples/damon/mtier: replace damon_add_region() with damon_set_regions() Date: Tue, 19 May 2026 23:28:35 -0700 Message-ID: <20260520062858.167011-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 3AD68374169; Wed, 20 May 2026 06:29:09 +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=1779258550; cv=none; b=Pnvg9WK4XmKmrdD+Nnw5A6jknks+h8kzBDbfbcQSAWDZ5xZkV+10yiwoutapVcYGqP26/5WJAWmnxf6J+cUDj0GapP9uPyPr0nlyyZP14VYPZG3LR/hjCCByZx+dr7YaloAXQVi2zeoxTmXGyHiZBQIDi33blq8SMmdDF5ffuiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258550; c=relaxed/simple; bh=fUXs1ooV7451ip14A+R/iHdCe9wlfyViAZd7Ivqs2/s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NsIU4E3grcM4cGDOldGtMxy6pPRefybtZZ97OF5Fg2cFu6DPTDP/JWrM6BBS61CNAEDqX0Q1hFceik6zPtfUQyD6V7oAXKOQzcmdKd3j3cu5xNqs2dr7rm06cX1kbRyJ7zm5bH/3sO3hofZ0+WQLhWT/f+3/cfHcriNNJ4vRPAE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Qc9Ddbcs; 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="Qc9Ddbcs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CEF7A1F00894; Wed, 20 May 2026 06:29:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258549; bh=S8O4uifXR5w5lAJd+zyIhegR4CRBgoI+b5mk8ksj5iE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Qc9DdbcsA86X1lN8rdsck8Ith9VhH7qaQDrLc9XUNLiDXWTpfyl0nWSdoY8JQasIZ Kvea/sdvegWG33X/AQRCGyfO4H7AIvL3w4qUTLTakt4pvhhwqFo+MUl/qDQE+Ed0Pu moZRf9SSlCFoUNLobHS6Z7wc3mNtyGXzKbO7tYfoCfe+fvvL2drL2WckEIeKezDIyl zgJD4JEBFST0Y7EJegat5eFxdjh165yxdTp79stShqyAMO9ZUpEB4KlTv59PrO5lWm ZlvQnySiUpTSCQFnkbfweQloZg7CRtyLlUmrxJDF+XMzLVcMh8O6+yXszgJ57959e3 J1+KPoID96d3A== 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 04/14] mm/damon/tests/vaddr-kunit: replace damon_add_region() with damon_set_regions() Date: Tue, 19 May 2026 23:28:36 -0700 Message-ID: <20260520062858.167011-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h index 98e734d77d517..23be9c3be75fa 100644 --- a/mm/damon/tests/vaddr-kunit.h +++ b/mm/damon/tests/vaddr-kunit.h @@ -132,20 +132,24 @@ 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]; } + damon_set_regions(t, ranges, nr_regions / 2, DAMON_MIN_REGION_SZ); =20 damon_set_regions(t, three_regions, 3, DAMON_MIN_REGION_SZ); =20 --=20 2.47.3 From nobody Mon May 25 01:14:32 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 C54E2374745; Wed, 20 May 2026 06:29:09 +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=1779258551; cv=none; b=K0D72bEmvX8FSy+eQSuzvacV9nw3lwdp36Lt4i4f82bMIzTK0awhL/kq5gVwx1WYU2Hwc3BJ/lHP7SFuF8ackninysCGbIsARo0qkTkRQlYWodnDlJS++ITiqLlUbISMDLCFx+DJP7/vxV3LENq51CZ1qDjdumFGGeHMrJ/yNVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258551; c=relaxed/simple; bh=U3R/VpB5fsj2Kzc8E2SVAl/KkIrkOZVOd6iQ6EUqjEk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OSaECEN/lgL3Uliz1/mTlMbqXJBCiY1kUidfdfbPKyNZAdfYbuXG9sM0sxZtd3Ul/KcGztnmSgSZhB6HEFrm6B9xIKi/aCX+Obz/nDb/H/5fZ4yoryJbLmzdbBeW/ht5BI5M8/oPmORE8Q9Wmg0jVHzdtorZfSL1wvorgqTFogQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lZHxq3jQ; 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="lZHxq3jQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A8481F00893; Wed, 20 May 2026 06:29:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258549; bh=lFIspApNE5pg+37NC/h+0JPjyuQa8BCwW93puC6WNUA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=lZHxq3jQWCrHS++tn92TnVdD6zBgrV6BBPNn8Ha50C5DypTJaqZKG1NuySYTb2i74 o9o430sNdQkvVKwvb7izM6f+bWMMZjzbV4Hx1p4mbsCXi5VMCGCzvu18HaqezGgpEm k6Wbal/09nScQxMs+W0gGn4xtI+NW4Na+xjyU2cIusnzIKmJaZ6L09raKbekpkBjdK J2RSXQSZv4HcFSjjiY6/E7vTPGWtkiItWcn1NosDTw0Fcyht0yi4k0bunPoD0bhJ/z +9HiwplnJ4GDp4zHvF1MsZz4yGKdbjWr2FynWifqdydze9TJKmKz4NHpMBmChTvA3Q DYSWbT6OKQyRQ== 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 05/14] mm/damon/core: hide damon_add_region() Date: Tue, 19 May 2026 23:28:37 -0700 Message-ID: <20260520062858.167011-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 E12B3375AD0; Wed, 20 May 2026 06:29:09 +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=1779258551; cv=none; b=brXBRxAdFUhrcmA3n5vhRoekqO/yhCRbvdbuNq11J4wB8BrrpwuzTwBoBw5/LbKfvS12PqJBKNvD679rSRuKjqB2SkeGurKVyNZ3H51aR53VSiFqDQJroQptWWZ+zY6aGAJBMm07wgY0kZftTOEQIQi1PWZ4XGhGxjv3shHUOR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258551; c=relaxed/simple; bh=/YKZkQU2w0xT9X6y4g6IAtKtOkJAVQT/NTHny/zpY+0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QKLCYC4GHW5OBliT/1v5nx1v7eHBb0BKzDIfnwBfhKV/xt86zVxz3mxLZMXbYe92dP1/TbB3CaWFntdxRWLidVJhlUwQ+5pfHUzc7rQCtYryo9dLe9/quFSEbMy/9PN8Ft0U1IK0deMbne64FhWcBNv894G2RM9ci+TvfH3F0ck= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jKNodR2m; 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="jKNodR2m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9A6F11F00898; Wed, 20 May 2026 06:29:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258549; bh=NwOzNgtGbmRdNv9xvtTz1sguHFhxD3l9rWcheeXYL1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jKNodR2mXQacDR6VwfgdI84XtuHCPEtfsbxXjj+VOEIJZHsmXqa9fgdgzD9zs3KwY oVQvotEN3KJh1Z7OtyropMGw052yEne4+wEvRukSS//nfcwVwRwg3PDBf6BxyikS3j 2o9r0acV01uzHH18rJOQkyKnAJ9n6OjE+n7afqX0ZMA26XyiP/lbQoq8ncOCB+/uYo x/S9mTXuwI2nJFowrXRJOvfijga5GSlsvzJmnZClUWdccPHM42CH/2Ph1DuJX1HID6 vOKEd71Awc0pVcel40aRflw20k0rzRNlT7FCPNLYfwp9EfcuYwXMsJolI1/kPG/1eR adROpNMleuf5g== 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 06/14] mm/damon/core: hide damon_insert_region() Date: Tue, 19 May 2026 23:28:38 -0700 Message-ID: <20260520062858.167011-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 5F81B374E73; Wed, 20 May 2026 06:29:10 +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=1779258551; cv=none; b=rB2gp1vgrV54k7mb/za42T7zilTWW8XuPSL5fJnlq+AFRGX0cYjz94PYClxA1phH3RF+FekHl3tjeKNdw+1u5UpW46F0rWtiYGJ1zCmWo4vOLcRNgcslKk1m5Uhk3MZ1RlQoAwJfQ611jelU0TfZdHO5i3D/i/X/AAZi/1ew1hg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258551; c=relaxed/simple; bh=Io1W+l0y38wprpiIkcNjCK1tfQcAY0yDIRtRdd0LSw0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m9PM/xUny28VD3Ys9otrYrUOQprr2iEBNSqRKhI4xLJP196C1exYgNarhrJFoOaWoMRdMt9Lq2DpMzqg7rctJHe75PI4BA5b6P/+rrCTCamfjhjf3lQmT/vkUx9LLoT7mmiTrtVsON49VXzWUH8/s3Rdltuq7wT4/nJJuZF1x74= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ID2DL7JJ; 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="ID2DL7JJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E6D1C1F00896; Wed, 20 May 2026 06:29:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258550; bh=ITBL4yRv8OcoOU4P8OrL5kgNMtEVib2v8kU4r8mcDLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ID2DL7JJPYeZSQ0jjUwov/oRAgofEngWExW4R5qHk4QNfT3a1ueGBiU6/vghmEgOy zXLmB+3CyWUq4Do47M2wUK4cixKI/r0Q/c6LcYCeu3aglhQscPBPDegJ9k1cVh2IRc gYyBX4eB20CIJxroK3zzw5DOzGDTlWIVDq+VLH8Yc55J59LHhAJgkCveZ9h29XcUtF 1S8sU2LXEBv/gVz5CpWCEeNJItlChnBeOyg1u3ZPmd4yyr5MhtXJVkBeLB3otXfeZ8 +vbHm11QdydAhzpYAH0nRlG1BmAvHgCKkr29ooCS5lV/HshTj0ZCI8kptskSeFSxVz tSx7A8pP1XHSA== 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 07/14] mm/damon/core: hide damon_destroy_region() Date: Tue, 19 May 2026 23:28:39 -0700 Message-ID: <20260520062858.167011-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 9292C376467; Wed, 20 May 2026 06:29:10 +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=1779258552; cv=none; b=dDFs+Sk3xLoGQ5HYKTBq8gYIjgJ1/KhuI7yzTyIWVRWAqdMzqvTPfuttBW9fuV5xiSorrkD5cBQOIWZ0EITjNWxZ1uTIuWiyFecodMuc0O8xXaOoGhnTDFaWvW/YG888itNDH6j39Y/8Ajib5JNAJ4doJEJrVHTV6pxOqkVhEcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258552; c=relaxed/simple; bh=vDoPI8lyHPrQfO8muAiHWGNu1mY1mz73wjqr9m+a9Co=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TgX6EZIqDcQSgwL2j+wf+k+vOuTDrA7dMvYLr2SZcccIGAIClHqzgnNlb/Na40xggraIAiTNJwviEmEbcQd8BntkDDxgTPc2I5mgUambMo06yd1jOqE2TADrTBO6Mf5Nz70U7JkQ0zk25KuaGGPURFKhjDZcKGWzyiLnyVZm7wY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=blhZA/UH; 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="blhZA/UH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4217B1F00897; Wed, 20 May 2026 06:29:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258550; bh=aYW2M5njFjCEQHIQ96ZTAgTiOW4IgJkF16+H3Etztlw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=blhZA/UHUql9L31Ecqg4e2HfnW817burhArAW9gQ71ugq/krO+fEoTqn+hLfMSfC5 3VPXnPY0eckIIvFijgoaAsf/x/UXQCQVoiPScrnD+v8k1Qa0sbb9S0g4JwprszQH6o 9u3vprjEskZlYJL03unY07qCGZLAjJf5rH2bohGhza3Wn2nzaXcp5HyheNP6ePyDUI obw9DDDPbrlU/UpHF/T8wiN+FcyWWd5UOCjcuetjDB2Q2KS5RSdLZHhKwGLRGJoCNI tTy+HAc/XZpdDyWBAXFtUlqHFoeb+NgJuRmTkUgMN2eVtZa3npQkwteUwzk+C36D60 WR16KRDZj+zbA== 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 08/14] mm/damon/core: add kdamond_call() debug_sanity check Date: Tue, 19 May 2026 23:28:40 -0700 Message-ID: <20260520062858.167011-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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..22327a23c7e57 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 Mon May 25 01:14:32 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 DBD5B37647E; Wed, 20 May 2026 06:29:10 +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=1779258552; cv=none; b=Ww7JzuaD2AaBMro/KZ9DUlbELn/MCJ1e8Qz99AdfPzG6PGpClAtDY4txpYRUqwEVpAxZGMLw3lzkcNkXLt/vneZCRwkUFVDbkDV5zQ6/9veM1gZEAUXFg83w93rZJmdivYKCrlzonPiiYqFrzYjn4Uj0wy6DDbQpH7f34t/TKK8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258552; c=relaxed/simple; bh=lpSts6uYgJTwQnR0tqrpn9gyftbdM1/PtbAdTF8k4SA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I36pBK4kRRPFgq9ikEcKwWcHYabQ12FPm72SbZ3hm1RNr0XPVzY4JwLVgsBzDc3aLaIIWZWkE/jNbkJJZ+lcGZdNb5Q1xWJtBMfXzqG8iJLaq8t9VyNa1NMPR17xn64ESWLLBgSE+P61pSxu2Rc3OA+n+/kuChD+dmZTvsoZY6I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PuffpziA; 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="PuffpziA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 979101F00894; Wed, 20 May 2026 06:29:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258550; bh=i4QYAEHbDCvNou4iBTdigpX/qcP0blVfRQa9MnkoH2M=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PuffpziAWFwnPx+GwTm5I81IktL90Ytz6cqBL47N2tAApCaD1794IXBGY0MSedK1C rw9QV5bzVvjay2UlCCZh7TRIgnnQK2fbmRifTouq2ueSu7LbHv9LpVsigyUKmgTC3F 0qGGzoyErrEbYAcD9JwZvu8YzEgjED1gTzEwTy6Z6ir7jFizIMgUpQGricmQ7asNhx R1OdbxXr1HAzcDYFQi6MxHFUFU9NOfNhWKFX9qS153UpEoNweD36vEjhxg47gsv2Q8 qLDyDmf471SMXGT3UL9iSD7QkAUxAxP+hZrJyjlxHi9K4QDMODlGE91820cxFthxKP Z3YKcpdKviQJA== 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 09/14] mm/damon/core: remove damon_verify_nr_regions() Date: Tue, 19 May 2026 23:28:41 -0700 Message-ID: <20260520062858.167011-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 22327a23c7e57..b2d268c4102db 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 Mon May 25 01:14:32 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 52B9C376A01; Wed, 20 May 2026 06:29:11 +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=1779258552; cv=none; b=q8JVic5UqtF0BKRbev3CJ4ncTND4u+3gN4UivYJ1K+HdjHXwA9XHMKoflFMNl2fhR/f5yFZVBPEGiJEXXjv+VT+Qg1WA0DdUPwp0WclP0Hk+cw7Ocd+YBXuf8JqEcst8vNwZk37iC3H3Jq5ys+Ujb6C8FPon4HacvlQx32iCQH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258552; c=relaxed/simple; bh=APLmcBIo1O/M2Pv9o2Vdrv9QdP3CWdcypcr8bidZpQw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E21IgzRY8uEDRYDkVmk8X59vSQDRXapYdkLxIQHFUkAkkomWSMw0/UmiHcHq+7rAWfzK3o1Kc0fb6Kl2jsiXZpSj2SbOmZ7H4iYStLfogN7JPxSmhA1LXeAs43l9LKcpVHjf6GJV0YZAJQduJPJpYRWR3P8Anh7+wtN+Islczqw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fuR8I19F; 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="fuR8I19F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E737D1F000E9; Wed, 20 May 2026 06:29:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258551; bh=rIvjFu8eu4Q0A0nJgGFhpNwMfwikQRRw8RbElJURXJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=fuR8I19F1m9pBdxloxt++oH3Cw/RfslMTjrJIuPFZPCkIA+ctzcY+cGkpx5BgZBrg SsfHRXNgQ2wQGOboEng6sT+dzzIH3iTfN7rLr2Zatnz4OmZ8nfTqdhSofXgzqlH+/E BKTAQ18k87VNeALftQYI3Ds5O76u/srhki9HGhROLzeOaad/S48bZRrTh14MwUnqkK VM72nOzjZ4k+rYK7DvuymSf8eyjz9c/MUwajeAgVLR/sKHcRCQcEjMBFmaETD2g5SL 5GQPTVPsoYSYmUhjR2RcibfveEkxSfB8GoquGH8BndzDt0NiOrOGhCVHvVMBpAF2VJ rFcsnwuMkpVfg== 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 10/14] mm/damon/tests/core-kunit: add damon_set_regions() test cases Date: Tue, 19 May 2026 23:28:42 -0700 Message-ID: <20260520062858.167011-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 AA91B376A16; Wed, 20 May 2026 06:29:11 +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=1779258553; cv=none; b=pSD+vMBnnJhgKmYK75F7hGma/ZmKA+VXb2i9DdmFSEcuF2YndcFv8W5/vDlYVrvfk8xvVcl1XA9nBGSZ7QzAzJ/i6Zas8GeSr1PdhYqACo0cByW8E7+1Akk3F5ywerTu0YDA4LijgGS6qikWkfT+tnM2kxZfx+lhWDZ43L8cabQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258553; c=relaxed/simple; bh=GCwpp9tVndKgfB2xT0JiM24CGov0zLgkMw/jizl1l1g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LAcItLv+YsGmMq7T8cQjRbxJYsUwesHTjxuhZBrQEYKfE8KsMP4uT4vmhmLlUKPJak4qyJM45aNIYzRmHWffbMgaycvZbvkYwukbmZcRzWWpsmdFwRjjD+iVB2lyBRt+rMJ7fqbpwY9c1M/JzNt04G/F/UnjMGMkZN8b/rsGKEE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y1WFFQ1p; 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="Y1WFFQ1p" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 61DBF1F00893; Wed, 20 May 2026 06:29:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258551; bh=iEjjWBHpUcq7nMlrb1+WzxDoNOgxUnUZ3YjegNS7FQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Y1WFFQ1peG1tdIc3tQ50EmCXo96cI7B6rJPGaL/vd+YGsCEzAZMkk+XZs+tMCNzJ0 jdn2kyc7ycDQbESb2J8FhToujJgW7PNwRH7q45GZv6tRgBm8ycyrHjw8e80lIBg6vm 3qw4LIszIavLo3NzkMvWQ1i59RwE85f40znoRhs+3BMeRNAaa8gPYbuSvOHpUWS1H3 c3szwCnoAJ+5H9HRKLUeqnOGPFmZFspsIq71KKwLjgrfOeDgnDMLt1mSN2J27GP70E p0icxGS+ftxRo5hzBHwUFg/TOwTdrQ18LdHMm8yMgRGzuQo52JiflzR5b3QJQZ155N Q+Cc0p28kyE2A== 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 11/14] selftests/damon/sysfs.py: stop kdamonds before failing Date: Tue, 19 May 2026 23:28:43 -0700 Message-ID: <20260520062858.167011-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 53293374E40; Wed, 20 May 2026 06:29:12 +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=1779258553; cv=none; b=HgEizrUomJCCJ/oau9e3TcUhz94/wBp+6Pm/A/Ky20T/zUoq72ywuq3Wiqeiw3n4u7vYCwmW6tJ6McbJO5kJPQ5zXbTXMTh//zFt4N2aEkyVwOOZ9PrVgRUTPJ9PF6VH8RXsD486NB4uqFpTN/BzGbiOLKjvrZlRaGFWEmnfZM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258553; c=relaxed/simple; bh=4Z9nDEpElV7CLHeQzITxn/6P2S9ErV3Ie4yqUQCoJI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a79qa4WqFd+7TraKiI1YsQzYIhJDGOhxRukA5r7j8b1FMHJgbpo3OwvyGjgWyBt0PKELQkEN4Ooery8u1IPbfJ8Fasdg0A7ezWilvSUjPE6p9dqc0rsigJHW0m/+gJA5t79ksbCnlbB+5zzEhmkp7sXEDJIdQ/gfhsc8sSmkn6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aIx5CwT5; 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="aIx5CwT5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BDEAC1F00896; Wed, 20 May 2026 06:29:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258552; bh=9HFBKYb5cdZ3muhhdyyxDCFvE0VgsBfb1xW7NVeIcwg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=aIx5CwT5nbcZRLOm8k2VDrxQfa8PQpvbQfcOhB7cOOIIXPOpGHttLzr5ixoqI/jgF X9ylB9chrO5IPmhcmMm4VHYaZFKlGKXc1//9zibxwUFmEMz3v/q8hmQ3bzjaNfOlc9 G66FwJDGBQj3vIyzeVAvFBETr/IDuwyngnLFtY5hX2T4SE7vhNk8QusReC3bXyjNi1 SNdSTxzQNCO5dDEQ/CAuQSLqdWQerxVsPvkatiNE7mAa9snjVJ4LLJYx63fZe3M6OO sLF11WqiKT03aXObWm+ComvFI+QFNsbWeIDQUQ9qERfnKkjFAr7Do1X/K4mYX5btgq Q1i24obrBR58w== 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 12/14] selftests/damon/sysfs.sh: test monitoring intervals goal dir Date: Tue, 19 May 2026 23:28:44 -0700 Message-ID: <20260520062858.167011-13-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 Mon May 25 01:14:32 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 6C129377563; Wed, 20 May 2026 06:29:12 +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=1779258554; cv=none; b=GXnSBAp5Pf3ZPWMZfxZ7+CoSiy3kn+EN4mj7gT5/2o7QQFiyits0DDEzoz0VNUYT0LjVWbB9YVc4YUI5Xeo/Y8vYhy/8r2guLbiAePchYgn/TPeiJRtVNAJuTERehpxsRKZbXytCFk3ZGYzXABjXrzKwPa6+jy+qdqFTP7uK+ws= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258554; c=relaxed/simple; bh=oKcvWEBB+phUNHkRtIwUr8T3SKEiRgFEfEgx4EAVppU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lrvi/dp/RYbWiWG76rVeN01FEF0EPE5jgCZrruHMwgd92hW+BWpL5nRZTTu+nBfL48S1hp/taGh8n2NZi5k6cO1IEXT5/GIUHVgBXDo7VcV9rwcOgEQ7J7EndJsSeLJnTJEoi4E9ZBm5vA8VY4x1cHo4GbZzh1tNdYilapK//Bg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PgZ50JOe; 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="PgZ50JOe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 213B11F00899; Wed, 20 May 2026 06:29:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258552; bh=c7A3rUBWM/Djhjjd8QeXCkcV9IZlc4S1Vf3PBEQN5+Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PgZ50JOeLiEuksmomVn2DwKHg94AZjDsM/IsCr3VtY03zr36FdeD4Q/LXTinb6HwO 2/UwulH0bEXThMrdWXxhdIEmGBkmM2BrBHTt0wtzro7wEi9WOLmcpSxwM3s2yEos3P bK+QfuctqcaejPwfxNm1Q1HHisvTvFFPnB+Pu+PiJPcSLp0TTCOPhzm+9P0++/bRAQ MjqesEPk9hsm7j5cP3Mnc+BDyznNJ/KtIdzfhuiFeFlju3zg+ZYw4WxdSlaQ2xgLjE wjgRakEo8MdiRY9Fbb3oU+giBP6faVa6tBkluW8oO2rP+gcog2pP9lVpg9GrY7cR+u oCj2LRGqgMb8g== 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 13/14] selftests/damon/sysfs.sh: test addr_unit file existence Date: Tue, 19 May 2026 23:28:45 -0700 Message-ID: <20260520062858.167011-14-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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..1e10881afabb6 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" "exit" 600 test_monitoring_attrs "$context_dir/monitoring_attrs" test_targets "$context_dir/targets" test_schemes "$context_dir/schemes" --=20 2.47.3 From nobody Mon May 25 01:14:32 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 C4614375F83; Wed, 20 May 2026 06:29:12 +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=1779258554; cv=none; b=hLWztzqgcBxLhwHSrwe+p12DRbhR0DGXqOLD49IGzrXFUpNRpf40xxJBRTwWDuzPwzL4hfNm+YcxjoyQlQibFFlrU4pyZigzHkYO6z7oG6AzDB+AD9UqjArqNgnP0Wbok/susb756sOBPlQYooCgDKrosixNkuF419Vr90eyUxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779258554; c=relaxed/simple; bh=X9OlJ2prAobDVbk0Vv6nVK2KxF0mht3x911wZZmZP5Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=brHtxalTY5DpsNBfkJMBLkss5hTcqzpcDUbt6bSxd3deMrl/ai42SazvDrAyz3gBoJRSRRr3/Q244pfm4unp41qlzIfsDTmkfop2uzJtX5xDPzKWXgOe6FCM6UZzyNOFrP82IjK2uTw6jSsO+6chC2oho+S/gJ26nUgMf9Aoc/I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XHnW23o/; 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="XHnW23o/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A1261F00894; Wed, 20 May 2026 06:29:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779258552; bh=+/Povz79d87HbdJqBmb3Cot0viqAd/5mMxq8n9ZgbLI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=XHnW23o/qxj5i4iQoUcRFLWQa0b+Ptv0FCVoUHWJtZu2O+Gx5TfdLSpApc9T2X05c U7WTn784SJKdNBo7qO6EQAhnT65bROORu5FGAcWtVVDpICGyV5RDJdOfY5u8EO6Qi8 aMzO22HYiLZOYXhAd5lFITuUDHWCMW9Loo/IYW5Wwz5UF2dxVSovCg6NA1CRZZcLQL U5UfFMb2KHOFECwGoBOIGEUvQQe6GkjuLMB2pJvnjdchxaSJBzo4+jnJIcwmyQnCW8 jh9u+aRd8v2828E7XHVq8mQK+Q5FDY9HR/xFFIxwTuV5FNqsyyMYS9JpXWA9lFXXJ7 YXJSQiDoBeFVA== 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 14/14] selftests/damon/sysfs.sh: test pause file existence Date: Tue, 19 May 2026 23:28:46 -0700 Message-ID: <20260520062858.167011-15-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520062858.167011-1-sj@kernel.org> References: <20260520062858.167011-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 1e10881afabb6..ae002dd3c0797 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" "exit" 600 + ensure_file "$context_dir/pause" "exit" 600 test_monitoring_attrs "$context_dir/monitoring_attrs" test_targets "$context_dir/targets" test_schemes "$context_dir/schemes" --=20 2.47.3