From nobody Sun May 24 21:36:37 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 3E7CE32B115; Thu, 21 May 2026 03:54:00 +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=1779335641; cv=none; b=uA1Xp6GkPt8D2kGHEgf60GsMb6ZE0z5XYEosrxirti1XFEYvDU0IGp9AD1cRXBmIWrEHDuIoyQOdNn2vqCG1HBlAXlGEzDPAu+NCyupoycMxF8DQhrMdDus7Ij64+XkygM68rND5BlmAUIwTPs20TJlDWq6ENjWl4QeATQLuwOY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335641; c=relaxed/simple; bh=8B9IiCSCXwYFGO3g7QwEtxLcmC3JtXQgAOF4um9StEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tR5bxzAHHhrIEUlFWpvkxy1OuYaZcM2ArS4ayjuhTEB8f2QF5F+NzsOHZFIjCiMH/HgsPatCnN/EBKrhsA+3D8wFBhNhoAf8sq0Y6pCYelqok1jBH7ejS2S2+UZPNPvh1JIxCAtyUl7OmR015YIHJuH/MKdn7BpIgraKeF5bl6Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=S5iXL/C1; 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="S5iXL/C1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB5621F00A3C; Thu, 21 May 2026 03:53:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335640; bh=5i2WVbg2PjBsmn2NfpjKEh0VGjqNajgL/l9BFto2EhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=S5iXL/C1blLg/GyK2CQmNtbMwDPo3AXZFESdgEudrFXr0+gB4eLnW/2CoeEHiVVg/ CgaueD1eASKKsZ7KwUpa2CtfZAQDOc8zkPdwxVaKguWFWFXjaTv0uaCKWN3pSnW7O+ bDJLwVwwIv6EmwrNXqa6feOMeC5OE3lVNUmzwR18x6lHQl1NhFuNDIBEGVi/f7O9/Y w+gDlv5V418PkQ5CYft9a9NKngoHUJjmjL9qoSTcDB383HBoZDD9sP+3Mh9UHuyFq9 E0S7nHA4yfQZAaM6YMdVdxPiB9BmfzwprER6t42CCeZK6TLj0rDPrQaoc4futrNIbY dyaxOhRY6+J2Q== 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.1 01/14] mm/damon/core: safely handle no region case in damon_set_regions() Date: Wed, 20 May 2026 20:53:35 -0700 Message-ID: <20260521035349.87565-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 90BD73672A7; Thu, 21 May 2026 03:54:00 +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=1779335641; cv=none; b=pYZXgTNZTZIQUi7/VM4qcXvue/Ihj8x6EpWPIlFRkJCJigm6TmbeBZuqBs/OS9GIXro4eIRM/PSrdw6UMV2qDitK9pX/WmgXwTiSzTKDt1uA/5jhicS/SRq/82ZAQRyHqfW/K1TW+HIirrMES6DFsVHVJrBTGLxIxXVLG6YVkHw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335641; c=relaxed/simple; bh=SeQSeIT9kw4GiQ+HZa+CgcRvg0CvL1bbL4gPUN4MWDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Pu49FWzm9Nj7/7N2BK4YrXO3JK7EXWwp3mUOb6x53NwSpv4PaOE7JKte39Cvt+kOrveOGfmnoULZe+vwe4OJuqk3P23IqhMYx5xmTmIlWan8JM3opEhh9KlkqkYRTLwfp/ZyK85GZ/gr46Slgx3nfkX3qWuvUo8wowu5GWe2b3U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iDvBnehm; 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="iDvBnehm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A1E71F00A3D; Thu, 21 May 2026 03:54:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335640; bh=iMM8ZRfSsARmGo6eD+hRIbIxGHEMj2jHM5nMAylgAOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=iDvBnehmRwrVXOGnplb24UwMW47ZtquKrCHal2FynT4Ad3Mp9Q9J40uXtQF2rdiR3 YzxegO2k2fBKjorOE+WtZaQYhoQ4F2LOttuwuKK6pYUtm+fr4WTNW/lzNet2rY/tZU O/tzrKzPt1fZwl1WEbUwTA4lFu6elBajsb3v31UFjGCXmjKYAKpXdPw9hQH2SQDEtA xttATGDDDmfwxcI+m+fZKaEaVEpZh2jrtQjt3r2Fievnbm6TU8osdgLZmqQgZGfsmj 3gphpztxGPo2dBezI0az/vtMF5mJSkLEKmRVBO7zYMn3m9wqKENvMG5/8nXBFJH6Ah LBBeMPB856YJw== 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.1 02/14] mm/damon/core: do not use region out of a loop in damon_set_regions() Date: Wed, 20 May 2026 20:53:36 -0700 Message-ID: <20260521035349.87565-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 E084536A01A; Thu, 21 May 2026 03:54:00 +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=1779335642; cv=none; b=puo/jxUKMYlVkdpf8E3AC+vNhkb+MMvdlJRNpR1vdgE78Op2CInI3bwyWE5jaYdJhJ4mSzwhcVZw/EpETLnXw4vAbgib0KEP9dgkCOmrVWj6enqPuCbzbJqJJYzGGkvIUp5Sg+CRicYMDLL/IhUu1RjBI8dSxaXfQm2V2Hv0ToM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335642; c=relaxed/simple; bh=HU4D50xUEXGTjEy1hYAKL14nhun18f8ZSclPBfAPuZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P5fRgqR2jysffb79DJV/i4MhXNlpK8q5Koo3GwFf5IPS0n/EjxQYUQBP/X0GIEFWiwjOwGvl2a6Mpo/hvMvlgm2fwt54ty+HwHnHSKpeqh+9HL6ah2WwNZb92hT8098XhEClFRi9bAc+BZCIm0XKWil8y/qotZPdzrWNJSpIqjQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dlwjjmAN; 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="dlwjjmAN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1E561F00A3B; Thu, 21 May 2026 03:54:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335640; bh=CRNoWJlEPylYeAv7EKMrmhsVza1n4tj76p/bqvx4fJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dlwjjmAN5exUXxKzSr7aztzw1rqe/edAluNaa+H+ezpC15TEu0GqGdqUy8XYKqgdP PZUYAzbZDo7IdEabFTcFJyZJUbMKynuFtEsMOAnPn1Q1qqiggl8cVHjYYZlserVIyK OZRkOKRbDTAarYHDj7f5HANnhoigVurCbNnMSVB68inIcJmFNiykQ50AedJFDPTKBX 3v7amtV5PxRbKqS7AJrVF/pRDr9GA3z/X5indIio/MQ10oqWYACopnjaflhWau2ctR ZkS4sZ44xiL0P2t//jcELeaDmjsB7o3n0FWfJA1+BSnEfkYnMTGV5ht8dj7/3AQiWA lslVsudX3oU8Q== From: SeongJae Park To: Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1.1 03/14] samples/damon/mtier: replace damon_add_region() with damon_set_regions() Date: Wed, 20 May 2026 20:53:37 -0700 Message-ID: <20260521035349.87565-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 884CE38399E; Thu, 21 May 2026 03:54:01 +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=1779335642; cv=none; b=VybCKHsjNM5wB4KfZb0WA7j7UjLlME+VhGqlL6C4xTmtBdiCX0yoBxgqwpgR1+qkVJT2xo1wrdEj5GWbMuWr/y/rkTPaFVXAf6OvYhpXPS4nNXKkT+aJ8QlYwwArlkbHxQHbdsbSkyfJmaFrBWqkn/+k78FVTP65BGCMr0dJM2s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335642; c=relaxed/simple; bh=LaKbAUXFSNYX73Jrxh66NdV0w+R3T7/3EsMX57jlay8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mpXRoD2tLGw1994X0sKFSsvr+td9fNucWdGIoZoB8WtEBqYu+l0d80GTwz238Ll0hU4JAU2dlo3vugsm43e3fICe/RUTE2Q2DEXkBx92O4PY1ooaBnAr4jAHdyL6ceojG3gfHoo23U2qV4KB6wm48PqrJcXveCna+qKG85fcz7A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KcQOjP80; 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="KcQOjP80" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EFD9C1F00A3E; Thu, 21 May 2026 03:54:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335641; bh=Qo8ff9y7yiTQLpylSBvlVWCBzLWB5436sNPLCqpj4FA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=KcQOjP80SJLuSv+Sj3PuAG5mkdl8+tLHGHUBswTuBU9RS7C4Wm98B9XxMTTo9lnyH 0+dBAGmDt+laIK2MklkzrBPJf7oNMjAw4SRNIJ0p7zALt9s2jvMtGCPjAhTtyET+sW AinKZ2JznVcHTu5WRmD3UPp6YKdMBT2nWcsSy8sxx3qXlLi1+Xpl2EArRmpX0SqGck IzKo9Pt9S1bY5/KFzw3d3wdXHDoZbiQ9F26iFvLHpU3BJVg+xwLjHJP0lima49whpe SMzPNR4E4bVnGufJ3xYbu3OohsDYfiKvfR3vskyz7bEXIZpPXfyeYw/Q4MJz+7TWAm mZfBXFtosd1aA== 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.1 04/14] mm/damon/tests/vaddr-kunit: replace damon_add_region() with damon_set_regions() Date: Wed, 20 May 2026 20:53:38 -0700 Message-ID: <20260521035349.87565-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h index 98e734d77d517..de30db9b753e5 100644 --- a/mm/damon/tests/vaddr-kunit.h +++ b/mm/damon/tests/vaddr-kunit.h @@ -132,22 +132,32 @@ 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); + 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)) + 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 21:36:37 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 CFC89384CED; Thu, 21 May 2026 03:54:01 +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=1779335643; cv=none; b=uvUYvC+9sRYOzojTvU0gYLVgmb5TTbAqScXZhOTn0Hv+PdIS9YOU6tf/xzbEgDGPTVvzwbwkBBzokgOd2AdNnkgHDhBDxGZ6Neo8D4/HSZ1H3nCuGMT2AtpHhyKHKNVVi1SBO4j5k+EWx6yOuElr9ne6694Sd+fqfvTqfFeZqjQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335643; c=relaxed/simple; bh=U3R/VpB5fsj2Kzc8E2SVAl/KkIrkOZVOd6iQ6EUqjEk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gRwjGSfUR82m2wLKvXrRRKYb1Bta36SbZPMhfTxsG4g4pYSp13giMI84QUXLSGDOZOWuISlDLkzgasOxRkCh0te+vEwka3nsheqf2vNJwO30IpNPALLa/BTGY3eABnOpFhub0HORT/4QjmClcCdZQUTrGBA+DLrEEPR1ApCCGUM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GS5+7yZj; 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="GS5+7yZj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 781701F000E9; Thu, 21 May 2026 03:54:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335641; bh=lFIspApNE5pg+37NC/h+0JPjyuQa8BCwW93puC6WNUA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=GS5+7yZjHYzX7LCTWtc/L6DB9/sG5kpJFCaI7/n5532/xEpMUQ8vgusEhPmw7T2Ma gBPdS0RgSBPhffmGarsfwajErtI2+tb2ODKgAFSfcDtYQ4WMLPPr5uc3HCP/tZYZE1 6+3MGEsi7xrtaMlgdqYEkfRy7TyWmS4KE8osSF5a3BMXvVIbLyvZ7TmsDG2stvNLhP HmnR7JOFKL5lKIQV1VaoBM41k1OK1A94XvD8NktytC3BzXx4DLMKS5mQCbJ7gD3/6S brlslJnwCdkRf1omQA0OVgU1F72nIht+f6FCkgL7nPa+9vXyDL9EDwZmYEdITHqzZV 57NIIx8CleC9A== 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.1 05/14] mm/damon/core: hide damon_add_region() Date: Wed, 20 May 2026 20:53:39 -0700 Message-ID: <20260521035349.87565-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 588EB3859F7; Thu, 21 May 2026 03:54:02 +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=1779335643; cv=none; b=Tv8t8e4LM8lIMHJltOVyH0lbRPB/sS/r97VLq/7lixAs2+2mSQb87jNmFfrjxe6MbZxKLSkncXIB/IlR6cqO36AJz0F894cnFNzy+8fMV+hZYqrOcEy10/JGW05qxictAGCAvB4cEJMAN2hYqrW3ffPB/y2ZPA6mJfh61cmuo2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335643; c=relaxed/simple; bh=/YKZkQU2w0xT9X6y4g6IAtKtOkJAVQT/NTHny/zpY+0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XgcpFWPuu668QCD+uZmT3UC3TDb44BpKvt+w0kN/QPVmdKxEITcY1JoPS8/yltIL99JVr0hqLho8YYph89g1jnQYtzyBTJEYwahhHx47nN4MFnPD7Qz41jMxEqwQPOb5BQI9KqLoE44bpjqp6UEsiuxZ4Byg7hIqegTbDw5EA1A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dLCY/Hon; 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="dLCY/Hon" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D775A1F00A3D; Thu, 21 May 2026 03:54:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335642; bh=NwOzNgtGbmRdNv9xvtTz1sguHFhxD3l9rWcheeXYL1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dLCY/Honses78eLJnMDM5fSxNLintajUZI+ScYIp/brNJWO1IL6WIw5ZQMLY6qT0R ysPNvK+Klte9z/prExDgT4IlT+oEJaB1s/qDiyvcCEZeJSkcTxoNYKoGDyhHqqRECY dJpuH8Z8Hj14EYHrrRTjgYiJOrC7c+5T0gPUR/dXld17O4cl1Xl0xjNifbk0oXMiOT 8uEkLU0cOGWh3HmYhCsX61z4RUFeJBXqTg/eon0ZCYHObCZT2BT2zjGcz4+CqBS5L9 cFpw/HmEzl1LSPfyJdt6P/kHfK7WP/P0bdAW+UDJumFf6PFZinInxhlYRsIs/IdxKk SDcwx2D1t05pg== 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.1 06/14] mm/damon/core: hide damon_insert_region() Date: Wed, 20 May 2026 20:53:40 -0700 Message-ID: <20260521035349.87565-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 87B3F385D6B; Thu, 21 May 2026 03:54:02 +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=1779335643; cv=none; b=hZiT7CNgQw76A4WVx5xdj0vMtDeQSTRU5oPLd57fk7aRIK7n7wwBbYTTVRae6K7+RYq6ElmnQxRp9v3gLMZlPtc7MPYhWmLjgGagyYwc7JU6V2W5mLWjgB4sJs6/V+YOCVTysuGLgzFi4xE5Chmxjin1LWxXCaf9wI6uAm9oGWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335643; c=relaxed/simple; bh=Io1W+l0y38wprpiIkcNjCK1tfQcAY0yDIRtRdd0LSw0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ybz1vM3BUGZsQd20Zq8UMg/QTNO7/HqHJKKM+1u/jZ31dNmNLh6UifoqkXMPjHCBf4IVBXEhbmk8x40Jh228vAqnuo/760nMIJLxCZj+hcO3oZO1Kq/ibr3wfU4r3kePIaXKhhE5dYWqVdlg/P1dNAFi/pvR9B+BidMCh5pcwvY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AnJrB7cT; 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="AnJrB7cT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 407141F00A3C; Thu, 21 May 2026 03:54:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335642; bh=ITBL4yRv8OcoOU4P8OrL5kgNMtEVib2v8kU4r8mcDLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=AnJrB7cT4v3dYGSTNMSiwj11LmzPl3hj4+zec1b/QKOlZmz6Jbv18DBi2cq4Z8vIu QSSFsb3zfslf6R2teLc+/GMdrw7Ehs1pXQDfeMo9sm7mi31Eex0LsHseyjm0UuIkUZ /eCjIagNJjvgnHVGkQGZ7+XAYlIcDgLQ9ARyoxBvhEYBKbYv3Nq3UFIOp7pYrMDNaz BG7V4mztpawULh0xTOyvpyPv+VXNoEEeTAdQ4ufCSL9/zvxGNyGJy9u3PJzzpaXnYP vVh1CJeEHjNiPvikfAABfjIMvl5xQ89kJG258ePEvNra2GGFkYVhqaSQcLovHhOe0e aESjE1abkRpmw== 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.1 07/14] mm/damon/core: hide damon_destroy_region() Date: Wed, 20 May 2026 20:53:41 -0700 Message-ID: <20260521035349.87565-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 D8ADE385D85; Thu, 21 May 2026 03:54:02 +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=1779335644; cv=none; b=U6hYq5C+4kMj5XV6KO5Zrt8RKnYaa5V78JtYVZIM7QxMgA3gXV9/QxqG9+4gAoge/og4GiuR9VY17Uxyaaiza8/+2/AfhEWwNK5zpt8H0R/FPX2pthlOO9feywA9zNFI8oT6apLCsT/IFTfdPUvziNgwt/V3Qq2wd7pJBvmknd4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335644; c=relaxed/simple; bh=C0Qiz/68PoSKpJYdHo2J3oJvAucJHQFM7W7CTyDoh2w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JNmhlqlSB9mdRrKMhJgKh+CSAO2oPgCnF7I3SHEp42KWc6FZRDpVegTEZ42olibtwn8sf+h/b8OmaLBM8vlhxdSi35hbh4eCBaDp/v3hOCLnXiB45OSKmkIgvKuYjZ7/i3LHBdmDKOM/Z/l2npJXMcOE+A0Zq6rL6YewHaQiZXg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ks9saREB; 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="ks9saREB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 96D0F1F00A3B; Thu, 21 May 2026 03:54:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335642; bh=3LRLg3Pzb74v2r5bZtbtebH98gpHkUBcEoBkx4Qaj+A=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ks9saREBtZOWlYAPafkbYozBvHE7crHWSGnyh8/GJsZINt/3zqYHh/B9nm1pDFLf7 RlfFGKegD4ZcvdN4oRUK/kDitm5IAELqD+t8Cr+p3o4k3S6Wy9gda5Ri89bn7rw/x8 DJkg5jR8VlbwJ6m74+vKZqcS02VgM3xNQ5rTTQcjU+pZtVXiKI1LB56DGnfm+GoC7o nmOahC3p80pHsHOt1jHMAXT0qtUXtPNiflbBWCavuMUPLC/FZ4ByDXBKLAmpP25VGe imHWJgTgMBN1U8ga6TZm3XoCTzjmgQW/hjmqjG1SdEJW5i/YM+zfR+GAzvNCh4gEES n2VBk1rVl/IPA== 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.1 08/14] mm/damon/core: add kdamond_call() debug_sanity check Date: Wed, 20 May 2026 20:53:42 -0700 Message-ID: <20260521035349.87565-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 3D5A2385D9A; Thu, 21 May 2026 03:54:03 +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=1779335644; cv=none; b=Hi2jtTFhMjLfXr+5DZgadcjhp+VMmzj2/kyukEzahN8RdcIY3I+zAx7ZsPlZtJwCJmO2DRAG42EZsHZb7O0iyA0/U8HcDUs9ZxPB0AKOUgInk8/U0a/ED9NOLwuuEBJyhw0XwJ/VBoNwm7/+/3Sr0uyxgGcTWu1eSOLSeUKOmfM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335644; c=relaxed/simple; bh=60hNbVqTSP21yPGuac3bHL+OYhfMoIX08QASyu0GIRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kKpaH1fbE1QM0eRK7SWBqbI2VJzS12No7+ZMC9yHNjcW/STwgG3OnoeGW0gCQVorIupJmw4NG0bxr3HtBr5nhvOHd9f5IIF9xMLEV0Bht3Bjf4WVDRboGv2xUzSbTCC8Ysvo8SR+G2sGsEllRhGPvFPO9L8wiSk/w94/W1d0FgU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MljEHJLP; 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="MljEHJLP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EAD591F00A3E; Thu, 21 May 2026 03:54:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335643; bh=rlDrTS/qDNMBtSrkkbpm6odK2sEC/p6nHvamOoXHSXU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=MljEHJLPdHlsbffSNnQPQqAl/ys71TtEecpF6sfGRJrYEPiXomGdTfS3q42D4sRTn VlaX6Sawr9YNeS/6jnCc1lDbUCj1dm8rt+NEr2W7/zQN0WoUX/D31yjMiIrrnVcGIz TNm1YW+rquPrFqUktF5qEoTca7UZjWIalqKArT1Usfca1FBP1wUQ8qDcnPNpkB4aKP wigTtk1u0z2M5bp3s935yV/68gr+GwcB07H2NbxCBRARW+xU9pg9p/Sl0PYMu0c6mw oLthl4minkCOPyQosegn/93FXSfId2/M08NvGpGmU1FFWE79BrfXpnTx4xVsO56Kzl U4IbFMbQsoJoQ== 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.1 09/14] mm/damon/core: remove damon_verify_nr_regions() Date: Wed, 20 May 2026 20:53:43 -0700 Message-ID: <20260521035349.87565-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 BC5C0386575; Thu, 21 May 2026 03:54:03 +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=1779335645; cv=none; b=rREqaBwLBlBR/1yTr2y+bsN465KpJNtiOfz7OpySW7KSG/8YNWyXjOOP3gjgOoYVdLLT6TLvg/APhUfDeRVC/i2NVNPhQKp9KEIo5GN4OtXmBxF1+76gyB5YhENDWV40ZNLAp68+Wmtb3vFKBaCyVLsP9Tf2HQl4KLKNOKq0zeg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335645; c=relaxed/simple; bh=APLmcBIo1O/M2Pv9o2Vdrv9QdP3CWdcypcr8bidZpQw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UXUdXScL5KpRJe5NtN/b6/Rp0+hFZ/hgLTPIoWs9eVQjkYs0Hw83pkPDku3EtC/1mCEgOxluP+/RKZVwGQ+AzRxFZXYtbgAqQEDQruEaXX/SY7EcGy1ZN/1s7Z//IsnKTMMyhxHrMcf3+J/Bi+n4yBZ5z5Z5qVBCADjf76+PTlc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bmzAYJEl; 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="bmzAYJEl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 539221F000E9; Thu, 21 May 2026 03:54:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335643; bh=rIvjFu8eu4Q0A0nJgGFhpNwMfwikQRRw8RbElJURXJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=bmzAYJEll8beXB1K/C2rujBcnZyVxDXkAMd3rVCyK9z6Fpp86xKLbo8E55/uw7VVb sU1Aop6f5Z4N8W+A9qVBfohA5Fa0unL8Jrsv68U+VJofuW4CB2JzTdGzxjTu9NC2Pa EdG/JRw3hTz8oRZ/amUEiC+okx0En2B5c9PMFbPkAQP9dTEL7SiFMfCPPqS0PtkDzD 9mArS5FsCI5EadfOgVKgWd/KRBajy4KN51uyjTGDJ7rIGYD4eJB4Vr3tYZpUEp3B99 vV7ssmAz+bxGlTe4DoE2unbYgF1lE6VSkNcmUwXWVfkgAEyg/j58IS+lCvkxcgVL58 GAQdNDK6UGfqw== 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.1 10/14] mm/damon/tests/core-kunit: add damon_set_regions() test cases Date: Wed, 20 May 2026 20:53:44 -0700 Message-ID: <20260521035349.87565-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 27250386C2C; Thu, 21 May 2026 03:54:04 +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=1779335645; cv=none; b=sDphQoScoHqLVoQobv3AomfLEIPZgJkFlbQjN65QV7ennf/ahNW1XtGnrtcvdH9zI2rLcT9rQKxTiH87WsHQZH7PXr5/yONVfUS2d8l7/R+gDgP2VuLUdFhgylySlMXkRECDZfUYEljPWFWHzKNMjRulKfGl/EeYer8uTTIESOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335645; c=relaxed/simple; bh=GCwpp9tVndKgfB2xT0JiM24CGov0zLgkMw/jizl1l1g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=s/nacjZTtm8FejJ+X9kiGfBNH8900otm0WIkXgrDGWXzZExOnlrcUQo9u1g6MXldDAh2Hrzb6CXQi/d56Q3jn49f0m4jadCl8exYOrdVysWFDjhHvJUrpdPYqG9Nmv9lr8GCeAImB3CsO9YgLXnUQu12dZSkGUDJG0aiUmSfaJI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HwHwqvHu; 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="HwHwqvHu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CE2781F00A3D; Thu, 21 May 2026 03:54:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335644; bh=iEjjWBHpUcq7nMlrb1+WzxDoNOgxUnUZ3YjegNS7FQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=HwHwqvHuE4iTfUsnnGzJKOLH2zxQ1Q5yirNcCod+GrrmVHGO2v64bu3g1g238SavM OQq0i4Ws4Vd/Lyy0ObdczzVDaJnhfyqDd6H+q5arx4JqcbYBV6Im4Dz3OnJvU0++3t lfSe1wD+jGIdQRiIGaGIVFdDj76DLqQfkoOj6qqAGwHDHvYKSq0q3kEeU9fD9fzc6U fklMske90bAOKzi4wg/EGRuPLFPe8o/hn8CN8u6KgSxEIAUkuqh8m3RuQwWmSxIjGA taGG63gGd6YHO3DDxQfhorsKo5AtqG+PEfX8pBKW9nmSyfcjTtHiTZXVOBHT2FjQOu g76bvhaXeoikw== 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.1 11/14] selftests/damon/sysfs.py: stop kdamonds before failing Date: Wed, 20 May 2026 20:53:45 -0700 Message-ID: <20260521035349.87565-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 87454384CF2; Thu, 21 May 2026 03:54:04 +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=1779335646; cv=none; b=lkYlw09wZzGWLJaQJ70ufgeJUbzlsho/T5rqg2bow88HX+lSDq1cWa0XAKE4ng2AjlZDE8by7REXFvAStqPb7ZjIbBm++X5+u0JU4RC1aAV25r5nVYCgGNGwHaNxsj9USlEQzua2yDW5ba7DCFWDQdgu9F0dE9sF5gvOv6SULQk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335646; c=relaxed/simple; bh=4Z9nDEpElV7CLHeQzITxn/6P2S9ErV3Ie4yqUQCoJI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g9CBzg2Usq2fty8QaKErqFXJ1WLF/lFyST4EG42MQCs0FkpB9T6CxTNEojNETV2gcJSJTwvFZ0wm5OoFVOXcrnMmiD2tH6qD4hYjEAgfGjlqR2fB0MHQurVLIA8KNVAqCdBcpJioW+TZZIS0aNmENJH0nzwNhowxuBCRsFGqrLg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OPAyD8Nx; 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="OPAyD8Nx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 38EFA1F00A3B; Thu, 21 May 2026 03:54:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335644; bh=9HFBKYb5cdZ3muhhdyyxDCFvE0VgsBfb1xW7NVeIcwg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=OPAyD8NxpIzSJ4uA7JAYIYRePUtprXVTVZDcK+8kwdINVjv/zm3kv7kL+j4hV6pW0 EEjXTeFMj6pCLkL0CdJ+W2BsD8L5P692WGuKufJwUErGLYfDFhrFz4CY9pa9/vkOSg 6tXmKTpGESqk6H0ac4lnrMkx2jh0PvmNarMTpnxw+Y6PxER8UCfYgKAHwO1k4JACKo GyyfYc3ampwEYLbwNRYNnrCpaxkJOPe6OnlkpZOzpIT4L1iHd299a801S9nw3eyEWL tx+kajdpdVyvIc3f2hzg0dqbDCEmmZjAvu+Kf0jrTiN2hHco0MSBFX65kEp5eGdfcA 684I7KLlsKvyQ== 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.1 12/14] selftests/damon/sysfs.sh: test monitoring intervals goal dir Date: Wed, 20 May 2026 20:53:46 -0700 Message-ID: <20260521035349.87565-13-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 E8D3838886B; Thu, 21 May 2026 03:54:04 +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=1779335646; cv=none; b=USAsL+Fg7gdFQAYTthql/kT2KKgKGQ8+rZx+MU3qoFGgSPkknLrlXuUMNo57aLAFJM10vxgYGSTVALsMnB8FbcyNco5TC9Ja0cl3FeojzbLjD3UeSDUIEufJB5HX6YPOgnxXIbVRc13xW+Eu7UNFim5jB7dfp9lOCxs5Y32CBdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335646; c=relaxed/simple; bh=ws0D8iuldfRLR1MHNkuGGInMFKktNMpgiEm6ektZ6B4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mN3HD1bQNZpiJrvNjZ2Uk6tMhSTpJ0VCavDM1hG40TrfjD1A5PoJraNw+IDcbdrBV3P5nllOJyEKJq8y6EoowSbpGwrIIwBv61ziBQ/ezDWrMA+ESevxB+l+/EMiJCRzSxKDsx3R8Hy7GE4pNEZTPD39QodP6GTd1tY2ncTG+ok= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BGH9Qp1X; 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="BGH9Qp1X" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9BC7E1F00A3F; Thu, 21 May 2026 03:54:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335644; bh=jOZYn/0HiUYme65VRURmz3VNOCuqOPU+0+8yZhbpho8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=BGH9Qp1XWEfEWjJYP2f9CMt2C3qFkQejYJvcjfvnC70ebGx2S1YF+u0Z12IQ4yYlH yCMnQvcGbHktu/OZJXbUUw0BjDyMLZzrl0mWFEIxGlKC/6oVqWlg6Pyq3Sw037SPXj 31pxKocSJOk/36yWdtoHaY5joLIAm37ADnzu/yInGPvprG2tSN8OTXWjHw0Pu8+XRC xhPlOO7ZFkp86enBttyIHBVBbfe70D74fThj0/cbF30Km93KlRiH00F2d6ceG4cg0U Yle5EeyoaIUuYSc2kEvc4xYg2IFJceeHr6nae8YAENL6UZN1AJia4i7NGZgTsOviqB d2Y1YB28vzxVg== 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.1 13/14] selftests/damon/sysfs.sh: test addr_unit file existence Date: Wed, 20 May 2026 20:53:47 -0700 Message-ID: <20260521035349.87565-14-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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 21:36:37 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 538DF388E40; Thu, 21 May 2026 03:54:05 +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=1779335647; cv=none; b=WNHUCW8PSwJaIl4WdzJoBZ+RtuSAI+D+m3UEgY5y0rDxVlxAymgjLr1C9dLjz85L7Wj6bAxzGut8Ea8aMM9MC8FSTjan2iQuhu00ghxvaBBNkSW906xWxoi/YQLBLEd7kTRKT+bHIkftxuRsFTFZLvR0azV3zVLtZWRZTy//6Uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779335647; c=relaxed/simple; bh=vlSxJq/mZG/PC7FG4BVhxJBrns4C2X+9/1QoBF2tbHI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=njlpJNGc45M4OEkzZZtChJoNYIsKTn5Bw32wj1YAY6STJZPjmOwStr84ubkGsN5d2UmuJXdS9mwnuOTwb+e6OYS7/TicxJiu6QmV/mtxXxf040x+jNnytrGir3v9VmhkY5dFJacCFWDkl20LpZq3XzZtL2NqIOnjQIOhjG8FR5I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PkR1vu+3; 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="PkR1vu+3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05F741F00ADE; Thu, 21 May 2026 03:54:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779335645; bh=9Q+fxjZuCnosHblIbwlECkpSubPFTTaxfUpkwZ9ZxQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PkR1vu+3aRcBKH3ROFFcXnfnFaEUHaQnqfOb79thz1yVdKKJZS970IEJnfnJnS0Om dsbNih39v3N4Ejs76zJpSpmO3bsoNfNXWVqJu11et0DoJBZL9UoN2+RysPyEMIAGfB HUMAIDaI8MobvdhIPLZPJqzliNLl2TT6T2i+qdkp2ol2+w7mc/rkY5U1l98Qs/vi+I VYxx9xG8FT+0ppyYjWJ/j8o5ZmYEGd4Vy6lgRinjXLJ5WxYOXxJM4znpC4JiBkVjB5 Xe8jEizUZ3C4EqQGepZmFNsUHV8xrvKOLA3btRC15DMfPR9j2YSMC2Nd3hOXcgIk2L fAK8oO8Rd76HA== 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.1 14/14] selftests/damon/sysfs.sh: test pause file existence Date: Wed, 20 May 2026 20:53:48 -0700 Message-ID: <20260521035349.87565-15-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260521035349.87565-1-sj@kernel.org> References: <20260521035349.87565-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