From nobody Sun May 24 20:33:21 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 339E546AED8; Fri, 22 May 2026 15:40:35 +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=1779464436; cv=none; b=BEDzHxIqtTdJjTCm9GmImeIETXlaBrEORTo9knUBJ8CzTT/nS4ihPlKnbkh1DoenGqoCdPBav/TVOqfvnc8vXwWQ7lKHJ6taf7yMqz0e7sq4u9D+SX8Ww/e70rEkEUMTOUQKBcOU3+WVntVNkuvJ9CJNz74dfUOr+TTu9xMkLdQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464436; c=relaxed/simple; bh=8B9IiCSCXwYFGO3g7QwEtxLcmC3JtXQgAOF4um9StEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fPYi8Zg0yan3GTgXZqVaB/TnrnK5Dt61aDekLFTYBdDevKl2MKhTu1OX/N0PlMLFkf9Kw1doIMDBLfP5yyg/senVh9dDOmLFKwuvGn/iqcruza2u9+RRj+1ARS+BbSiPnCV+aAuTTcCJd9K8XI7ud8B9ZO0aLZGwT1k2Aew387I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Nu6VHVgr; 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="Nu6VHVgr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D35231F0155A; Fri, 22 May 2026 15:40:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464435; bh=5i2WVbg2PjBsmn2NfpjKEh0VGjqNajgL/l9BFto2EhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Nu6VHVgruu3i1j8InZ3IPJtcExdnKay13YJBkyCUQ48XduMjG2pcmZ9zkw2Vr0fy5 a4KkCmYBcV9WIDg30+/K98YB8sPiUuIwG4pnALMEr0Mvq9g8ZHTSZxLYwLv93nv2hK 0oPhnfylfUCfivCF6F4ucOp5Dr14CBiYUE6cHHbXldp5xNFXrivwYfmKh7ij5cSMQt rhWU/SmOHjvDnI4naPoyhQQmak5wYbMZeZgzpTILPwda4USVrDM0HraeGCx+UOen/e bBD8tYmINrQQuPRr92HOJZi7qAlMp8A4KVmpwMFOc2ttz9HgXEidQBv4rbgInb9OSJ N1THtg4BC2DZQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 01/14] mm/damon/core: safely handle no region case in damon_set_regions() Date: Fri, 22 May 2026 08:40:12 -0700 Message-ID: <20260522154026.80546-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" damon_set_regions() calls damon_first_region() regardless of the number of DAMON regions in a given DAMON target. damon_first_region() internally uses list_first_entry(), which clearly documents the list is expected to be not empty. Due to the internal implementation of the macro, damon_set_regions() is safe for now. But the internal implementation of the macro can be changed in future. Refactor the function to explicitly and safely handle the empty region list case without depending on the internal implementation. No behavioral change is intended. Signed-off-by: SeongJae Park --- mm/damon/core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index 0267faf216b95..40946a7f6f549 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -356,6 +356,19 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, damon_destroy_region(r, t); } =20 + if (!damon_nr_regions(t)) { + for (i =3D 0; i < nr_ranges; i++) { + r =3D damon_new_region( + ALIGN_DOWN(ranges[i].start, + min_region_sz), + ALIGN(ranges[i].end, min_region_sz)); + if (!r) + return -ENOMEM; + damon_add_region(r, t); + } + return 0; + } + r =3D damon_first_region(t); /* Add new regions or resize existing regions to fit in the ranges */ for (i =3D 0; i < nr_ranges; i++) { --=20 2.47.3 From nobody Sun May 24 20:33:21 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 73C47477982; Fri, 22 May 2026 15:40:35 +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=1779464436; cv=none; b=kpabkDSKHh2z4DqlbfMYAKX0mwI9b6pgT2mH9bUQybAgrDFugds5Ct2LR93bELWqDNFU1aOgIIZt4PMpDxaJVoP1Xob1ATRQYrUBwH1eJMxmdSVnd3XE28p+rXhCELUeFdENvq5u78GncHMMYjlLGSLuhCOBdjDTxfWj51gSJ7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464436; c=relaxed/simple; bh=SeQSeIT9kw4GiQ+HZa+CgcRvg0CvL1bbL4gPUN4MWDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dulvehIG5id7jP8eS+aWomBYOFox8RddUkzgzEsFseYCUOtIjTQ35gke3HDl5arkp4u0FLIktehxRC3TTW1x1zgAgmG+QtgYPIY+t2eZERb27A9WHNJh9HBEv8KkNEoI5E9gP3y4H9FsBqMQyYk0RUwumpApNK7rPFRtF2Kud9M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FMPU0gcc; 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="FMPU0gcc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3103C1F00A3D; Fri, 22 May 2026 15:40:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464435; bh=iMM8ZRfSsARmGo6eD+hRIbIxGHEMj2jHM5nMAylgAOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=FMPU0gcc510b8hEOWl8XNJ7KTOiGytz9l+pUedihaHWFRn6uhRrB/gBOKhTWft8Nb KNUV0QEEPs9xlYvEMDvorRwl7OXRGWmjadBvyhj2HyjAYg+m34AYb/u91F9y6diVBO Fzjrqt4+xp+Byx+X+4H+8H2BBPcQaoV93V4PycUJHwCLiS11ZdUDF9L+zFPqhIYFEE n+CsIDT4AAafAisaotM9bYGCa636a5HiGodSMGZUBFfXxfjPoTWrbndQ4rOwuIK3Uh QZE3ET4nfj7taaOxuJr5/xUXacJmh0Tmsp4ODD97FuQsWcv8IzcwsVuvsS1WLDaTKu xbM1VAq6dRolQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 02/14] mm/damon/core: do not use region out of a loop in damon_set_regions() Date: Fri, 22 May 2026 08:40:13 -0700 Message-ID: <20260522154026.80546-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" damon_set_regions() assumes the DAMON region iterator is referencing the last region after the region iteration loop is completed. The code is indeed implemented in the way, but that is not a documented safe behavior. Hence it is unreliable and difficult to read. Cleanup the code to avoid the case. No behavioral change is intended. Signed-off-by: SeongJae Park --- mm/damon/core.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 40946a7f6f549..e8cf3632115e5 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -374,6 +374,7 @@ int damon_set_regions(struct damon_target *t, struct da= mon_addr_range *ranges, for (i =3D 0; i < nr_ranges; i++) { struct damon_region *first =3D NULL, *last, *newr; struct damon_addr_range *range; + bool insert_before_r =3D false; =20 range =3D &ranges[i]; /* Get the first/last regions intersecting with the range */ @@ -383,8 +384,10 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, first =3D r; last =3D r; } - if (r->ar.start >=3D range->end) + if (r->ar.start >=3D range->end) { + insert_before_r =3D true; break; + } } if (!first) { /* no region intersects with this range */ @@ -394,7 +397,11 @@ int damon_set_regions(struct damon_target *t, struct d= amon_addr_range *ranges, ALIGN(range->end, min_region_sz)); if (!newr) return -ENOMEM; - damon_insert_region(newr, damon_prev_region(r), r, t); + if (insert_before_r) + damon_insert_region(newr, damon_prev_region(r), + r, t); + else + damon_add_region(newr, t); } else { /* resize intersecting regions to fit in this range */ first->ar.start =3D ALIGN_DOWN(range->start, --=20 2.47.3 From nobody Sun May 24 20:33:21 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 BE217477E4F; Fri, 22 May 2026 15:40:35 +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=1779464436; cv=none; b=au/nfF4GrObXehdhmuf1kSzhvHnBVrK+nbnquus1AdS5mFW2D7Hr51NYWnxNFhDLL9xdvWQtDtPhgFFKhsOl07q1C2PNAOlxLs+Tfr/RLICqJts3Lt7HUClRPF7LN7LeU3VPAL83k+ddaxIA1eJzrqu/P4GnxrKHVWlEyMduBVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464436; c=relaxed/simple; bh=HU4D50xUEXGTjEy1hYAKL14nhun18f8ZSclPBfAPuZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EBbBhI9a2CYoEnEk2avz4wFnlQmYxxo4qcRm4fbtiiyZPv9jgyA0bSVaLNaH3d99oiFu3hrfiGOfNezxRzeXR85sO5TPQiVnMtzAS4I68GWF3t0HN8vp7uOXqL/PSMwPgnTCe3Fbdeov1Hs+Lcv4cTd/H9bkDG8TpqLhWCVjbGM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IZ0C630G; 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="IZ0C630G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7ED111F0155C; Fri, 22 May 2026 15:40:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464435; bh=CRNoWJlEPylYeAv7EKMrmhsVza1n4tj76p/bqvx4fJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=IZ0C630GPvB3v3POgTGLrg8mKTcpDrl8Ln0Jsh8n9en4eZykTjRHOcgUAad78+7/I 2Fm8MJDfV3AzlEvvZvzeVVz380qaYjGY4/D0+LmNbdPFVwMihzlI6KzxZl+5pSqmHN UzbLs6kx0NZhuUHL9ksz/uh2pDICzmeEX/Kw7YW88qX1yJcYK6Enfeeq/YR25hnyJs 1OKVehV0IY8jI5ejbhlM5+at1ew7csIx1WOWq9Uw3UL+w2ljH7OlxWiuy6wbDHvkqx z1255h8aZrJ83WWbUT4oEbp3o91FInhEn1QTsF2GlfVGKXTuLYeZFxguFkEo2av3ck CifIVrvKfBMpQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 03/14] samples/damon/mtier: replace damon_add_region() with damon_set_regions() Date: Fri, 22 May 2026 08:40:14 -0700 Message-ID: <20260522154026.80546-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" mtier DAMON sample module and DAMON virtual address operation set (vaddr) unit tests are using damon_add_region() for setup of DAMON monitoring target region boundaries setup. But, damon_set_regions() is designed for exactly the purpose. All other DAMON API callers use the function for the purpose. Replace damon_add_region() usage in mtier sample module with damon_set_regions(), for unifying the use case and reducing the maintenance cost. Signed-off-by: SeongJae Park --- samples/damon/mtier.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/samples/damon/mtier.c b/samples/damon/mtier.c index 775838a23d935..eb1143de8df17 100644 --- a/samples/damon/mtier.c +++ b/samples/damon/mtier.c @@ -75,11 +75,11 @@ static struct damon_ctx *damon_sample_mtier_build_ctx(b= ool promote) struct damon_ctx *ctx; struct damon_attrs attrs; struct damon_target *target; - struct damon_region *region; struct damos *scheme; struct damos_quota_goal *quota_goal; struct damos_filter *filter; struct region_range addr; + struct damon_addr_range range; int ret; =20 ctx =3D damon_new_ctx(); @@ -120,10 +120,12 @@ static struct damon_ctx *damon_sample_mtier_build_ctx= (bool promote) addr.end =3D promote ? node1_end_addr : node0_end_addr; } =20 - region =3D damon_new_region(addr.start, addr.end); - if (!region) + range.start =3D addr.start; + range.end =3D addr.end; + + ret =3D damon_set_regions(target, &range, 1, DAMON_MIN_REGION_SZ); + if (ret) goto free_out; - damon_add_region(region, target); =20 scheme =3D damon_new_scheme( /* access pattern */ --=20 2.47.3 From nobody Sun May 24 20:33:21 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 662A547F2E0; Fri, 22 May 2026 15:40:36 +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=1779464437; cv=none; b=KbepTzcd0RhscIWt8fK8d0dJ0ltXMwtAr8z+IiIvBgk6P8WUJP5qYdkIX4Gvah1rRt73Qjw5qpQW72oqLuBi6SJXSV5SixBnVekASOdSz9hB+I3wfw9Tlo1vDaoD0xz8iu9uZEWBVbD1GgcHsrVeErksAO5tBW+02DEyYCaxD/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464437; c=relaxed/simple; bh=mNfg97l0DT5bsgZWe32uZCMNCLcD17spo4z+2wU6rn4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CLRXWSOObIo3iQqBOlqPnrHLQJ4u8tQ285fnOzcFOJwGOgsEmvRmBWY0QKQWo73Y9gAT+thnQ1BW9baFJL57GdpXChijAdXJHumReC1lYFVIHkFfITZmOfRVbXnGQofXPGfDyfBCvREnVxuG7ea3XTVeTydiJ4CXiw1c0pr4Zt4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fsRK95YA; 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="fsRK95YA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD87A1F00ADE; Fri, 22 May 2026 15:40:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464436; bh=7YG6GjDiTDF7+hhcDJxfKB/57kZkbDeh0ESzV1mlaFU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=fsRK95YAWFfmFTLX9KTNGpOXUjmYFrUP5XITKBJ6Zy/kioe4s+41wiViUR9ADrYUA /bEYTKwdm97qlXr4945OsxiSBAEU8d0oIkm5AF6ksYIRs4CkHR0iPp+ocMCevAGX/C o5gWmdi+6lvShm/tPw+m4Dc10lqcoRgI0RV8EA6PWkkvGcW2CBn//SrpWo7Qcs9tux gBleDdtdbJ9/uJWW9WqrIKo4pkPCR+pZzl1nI8sllYBT8MU4pwN1mZRAEbMia2SA1w gPkWwEiPe728JVD5t0GaQkdtD6bf9t5HEzYIDAmaPPSEqwABiQQ6OEIXBbsHDvLO/O 30UWotoCLPPvg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: [PATCH 04/14] mm/damon/tests/vaddr-kunit: replace damon_add_region() with damon_set_regions() Date: Fri, 22 May 2026 08:40:15 -0700 Message-ID: <20260522154026.80546-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" DAMON virtual address operation set (vaddr) unit tests is using damon_add_region() for setup of DAMON monitoring target region boundaries setup. But, damon_set_regions() is designed for exactly the purpose. All other DAMON API callers use the function for the purpose. Replace damon_add_region() usage in the unit tests with damon_set_regions(), for unifying the use case and reducing the maintenance cost. Signed-off-by: SeongJae Park --- mm/damon/tests/vaddr-kunit.h | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h index 98e734d77d517..563fbc7e3f448 100644 --- a/mm/damon/tests/vaddr-kunit.h +++ b/mm/damon/tests/vaddr-kunit.h @@ -132,22 +132,35 @@ static void damon_do_test_apply_three_regions(struct = kunit *test, unsigned long *expected, int nr_expected) { struct damon_target *t; + struct damon_addr_range *ranges; struct damon_region *r; int i; =20 t =3D damon_new_target(); if (!t) kunit_skip(test, "target alloc fail"); + + ranges =3D kmalloc_array(nr_regions / 2, sizeof(*ranges), GFP_KERNEL); + if (!ranges) { + damon_destroy_target(t, NULL); + kunit_skip(test, "ranges alloc fail"); + } for (i =3D 0; i < nr_regions / 2; i++) { - r =3D damon_new_region(regions[i * 2], regions[i * 2 + 1]); - if (!r) { - damon_destroy_target(t, NULL); - kunit_skip(test, "region alloc fail"); - } - damon_add_region(r, t); + ranges[i].start =3D regions[i * 2]; + ranges[i].end =3D regions[i * 2 + 1]; } + if (damon_set_regions(t, ranges, nr_regions / 2, + DAMON_MIN_REGION_SZ)) { + kfree(ranges); + damon_destroy_target(t, NULL); + kunit_skip(test, "damon_set_regions() fail"); + } + kfree(ranges); =20 - damon_set_regions(t, three_regions, 3, DAMON_MIN_REGION_SZ); + if (damon_set_regions(t, three_regions, 3, DAMON_MIN_REGION_SZ)) { + damon_destroy_target(t, NULL); + kunit_skip(test, "second damon_set_regions() fail"); + } =20 for (i =3D 0; i < nr_expected / 2; i++) { r =3D __nth_region_of(t, i); --=20 2.47.3 From nobody Sun May 24 20:33:21 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 973ED47F2EC; Fri, 22 May 2026 15:40:36 +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=1779464437; cv=none; b=ozmOH7/WRk5C+tNoDxS7hoEtDknBGo5sM8Ml1zmPh+LTvmxqbzxGKHi4nNeARx3Xm+8RXX7gma2/VBjGqh+INYgrenQZ0FXYJM2wM6v/6bR8OtLoTYlE+ZxSUGcJsPcS2DIywW8+HJXL2aBPLZmOctFSYeBMCwK6MiWjTtyo28c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464437; c=relaxed/simple; bh=FuUa5xt2se46JzutG7EYPDaZrQIXdRb0E12Me/sqoS8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y+U+iawcIvWNr/kHqESM8dUP6eUapNnkten+B1Ygqdwy79kV1ZVNt2hHK9qwBHlkU+bT5ipHbEsjr5b+1cPTN21tAu1tWCKMWGrxXwCGHZxKSLiFaOg4670WtIs5f1m/t7eKKedNWRRNkWkp9uoi4aa4BXCHzPOaibQG4t4ulBQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QdslDMQI; 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="QdslDMQI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45DD51F000E9; Fri, 22 May 2026 15:40:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464436; bh=IeG1YpmdwoxV7AhFJBWoBRuaRnNiqLlSgdb3KPs/hX0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=QdslDMQImV+uHeiZSojuQBuFR8IkIcTGjyombaOwDJVaukQK6eNdRLjYZy+ctmHk2 xVe5F/IxXjNCKJwZzYylmQRBNo5LXWcfRr3LlLtwN7DiOeaFbL1/I23GOQsMsiCwBo kNb1dxpo+BsXmkrAdpCHUMuEK62z57VKTGDjO2m+A1Ruj/qfv/y8gCdMje9VlgVQfg fEpagFaFdNILiWMhfx3Qwa5njDXdnxz/pwpcYPqgaPa/wnrpaZmEqkwTUNtwLZe1Lk Ie++/QpqVXZIbpgcGmZwmLqnMKFNLRCvZDY/oISmJxYMNNfEHaMWDMKB6rlmXpjyoo +t7Tqy9VWZ5MA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 05/14] mm/damon/core: hide damon_add_region() Date: Fri, 22 May 2026 08:40:16 -0700 Message-ID: <20260522154026.80546-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-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 08c4aaa690fa8..6ba80dff56946 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1024,7 +1024,6 @@ static inline void damon_insert_region(struct damon_r= egion *r, t->nr_regions++; } =20 -void damon_add_region(struct damon_region *r, struct damon_target *t); void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); diff --git a/mm/damon/core.c b/mm/damon/core.c index e8cf3632115e5..7d1de6ff54eba 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -250,7 +250,7 @@ struct damon_region *damon_new_region(unsigned long sta= rt, unsigned long end) return region; } =20 -void damon_add_region(struct damon_region *r, struct damon_target *t) +static void damon_add_region(struct damon_region *r, struct damon_target *= t) { list_add_tail(&r->list, &t->regions_list); t->nr_regions++; --=20 2.47.3 From nobody Sun May 24 20:33:21 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 D929E47F2F6; Fri, 22 May 2026 15:40:36 +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=1779464438; cv=none; b=ecrVdr2v1NUnWKjyf5GwprIW+UeHcaI9sRdIEkyFhQmXZhv/DRbDmA8Vg9lTLyVbh5W/eKdjxvoaAO/00+lgGschvEo9fBoK5gIeyLzedg/MAkWPaSzQ4ucHzG5tWYk9Fi+TXQwjq43IKtHUqleMfMvlE9GZYtxJ4+3Yc0XRBNs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464438; c=relaxed/simple; bh=hsvSM2B7iyKlppVSh4a1g7i/2SO96SVwa39Pg2p64og=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LL12XwmYhsFRky4lbSnP0nhni70KiAC3iUkY7FB8iDKsWgng54MpTCINOGAtAySyO3MaBXYrvkYz+HOXayIWeCKx/ShE3XRVqVFjHi+fZ1G4NORpYEhulsxDHAaPIUAkcZjPYFtcKvekxEO1NpGHdl+HTAbQ3N71gTvAf1+JWNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OMhFBj4Y; 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="OMhFBj4Y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 929671F00A3E; Fri, 22 May 2026 15:40:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464436; bh=4LO1dOAAxPWHeMgWwIocthOccI6BSn+cm+tEw9Hubn0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=OMhFBj4YwcQzQqOAhG2y1ylPij+zzBtTMGSPZ1txNtwQGCVsmy7KfxQPvc1HhQBJd t4mYBQYVIigRg+QSpdughFfVQKa4rzbVtxXV3PLrO6LGIRUiCV71u+cXPYgfqSNd5w PweQ65UqGSP7hua7x8uoGRPegNb7zjnjtowOrqzu285Z0tAPBedhi1WQ1ZIOeczkRH 7cXmNGVfkgRLWNB10duHaoP84xKxARQ0T6IYk+SHdJK7e54A9svEmdn6tv1Ym/260g S3QkMAHfhySDFEXyt7XgBzhCYtloHJBPfj1rLkil+h4Agwb3tmzw0pZlzZns8gEUWI gRDTLnwDNOeoA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 06/14] mm/damon/core: hide damon_insert_region() Date: Fri, 22 May 2026 08:40:17 -0700 Message-ID: <20260522154026.80546-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-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 6ba80dff56946..05682839e17ee 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1013,17 +1013,6 @@ void damon_add_probe(struct damon_ctx *ctx, struct d= amon_probe *probe); =20 struct damon_region *damon_new_region(unsigned long start, unsigned long e= nd); =20 -/* - * Add a region between two other regions - */ -static inline void damon_insert_region(struct damon_region *r, - struct damon_region *prev, struct damon_region *next, - struct damon_target *t) -{ - __list_add(&r->list, &prev->list, &next->list); - t->nr_regions++; -} - void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); diff --git a/mm/damon/core.c b/mm/damon/core.c index 7d1de6ff54eba..53b4bdd27b39d 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -256,6 +256,17 @@ static void damon_add_region(struct damon_region *r, s= truct damon_target *t) t->nr_regions++; } =20 +/* + * Add a region between two other regions + */ +static inline void damon_insert_region(struct damon_region *r, + struct damon_region *prev, struct damon_region *next, + struct damon_target *t) +{ + __list_add(&r->list, &prev->list, &next->list); + t->nr_regions++; +} + #ifdef CONFIG_DAMON_DEBUG_SANITY static void damon_verify_del_region(struct damon_target *t) { --=20 2.47.3 From nobody Sun May 24 20:33:21 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 5CB39477E55; Fri, 22 May 2026 15:40:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464438; cv=none; b=ffv1gSxeUe6ePZga6EseQO02QHgsJTqF4Hh8bQ72EPfxHRlWEoAwafJvN6Dh4alhi76KmoMiv7z9YBhv4l9phk8QtWZ8p9jQlf9ula9j09SYJRsgq+yshFOtVqboFpsaHeriwrZU9GXWm9IhZ0cVBuvyqHp8EFkfk93yhz8bbd0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464438; c=relaxed/simple; bh=2DRmI/tHp+praFYqzBIMl0KTx97leJxhLmEQMjiuHis=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YmzrenGMCtkxTeEJNe5IisCzA0t+TJSHOwaqtCmwo7XBf2juvnRVxY3Ow24k6mLrwgwBQ37N3SRd6ab7bjrGB9WIKYDbAmHOCtbMzcGRlZmWHXQlYyi7SPw/3X5SQuIssoORRlTo86PSctprn3DA0xQwtt8b40ChezF2M0e1JYE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VlmjDOdw; 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="VlmjDOdw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E12A21F00A3F; Fri, 22 May 2026 15:40:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464437; bh=KBZztZ9CgAPOtUYZD/myJUluALlI19duYVzM65uSmUs=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VlmjDOdwSp7wC35g8KCXMA+63FgKXTc9F1fK9JJrixLW50FOPpSszFDV7j5844uwk Dx7FKCNcRnshJEe45tBADG+FazFFlmv6/zLvBVIe+L+7v3ogedQeAFgwQmePcPZADl MojlSWmMSp5W2DWVstld9uOLrLxGyo44brGLKIytwkDI5iOb8JMtI7c1RhQZGeNeYr n5AsGlAqVdOCb5c/WWqCc/seAc50WWMdK0X5p8B+FbKO5frEqcYh/FdLgnDrsZryaO ripTniyHRPOjA7TlsjdULC/xNQ3dm0z+lnzZYuznzwlah05t7uxafToLO9ULKbuEPU 0W8rczn/OLSgw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 07/14] mm/damon/core: hide damon_destroy_region() Date: Fri, 22 May 2026 08:40:18 -0700 Message-ID: <20260522154026.80546-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-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 05682839e17ee..6f7edb3590ef9 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1013,7 +1013,6 @@ void damon_add_probe(struct damon_ctx *ctx, struct da= mon_probe *probe); =20 struct damon_region *damon_new_region(unsigned long start, unsigned long e= nd); =20 -void damon_destroy_region(struct damon_region *r, struct damon_target *t); int damon_set_regions(struct damon_target *t, struct damon_addr_range *ran= ges, unsigned int nr_ranges, unsigned long min_region_sz); void damon_update_region_access_rate(struct damon_region *r, bool accessed, diff --git a/mm/damon/core.c b/mm/damon/core.c index 53b4bdd27b39d..8a9202937781c 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -291,7 +291,8 @@ static void damon_free_region(struct damon_region *r) kmem_cache_free(damon_region_cache, r); } =20 -void damon_destroy_region(struct damon_region *r, struct damon_target *t) +static void damon_destroy_region(struct damon_region *r, + struct damon_target *t) { damon_del_region(r, t); damon_free_region(r); --=20 2.47.3 From nobody Sun May 24 20:33:21 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 86E2148034A; Fri, 22 May 2026 15:40:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464438; cv=none; b=Xme9czhxlP/eASVkWPvzk3vXIGuR8+gIXJqlyxW407QmL4fm4Jbw7thomRZAAXmd/Rgw+uh4POyvij/3kICtaM2mEXloyGKf9h2X7olo1J+dh3zAP+FwHWPmRZjFUgeZ9K0NSj6VIo7jgZBLnBz7yiNvGDtdtgjjcb3JE4TIR9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464438; c=relaxed/simple; bh=C0Qiz/68PoSKpJYdHo2J3oJvAucJHQFM7W7CTyDoh2w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y9Dno+AEYTZufGY5q2z7dwlgr5Zz9DHOa/57yGNJeXtNZaU1Y8pwgBeq1C0ztieqZsPbly04eLA2lWC9fle5lpHImD1A0EqT51HXlTueRKlodADThoCzQzkkUmxiBjeD4ZJe+IPZbDFUCQxbJ+2q5EjQVaABZD0EMyqpQH1X8QY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AXmJ8xxE; 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="AXmJ8xxE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 394341F00ADF; Fri, 22 May 2026 15:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464437; bh=3LRLg3Pzb74v2r5bZtbtebH98gpHkUBcEoBkx4Qaj+A=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=AXmJ8xxEVqJk8EwZs4vGzDSg1N5AXkYdEkpuEWmtsQp7DLw+TPHCX+YCjo0I33iWY pq8Z2RcNU4qVdSnOLniVP/FwzKcj4QHyrkE6SNuzzfaOOpcrAj/fpn+1UTGEOaEq5R 5yJcY24guNKOe056G/Nftj4aoaKnzy4b/iCP8dgJJmRV7UC6o/TUttzOTiggHwqksU uJ8abn6uskjg9VQTcyxRZUie7hcK/JHO0yp17dsbOiX72BI+1CJKiwmzBby3s2Qihw HTxw0ogANEdaHkwi4cFAwq8fFwm/X7w1VntDpkdzCNHnfcbHFDaqPYA+mHwFRJGq8l SjEbA8op0i8tQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 08/14] mm/damon/core: add kdamond_call() debug_sanity check Date: Fri, 22 May 2026 08:40:19 -0700 Message-ID: <20260522154026.80546-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" kdamond_call() is the place where DAMON API callers are allowed to access the DAMON context's public internal state including the monitoring results. Hence it is important to ensure it is called with the expected DAMON context state. Do the check under DAMON_DEBUG_SANITY. Signed-off-by: SeongJae Park --- mm/damon/core.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index 8a9202937781c..9cde5b47b9585 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3331,6 +3331,37 @@ static void kdamond_usleep(unsigned long usecs) usleep_range_idle(usecs, usecs + 1); } =20 +#ifdef CONFIG_DAMON_DEBUG_SANITY +static void damon_verify_ctx(struct damon_ctx *c) +{ + struct damon_target *t; + struct damon_region *r; + + damon_for_each_target(t, c) { + struct damon_region *prev_r =3D NULL; + unsigned int nr_regions =3D 0; + + damon_for_each_region(r, t) { + WARN_ONCE(r->ar.start >=3D r->ar.end, + "region start (%lu) >=3D end (%lu)\n", + r->ar.start, r->ar.end); + WARN_ONCE(prev_r && prev_r->ar.end > r->ar.start, + "region overlap (%lu > %lu)\n", + prev_r->ar.end, r->ar.start); + prev_r =3D r; + nr_regions++; + } + WARN_ONCE(damon_nr_regions(t) !=3D nr_regions, + "nr_regions mismatch: %u !=3D %u\n", + damon_nr_regions(t), nr_regions); + } +} +#else +static void damon_verify_ctx(struct damon_ctx *c) +{ +} +#endif + /* * kdamond_call() - handle damon_call_control objects. * @ctx: The &struct damon_ctx of the kdamond. @@ -3346,6 +3377,8 @@ static void kdamond_call(struct damon_ctx *ctx, bool = cancel) struct damon_call_control *control, *next; LIST_HEAD(controls); =20 + damon_verify_ctx(ctx); + mutex_lock(&ctx->call_controls_lock); list_splice_tail_init(&ctx->call_controls, &controls); mutex_unlock(&ctx->call_controls_lock); --=20 2.47.3 From nobody Sun May 24 20:33:21 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 D464F48095F; Fri, 22 May 2026 15:40:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464439; cv=none; b=sZY6D9KB7D/clQ8ZBK5qTzZ2K+yI9aOOnitp/rXX3dT/YJZPgLyZ8oJqgQJ/+gNJwMU9WvMAyEbxaS4a//B1q6K9S+q6zyJTEiihTYTeV/+kSXIBn7azWPI8p5D9SrAUQa7wMUMsDAXboVUbxyACLywNzboYytxNHf4N7cnW0I4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464439; c=relaxed/simple; bh=60hNbVqTSP21yPGuac3bHL+OYhfMoIX08QASyu0GIRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H7DNMCFPGjY7FmLYJZc53MgAqNpIp6SQ2iMPScGrnsc8cU4jcA66tjsAG9uWG2UjCuy+vlUv/yuxNe912j6P3yk8ut9B5ffidFBMUpk3Q8NPO+m69RdfpxzjYTVIf2B/KfV2nuel3Xji2eFt22SCy+NwH2+rxEtFUOvFoab7GbM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PRCm+J+m; 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="PRCm+J+m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A5FA1F00A3D; Fri, 22 May 2026 15:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464437; bh=rlDrTS/qDNMBtSrkkbpm6odK2sEC/p6nHvamOoXHSXU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PRCm+J+mZl77Sc1wSkhjFvMo6gfXN2YkuIeCJ2pHOE8X0WlwQ5pbBuOyF3jt4nZRH ben/v8RpD9Pd9a0vOPWvv/7KDogs4XMbaVgxOaUBnBEBsAYLYfxu2ZzvDwzz7gPfgB Wbemfq7GP0Zvv9mudLM58kVzCVUJrZfRXcwA+KgZCQ8VNMS6PcrhiKXoF7eEDdnZh3 KeDyvyuO1x6tv8oXAa9KaW+Ju/0vxydczqLPpjzU9kn60SWU1dqC2p1uaRNfbQG9EU Hgo8plxdJhtTC3ANO7HrR39qRyGH9uagAnkV304IxGfM7N2D6x1iSepAYmeWRyflMy p0Of15I8kFNig== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 09/14] mm/damon/core: remove damon_verify_nr_regions() Date: Fri, 22 May 2026 08:40:20 -0700 Message-ID: <20260522154026.80546-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When CONFIG_DAMON_DEBUG_SANITY is enabled, damon_verify_nr_regions() is called for each damon_nr_regions() invocation. damon_veify_nr_regions() iterates all regions. damon_nr_regions() is called for each region in kdamond_reset_aggregated() and damos_apply_scheme(). Hence it imposes O(n**2) overhead where n is the number of regions. Though the verification is enabled only under DAMON_DEBUG_SANITY, which is not for production use cases, it could be too high overhead. Meanwhile, damon_verify_ctx() is doing the damon_nr_regions() test. Because damon_verify_ctx() is called for each kdamond_call(), the test coverage from damon_verify_ctx() could be sufficient. Remove damon_nr_regions() verification. Signed-off-by: SeongJae Park --- mm/damon/core.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 9cde5b47b9585..265d51ade25bf 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -686,27 +686,8 @@ void damon_destroy_target(struct damon_target *t, stru= ct damon_ctx *ctx) damon_free_target(t); } =20 -#ifdef CONFIG_DAMON_DEBUG_SANITY -static void damon_verify_nr_regions(struct damon_target *t) -{ - struct damon_region *r; - unsigned int count =3D 0; - - damon_for_each_region(r, t) - count++; - WARN_ONCE(count !=3D t->nr_regions, "t->nr_regions (%u) !=3D count (%u)\n= ", - t->nr_regions, count); -} -#else -static void damon_verify_nr_regions(struct damon_target *t) -{ -} -#endif - unsigned int damon_nr_regions(struct damon_target *t) { - damon_verify_nr_regions(t); - return t->nr_regions; } =20 --=20 2.47.3 From nobody Sun May 24 20:33:21 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 45533480DC9; Fri, 22 May 2026 15:40:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464439; cv=none; b=ZdDWDGnukV02GsjGUqBd1zy2WI0KOLGKUrDEH8id0ZdmC/ir81ZBUsjFPTBWHzpp5hdpcT2gxuGqgDPSDYt30HJQg8smEjrYQ+Hq0bsrszJ+QeQes+aziEwUYaEBsfAC55O873UVunz0ZBmiq78gWFxVDj1YH1eU8V+P8HhYGvE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464439; c=relaxed/simple; bh=APLmcBIo1O/M2Pv9o2Vdrv9QdP3CWdcypcr8bidZpQw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JPOyW4df/v6ZLyE1toxJXy1osIX7tL2qTb8Rh8uEbrLvxEunygTDmNl/e1zt4oLGCx+vCDimDbToUNi9KDq9Ya8tMgOeYqtOXD7fqh+wS23cBPPuni5tzeq+ck9jdUpSBUIO7ywD9XeyaUbWv2Atf7tSkVuQ1fR7v3dDmkt235M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aGORpS/a; 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="aGORpS/a" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D845E1F000E9; Fri, 22 May 2026 15:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464438; bh=rIvjFu8eu4Q0A0nJgGFhpNwMfwikQRRw8RbElJURXJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=aGORpS/aDZWBOOgGeW2vYWhoOqRdFtY1dfp0KbtZFPBcbp+9O/njKPmQRNWhpuV4G SjOBj9b4MZF98aoY8lobf1MA5NoK98X8FMXytnzJ7iAqxMfw60h6R6WCiVtns+s5i1 MNzlgHKEphm2PyayzjrGQCGB0a5hLsj9G1tJnbmnbaaXlvsMGNlunKQbvzvgZ1zwrD beC11JV18qFtanY33f+XCXLgcnBwl5TCz4gePITpWZPn2ZTHXxZJ2OW19exRt14p3n EXfHYdEOGkzkPCm27mLSDH8SVcohc2OJoE1Agnyv4a+RuEJfpfTcEgwpu9no5hg/ks jYBxbKTj40Y8g== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: [PATCH 10/14] mm/damon/tests/core-kunit: add damon_set_regions() test cases Date: Fri, 22 May 2026 08:40:21 -0700 Message-ID: <20260522154026.80546-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" damon_set_regions() is one of the main DAMON kernel API functions that set up the monitoring target memory region boundaries. Implement unit tests for verifying its basic functionalities. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 142 ++++++++++++++++++++++++++++++------ 1 file changed, 120 insertions(+), 22 deletions(-) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 866f716e5760d..1cfb8c176b873 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -390,41 +390,139 @@ static void damon_test_ops_registration(struct kunit= *test) } } =20 -static void damon_test_set_regions(struct kunit *test) +static void damon_test_set_regions_for(struct kunit *test, + struct damon_addr_range *old_ranges, int sz_old_ranges, + struct damon_addr_range *new_ranges, int sz_new_ranges, + unsigned long min_region_sz, + struct damon_addr_range *expect_ranges, int sz_expect_ranges) { - struct damon_target *t =3D damon_new_target(); - struct damon_region *r1, *r2; - struct damon_addr_range range =3D {.start =3D 8, .end =3D 28}; - unsigned long expects[] =3D {8, 16, 16, 24, 24, 28}; - int expect_idx =3D 0; + struct damon_target *t; struct damon_region *r; + int i; =20 + t =3D damon_new_target(); if (!t) kunit_skip(test, "target alloc fail"); - r1 =3D damon_new_region(4, 16); - if (!r1) { - damon_free_target(t); - kunit_skip(test, "region alloc fail"); - } - r2 =3D damon_new_region(24, 32); - if (!r2) { - damon_free_target(t); - damon_free_region(r1); - kunit_skip(test, "second region alloc fail"); + for (i =3D 0; i < sz_old_ranges; i++) { + r =3D damon_new_region(old_ranges[i].start, old_ranges[i].end); + if (!r) { + damon_destroy_target(t, NULL); + kunit_skip(test, "%d-th r alloc fail\n", i); + } + damon_add_region(r, t); } =20 - damon_add_region(r1, t); - damon_add_region(r2, t); - damon_set_regions(t, &range, 1, 1); + damon_set_regions(t, new_ranges, sz_new_ranges, min_region_sz); =20 - KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 3); + KUNIT_EXPECT_EQ(test, damon_nr_regions(t), sz_expect_ranges); + if (damon_nr_regions(t) !=3D sz_expect_ranges) { + damon_destroy_target(t, NULL); + return; + } + i =3D 0; damon_for_each_region(r, t) { - KUNIT_EXPECT_EQ(test, r->ar.start, expects[expect_idx++]); - KUNIT_EXPECT_EQ(test, r->ar.end, expects[expect_idx++]); + KUNIT_EXPECT_EQ(test, r->ar.start, expect_ranges[i].start); + KUNIT_EXPECT_EQ(test, r->ar.end, expect_ranges[i++].end); } + damon_destroy_target(t, NULL); } =20 +static void damon_test_set_regions(struct kunit *test) +{ + /* Initial build up on empty target. */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){}, 0, + (struct damon_addr_range[]){ + {.start =3D 5, .end =3D 15}, + {.start =3D 15, .end =3D 25}, + }, 2, + 1, + (struct damon_addr_range[]){ + {.start =3D 5, .end =3D 15}, + {.start =3D 15, .end =3D 25}, + }, 2); + /* Un-intersecting regions should be removed. */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 4, .end =3D 16}, + {.start =3D 24, .end =3D 32}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 18, .end =3D 23}, + }, 1, + 1, + (struct damon_addr_range[]){ + {.start =3D 18, .end =3D 23}, + }, 1); + /* + * Holes should be filled up with new regions. + * + * old: [4, 16) [24, 32) + * new: [8, 28) + * expect: [8, 16)[16,24),[24, 28) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 4, .end =3D 16}, + {.start =3D 24, .end =3D 32}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 8, .end =3D 28}, + }, 1, + 1, + (struct damon_addr_range[]){ + {.start =3D 8, .end =3D 16}, + {.start =3D 16, .end =3D 24}, + {.start =3D 24, .end =3D 28}, + }, 3); + /* + * New regions should be able to be appended. + * + * old: [0, 4)[4, 17) + * new: [0, 15) [25, 40) + * expect: [0, 4)[4, 15) [25, 40) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 4, .end =3D 17}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + }, 2, + 1, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 4, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + }, 3); + /* + * New regions should be able to be inserted. + * + * old: [0, 4) [42, 52) + * new: [0, 15) [25, 40) [44, 50) + * expect: [0, 15) [25, 40) [44, 50) + */ + damon_test_set_regions_for(test, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 4}, + {.start =3D 42, .end =3D 52}, + }, 2, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + {.start =3D 44, .end =3D 50}, + }, 3, + 1, + (struct damon_addr_range[]){ + {.start =3D 0, .end =3D 15}, + {.start =3D 25, .end =3D 40}, + {.start =3D 44, .end =3D 50}, + }, 3); +} + static void damon_test_nr_accesses_to_accesses_bp(struct kunit *test) { struct damon_attrs attrs =3D { --=20 2.47.3 From nobody Sun May 24 20:33:21 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 A687447886D; Fri, 22 May 2026 15:40:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; cv=none; b=PvMQ+kGU4TvXCKXTM4gyuyDsu0LpksXxd5ZG5Xm78ZPMkxwO6mYOym9N/KRUFMKDCTarDRZGkgiPBKk/iLR0q/XMXXDNGk81ou6WNO/z6/FrKcy9hNRMtjhg9q2TirJ+UHVn/C2g1FyrSWpuS0JCXqa6tDYy0Hhg0vJT3xpoyYY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; c=relaxed/simple; bh=GCwpp9tVndKgfB2xT0JiM24CGov0zLgkMw/jizl1l1g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L+KKs5vi28P+NKULdNUfwX04NbwbuBaf2qeasPM4WNgRUDIBJcQxWnAEBBL1ObtdCOqIgWlbXLPHfBnHu5iT12f7c8gPBVNN5+rEdCm9sm9owzJEZckEqxMMfHQfYKN5gPIUX+n6J+ov9tPRXN4xZa/+LlV5QJ1z4jQc/MLW++U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TVwqsxAI; 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="TVwqsxAI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 559E71F00A3E; Fri, 22 May 2026 15:40:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464438; bh=iEjjWBHpUcq7nMlrb1+WzxDoNOgxUnUZ3YjegNS7FQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=TVwqsxAI4/lGot8Xjb2P/G3c9J9Sx3LWGIwYxVqK0iN46+14cuXahZPlKbf4vzFKj SODgre67n8HKv7rlkp/4p5c9NLvTgo2Il+k40IDDUho0sYSVZVCoQojDCljAZRve3f 07NaH7dNJxSV2jLhaHrzDqJMp2s/VFnqf8F5eH2LtZmp+fZQvtNPKSW4R8c9pv2zlg 86EE7ssiA/FF852zflSN3lS2worR9rs7wNsoHjPIGNRGUCgUuv57XiySpyzkN15caw cCCwOs8ivYUj3w+FO2xWmg8XWTNuWocMUZW9Unf3CAwETj32hXz6u21o7xFuu08B4K ycfGKnpwqEHLg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 11/14] selftests/damon/sysfs.py: stop kdamonds before failing Date: Fri, 22 May 2026 08:40:22 -0700 Message-ID: <20260522154026.80546-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When an assertion is failed, sysfs.py DAMON selftest immediately exits the test program leaving the DAMON running behind. Many of the following tests need to start DAMON on their own. But because DAMON that was started by sysfs.py is still running, those start attempts fail, and the tests are failed or skipped. Update sysfs.py to stop DAMON before exiting the test program due to the assertion failure. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index cd4d82c852113..aa03a1187489f 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -24,9 +24,12 @@ def dump_damon_status_dict(pid): except Exception as e: return None, 'json.load fail (%s)' % e =20 +kdamonds =3D None def fail(expectation, status): print('unexpected %s' % expectation) print(json.dumps(status, indent=3D4)) + if kdamonds is not None: + kdamonds.stop() exit(1) =20 def assert_true(condition, expectation, status): @@ -248,6 +251,7 @@ def assert_ctxs_committed(kdamonds): ctx.pause =3D False =20 def main(): + global kdamonds kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( contexts=3D[_damon_sysfs.DamonCtx( --=20 2.47.3 From nobody Sun May 24 20:33:21 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 24973481222; Fri, 22 May 2026 15:40:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; cv=none; b=eLoxO6PmxGyE+iZbguHNMXpTvDBJUJcESO8DdFE23p26kwEOjC/7Fy58UaMVJVqu1CleSJ3BJoxEdPwKpa4gh05JB/Fr9Zd9gbTkFChaWCtMaE7oRw5wBUTsXqKMzQpO43PZrypCV4J7xbMPn4lC/WPjBwmobVHo3jhOX0HDZfY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; c=relaxed/simple; bh=4Z9nDEpElV7CLHeQzITxn/6P2S9ErV3Ie4yqUQCoJI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uwn67S6RhS58ixRGruqsNtUOGCN8MoDZG6ncgT7KjcROCcWLqDzatYNGVKgSgp8r1oyOQLJ6/qNvcj1eXQG9VA/Nso4Nhf2G/z4ody/qhpTCxyUu7ZuIp4RKQUH3lzki5VIdJJLcSNh/mUz2dK3p8tRESQTLPrXfP3Ur9c8WShM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jkjD3l1C; 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="jkjD3l1C" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5C1F1F0155E; Fri, 22 May 2026 15:40:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464439; bh=9HFBKYb5cdZ3muhhdyyxDCFvE0VgsBfb1xW7NVeIcwg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jkjD3l1CLAsGu8RBoARCpI5T334wRV3SRDm+apej1M6lh4NPpaUqLS7qgBxWPOfrG iKlvJObdsx78z1KAdGCrCHztZ7C+OO7GXq90WN0Fg0TWbXumtw6+ni+ZjmLvGUiywy n6mnM6AKrsa0Utoei959vTjort50kxjFfe670VgxQ879Z9UQDfjy6pHQiTlZOA2IiY yRQmUTA6Ci//9qLhx05MEp5HrdF1/60/cZLNJI8sgECplUjrx5lcyhHsVl5LZJH5WU +joPP1XPdAiwO52OcdH/XxL4hiKwh4j5BThaCRONA2zcGOt0O8l+nn5FBKFke7OXh5 X6Ffe828hAxmA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 12/14] selftests/damon/sysfs.sh: test monitoring intervals goal dir Date: Fri, 22 May 2026 08:40:23 -0700 Message-ID: <20260522154026.80546-13-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" sysfs.sh DAMON selftest is not testing monitoring intervals goal directory. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftes= ts/damon/sysfs.sh index 1ac3e2ce8e448..b3418214ed358 100755 --- a/tools/testing/selftests/damon/sysfs.sh +++ b/tools/testing/selftests/damon/sysfs.sh @@ -282,6 +282,17 @@ test_targets() ensure_dir "$targets_dir/1" "not_exist" } =20 + +test_intervals_goal() +{ + goal_dir=3D$1 + ensure_dir "$goal_dir" "exist" + ensure_file "$goal_dir/access_bp" "exist" "600" + ensure_file "$goal_dir/aggrs" "exist" "600" + ensure_file "$goal_dir/min_sample_us" "exist" "600" + ensure_file "$goal_dir/max_sample_us" "exist" "600" +} + test_intervals() { intervals_dir=3D$1 @@ -289,6 +300,7 @@ test_intervals() ensure_file "$intervals_dir/aggr_us" "exist" "600" ensure_file "$intervals_dir/sample_us" "exist" "600" ensure_file "$intervals_dir/update_us" "exist" "600" + test_intervals_goal "$intervals_dir/intervals_goal" } =20 test_damon_filter() --=20 2.47.3 From nobody Sun May 24 20:33:21 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 6EF7747885D; Fri, 22 May 2026 15:40:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; cv=none; b=lHNUfhaJs3zHIPY/gGVq80FPqNmVcXvDMKaigsyIDJ9lUW83asqdAMMAN5hj9aSBNcSmvh45GLZ0/LYjdkguXxhHwBclf8Xrs3Y/emVpWApNFTLDJnHJdgLpX1hpLgSFtw9oUV+/aM66vMFi2m3L+ZdSKWbHPNdlCQXIgmN1jVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464440; c=relaxed/simple; bh=ws0D8iuldfRLR1MHNkuGGInMFKktNMpgiEm6ektZ6B4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jgnZLCueiPndBgZolqoA2mNEo1XEwUgmZXY56IbAnMzWEFycYXpmEhIZ45MNyK7KqgRcKbg/VyT+OXOi4pm7FpgP6zxc4QmDZoXCYOIJLRLUn6o4V+n5Cfz96yNivk6H+VYs+QnXL85i/6LTjk391UVLCR6TwIN9MU+clduWYik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=THj1T9o2; 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="THj1T9o2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22AED1F00A3F; Fri, 22 May 2026 15:40:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464439; bh=jOZYn/0HiUYme65VRURmz3VNOCuqOPU+0+8yZhbpho8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=THj1T9o2CnuL0MdHENnw+FQNkvI1dj8JDEI0VfoLZQLXUeRo9fxmsexSReBgbSrcK DyfaivafSeIuI6rDpSC9hpkZcrYU26TMXreW5GsZuH6TejAXSxtesdqoEZqlVPcMZp iEQ8YrTt1MA2wKQXSyfHnBOC/r3gtKL142Ueapg66R02Ump+wEvO2F1splBkLti0LS 9XRJ4G5lu0qRPbG0iP9zV+0CZrmwLAV2Yts/LQTE8GVDygna0mY4UGMUZDyUiTF39w EP8oN3k+G95w9XCLRgHQSYaT/iBeLmF3FwFWrQzhAxN2dc7hR18IjnZxNYhqu4ZhpV c7f+6MXb0tnPA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 13/14] selftests/damon/sysfs.sh: test addr_unit file existence Date: Fri, 22 May 2026 08:40:24 -0700 Message-ID: <20260522154026.80546-14-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" sysfs.sh DAMON selftest is not testing the existence of addr_unit sysfs file. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/damon/sysfs.sh b/tools/testing/selftes= ts/damon/sysfs.sh index b3418214ed358..92b44c86818af 100755 --- a/tools/testing/selftests/damon/sysfs.sh +++ b/tools/testing/selftests/damon/sysfs.sh @@ -365,6 +365,7 @@ test_context() ensure_dir "$context_dir" "exist" ensure_file "$context_dir/avail_operations" "exit" 400 ensure_file "$context_dir/operations" "exist" 600 + ensure_file "$context_dir/addr_unit" "exist" 600 test_monitoring_attrs "$context_dir/monitoring_attrs" test_targets "$context_dir/targets" test_schemes "$context_dir/schemes" --=20 2.47.3 From nobody Sun May 24 20:33:21 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 CEF4D481666; Fri, 22 May 2026 15:40:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464441; cv=none; b=SUoKg3jfYOdOyw9t63dUMhWs2kX9t2IfcuOJCbeQosdsQZbJQM4p9hib2vYwgxTbiDfCaEXo+FcUWaDgbKnVccrnUFlnlun7v4rvXh/neFPwvLESCSGjOnRWOqfRhFL7tQmI+BKL3G/v+e48vrlXL1itBCjWAT0tmSjLiM8slBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779464441; c=relaxed/simple; bh=vlSxJq/mZG/PC7FG4BVhxJBrns4C2X+9/1QoBF2tbHI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u0nO/4OHjMeAQghvsri/LF65fQivBWShRyaT+poS9173ZZq0r52rW8aXa1LOrCld4WvaNS0G1zHoqZaiPHX7v4GclAOorI+4DqjQyNiGCdz4T8K419ti1Lmfq2h6vm3WX3dq3EY18KD7uU2hFn3y963HBVxIrrE4C9wmodWuuNo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ChsT2Yfn; 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="ChsT2Yfn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E08C1F00ADE; Fri, 22 May 2026 15:40:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464439; bh=9Q+fxjZuCnosHblIbwlECkpSubPFTTaxfUpkwZ9ZxQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ChsT2Yfn+ODS1uaG7sqj7mrAPStXFayQ79napPt+xO0tW+zLvsgSOBUwpIi9dSC4l KdkNjot3hGrhxAtESWs35/ke5dM/Zw3b9SHzBaIiG7b94KPU1UXLs+v9iEUORIEKO9 7dJIZLQcxpcv7Dq2FM2gPN7uddIh+DwTOjBWD0Evly4/Jzixw7aZo31yVa9Pz1xlee MP2c1H5qXU6f8SaoGA8JLF2QUVqIY5KUdSrvVxUnyQEoMw9qBd4ugJ2wT0PREtXHqj hWb2IjDFgy+4JkXrUctEAN/nYP53mrdjK1aek9SaAAq7IPlaDdUKQcNZhT3OA7K1vj Bu7oZNHwAKSvg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 14/14] selftests/damon/sysfs.sh: test pause file existence Date: Fri, 22 May 2026 08:40:25 -0700 Message-ID: <20260522154026.80546-15-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260522154026.80546-1-sj@kernel.org> References: <20260522154026.80546-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