From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A5ABC29C33D; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886667; cv=none; b=b9y6sGrobeEe9D3B9TwJyxQX5M/Jhg3ZGMTN9RSkwmBn84z2htVmsFxOs7E2tPKsCtEZrRls2c3VA/1B8+3Wy+PBJSAchGWssWtu+MlUp/rbOCLvURT1y1iDl4yCSk+e1BLQELkz6czzgUcAJDYoEgfdJpjT06xqPuC7vxlg2hs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886667; c=relaxed/simple; bh=mAIWfi16gggHF11DCFY7/6hV5ak1nSb/ROSHyLfYfYg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tO6yIBxQ3nSjOdZDbeq5y6YFjluq18UhOXRWuetBTjF99Ucf/u6VkKfwfcj7rpG3tcRocEAI/KZqcycZlw+OJSMRlHo44LP/cPnm0Kw4YF+WKizOj5GSaSprFbji6EWyRZ95kC3Oaa3RLJvNKyNyYZNf114J+XtkyjzkNyL/vS8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sYYohash; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sYYohash" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08BA9C19422; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886667; bh=mAIWfi16gggHF11DCFY7/6hV5ak1nSb/ROSHyLfYfYg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sYYohashKZ1/+G8G79TC/s7dyeb+R17yDQBEiIyO38hKCeCuABCKapiAFcY9lPOW7 Y3BVent0s5UOfWvMA1QJRxOjO9zRF7p0eq7kVcU57eEUlt/ePtO+284MaB+Eg/kMon Uye/3APygEp66bcPIs2FCk59DcJD667MzfJCgKb7+PJ6zWl0FzUy7ptD1sa5fwLbF+ vPwGB2odoTsf9nIDr411XlxADvGfUynsRC4jtL3LWWlioGtj+lfjtLS9ssqKMvy1GF zn/SXHcSZp5K3kShaIVT//2Xzl7RfYnOnqX2BZmZqD8SWcTAut9RSkmR1GIVQtesTU VTjfiql/oepEA== 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 01/11] mm/damon/tests/core-kunit: remove dynamic allocs on damos_test_commit_filter() Date: Tue, 11 Nov 2025 10:44:00 -0800 Message-ID: <20251111184415.141757-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" damos_test_commit_filter() is dynamically allocating test-purpose DAMOS filters. Allocation failure checks are making the code longer, complicated, and difficult to extend for more test cases. Refactor the code to remove the dynamic allocation. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 96a4cd489b39..ae97886137dc 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -499,23 +499,20 @@ static void damos_test_new_filter(struct kunit *test) =20 static void damos_test_commit_filter(struct kunit *test) { - struct damos_filter *src_filter, *dst_filter; - - src_filter =3D damos_new_filter(DAMOS_FILTER_TYPE_ANON, true, true); - if (!src_filter) - kunit_skip(test, "src filter alloc fail"); - dst_filter =3D damos_new_filter(DAMOS_FILTER_TYPE_ACTIVE, false, false); - if (!dst_filter) { - damos_destroy_filter(src_filter); - kunit_skip(test, "dst filter alloc fail"); - } - damos_commit_filter(dst_filter, src_filter); - KUNIT_EXPECT_EQ(test, dst_filter->type, src_filter->type); - KUNIT_EXPECT_EQ(test, dst_filter->matching, src_filter->matching); - KUNIT_EXPECT_EQ(test, dst_filter->allow, src_filter->allow); + struct damos_filter src_filter =3D { + .type =3D DAMOS_FILTER_TYPE_ANON, + .matching =3D true, + .allow =3D true}; + struct damos_filter dst_filter =3D { + .type =3D DAMOS_FILTER_TYPE_ACTIVE, + .matching =3D false, + .allow =3D false, + }; =20 - damos_destroy_filter(src_filter); - damos_destroy_filter(dst_filter); + damos_commit_filter(&dst_filter, &src_filter); + KUNIT_EXPECT_EQ(test, dst_filter.type, src_filter.type); + KUNIT_EXPECT_EQ(test, dst_filter.matching, src_filter.matching); + KUNIT_EXPECT_EQ(test, dst_filter.allow, src_filter.allow); } =20 static void damos_test_filter_out(struct kunit *test) --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 BB75D29CB48; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886667; cv=none; b=oAAxSVQSuj/qF1M9WqOESMHQkD6nfDseyi3sRJXo5D5LafCU4odebhfGokHQd5fDRp/XExtKAlKXQDBZ7/Unvlc/XXcPPnwjYoW2B9hiWck9gQ5lcwtzIaCErm1+tJQa0mS6mPrAAf1Pwhwdu0y//CAU1Gvdu9itxrV5hMudgRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886667; c=relaxed/simple; bh=zbEUetZe1c1xcRt1OCgTl8LCaIpsolP/79QDN3FVibc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LdyDFejiGTsgRaXtRsQRxFGQzFNcf4ypSiKwc80grVE5afO1JqzeCqg8rEEHBMMHqQ0/vM10cnGfQG501TtjYcMgRMMgv1Mqk6RU3PhsHDCqdILIzQnmgUYQmx97mBfzEQm73scT5o/4HA9Qkjp7iPVxmpSgLz9n+HNDroAIxic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=idvbzuY3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="idvbzuY3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C9BCC4CEF7; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886667; bh=zbEUetZe1c1xcRt1OCgTl8LCaIpsolP/79QDN3FVibc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=idvbzuY3Y/fIkegrqp6zLZHd6RqtUjeLzgaU25symERrWFb9VGucHpztZYkxG8gBX zyj4TMqyKJIPIyOHgGgJ+AIy+//vqUn3UnparLqEoQ6oDLQBYeCjN7fZQCQd/xZ01w MvoCymFWU+ME5cH7oJB0A6sk+8l/1/Uee7OWMNnex3X7C5J117SYwPHVjPFrITdZP1 LRE/tyJhCb2Wd28LRm3m7umdl87k+PgjhwDeLjgHOdSQ5sy9th+r56qKMwtK5gnDTr zUvCqLREHKdH04OvAjgLeEZKp+tp5cdoc2zYAFsA8JhzbVis0vEnfmpiRizxwL6iYu Hb6Ovr6IVDIVA== 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 02/11] mm/damon/tests/core-kunit: split out damos_test_commit_filter() core logic Date: Tue, 11 Nov 2025 10:44:01 -0800 Message-ID: <20251111184415.141757-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" damos_test_commit_filter() is written for only a single test case. Split out the core logic of damos_test_commit_filter() as a general one so that it can be reused for multiple test cases. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index ae97886137dc..31f90cfcabf3 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -497,6 +497,15 @@ static void damos_test_new_filter(struct kunit *test) damos_destroy_filter(filter); } =20 +static void damos_test_commit_filter_for(struct kunit *test, + struct damos_filter *dst, struct damos_filter *src) +{ + damos_commit_filter(dst, src); + KUNIT_EXPECT_EQ(test, dst->type, src->type); + KUNIT_EXPECT_EQ(test, dst->matching, src->matching); + KUNIT_EXPECT_EQ(test, dst->allow, src->allow); +} + static void damos_test_commit_filter(struct kunit *test) { struct damos_filter src_filter =3D { @@ -509,10 +518,7 @@ static void damos_test_commit_filter(struct kunit *tes= t) .allow =3D false, }; =20 - damos_commit_filter(&dst_filter, &src_filter); - KUNIT_EXPECT_EQ(test, dst_filter.type, src_filter.type); - KUNIT_EXPECT_EQ(test, dst_filter.matching, src_filter.matching); - KUNIT_EXPECT_EQ(test, dst_filter.allow, src_filter.allow); + damos_test_commit_filter_for(test, &dst_filter, &src_filter); } =20 static void damos_test_filter_out(struct kunit *test) --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 238702BD5BB; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; cv=none; b=pSNeUHkdgD3PvBC2i958dUiWSmoPZSDLXGkg+DgQgR87LFzuRJSobnEPDNmOu/H4Yqwsi+R/HrAK1vRQR26Cj/FJR0Wmu/Sdl+IPvzeJ1trwKWFuuI2mqvY9VMJAfHduYs1kxvLJiSMkzQOBHbiB509wJZzhzSUXODjn+h2avo4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; c=relaxed/simple; bh=RN1NkgEO23eqGRbIw3CgEAS8tb3Fp9u4BZ1voGEOa3Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mNDhXDSV/uGB21F4d/NBR1hpv5U0hDL1xkrX1f4BXWMsyOLLYE2gdDzpVMzcDnnd5FlxEb7OKNPqDsNjMtv6CFr22ZyIDB4L2TP4n3AnV4UAIv/12/TNemgx/V2FUf+6upXVswgOrKb0R0Y3Qh2kjz5+ppaTD9pTrTdNNPirRA8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LhvmRijH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LhvmRijH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9117BC16AAE; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886667; bh=RN1NkgEO23eqGRbIw3CgEAS8tb3Fp9u4BZ1voGEOa3Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LhvmRijHVE7DhBMAgCDPQkJjPgAzyuoQn2gcyl020+DeeyaUT45dX9uTplTJh829R Eh2tWyLnhoJaPHGZW4jpzrnYMiSrW8Wb/3UYOKQqFx6XEvXjdjS9ezViSBJzv7gZe6 5VJmHzP/sygGB7NSf7d87vgYAqJxWnDcev22qw7PuRrjQwRjlrItbtiPYDUJhPiIm6 RhTIDJ0GhH3kzG4xLHbPUA9mfQ2yeTKpJzRfbovH1QQvXO+o0lFICsPslWI6Lihtil PO2QhrT9a44GqGjV2F6cf+s6oyzNuE/jKET5mHxOadx39+E1R1wsYV3yUWrlc1IlM1 /tovELo2fUjzg== 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 03/11] mm/damon/tests/core-kunit: extend damos_test_commit_filter_for() for union fields Date: Tue, 11 Nov 2025 10:44:02 -0800 Message-ID: <20251111184415.141757-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" damos_commit_filter() also updates union fields of 'struct damos_filter'. Extend damos_test_commit_filter_for() to cover the expectations of the union fields. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 31f90cfcabf3..5052d8db9657 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -504,6 +504,26 @@ static void damos_test_commit_filter_for(struct kunit = *test, KUNIT_EXPECT_EQ(test, dst->type, src->type); KUNIT_EXPECT_EQ(test, dst->matching, src->matching); KUNIT_EXPECT_EQ(test, dst->allow, src->allow); + switch (src->type) { + case DAMOS_FILTER_TYPE_MEMCG: + KUNIT_EXPECT_EQ(test, dst->memcg_id, src->memcg_id); + break; + case DAMOS_FILTER_TYPE_ADDR: + KUNIT_EXPECT_EQ(test, dst->addr_range.start, + src->addr_range.start); + KUNIT_EXPECT_EQ(test, dst->addr_range.end, + src->addr_range.end); + break; + case DAMOS_FILTER_TYPE_TARGET: + KUNIT_EXPECT_EQ(test, dst->target_idx, src->target_idx); + break; + case DAMOS_FILTER_TYPE_HUGEPAGE_SIZE: + KUNIT_EXPECT_EQ(test, dst->sz_range.min, src->sz_range.min); + KUNIT_EXPECT_EQ(test, dst->sz_range.max, src->sz_range.max); + break; + default: + break; + } } =20 static void damos_test_commit_filter(struct kunit *test) --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2A5D92BD5BD; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; cv=none; b=pPmwWZOOo+/EjL9JT5gT1HO6IWLLZ3YnuR2rUnZIWPidAJ8za4/3rcTb/i/qAUg9d+J0+LbFq8V+dufPT2XpUpWKX0u2NrXlkHTuc+lKvpToHx4OJgtvovpeVLO3secsWs1RtEhJupqx90mpk5sthZXtYUWGWCU6B4bC9BmHAys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; c=relaxed/simple; bh=bWfWODgDizfceoDSDsQvR25at7fdp8OVsfqGkOutAqM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uDVdQL60RBBH7vYdXKGeXa0DAKuYQ3V0Pmc5vCA7gBh/QLlOwzi/hnkQRwHEiKZzT+0l6NiQFXQLQpWs/429n//23TH+xU8Tb5kcyuholtN81x/ipInHtG9rRFIPImy3+lfYwOF7raHEr9FuEPiNFFbJ1r0J2pgQJhjJ4QOkFgY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EOcGp6yY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EOcGp6yY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D320FC4CEF5; Tue, 11 Nov 2025 18:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886668; bh=bWfWODgDizfceoDSDsQvR25at7fdp8OVsfqGkOutAqM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EOcGp6yY2aQatoc9Pf+0VGj8G7nF6mD5WtOgX1LI7HrKoGF+J5uDarPUUvNpntots HO/A1rcMkU4gGomxfPV5O+QRdCwTBJhTOP2WAXYYCR1gBO0ujStAlusyiV3pHsEwHU 3huE/rA5fZ1sEbwMv+FkhBth8xsfxDg541I+XVotUHN4AGXeFMGVi1o51QFXwnMxc0 tIpelBNbkZwejQdLyv34q+zBFICZzjjmNOfrOPiCYb/2KUl++VDsvlkJbIKud3MgTe hO1e3gy5yqcQNJ3AXl8DxUHNfD9LQCPDRZkp+eRLtb4H0k13FyEUTz82KCc41PaA4o mKIRxMI6muc9w== 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/11] mm/damon/tests/core-kunit: add test cases to damos_test_commit_filter() Date: Tue, 11 Nov 2025 10:44:03 -0800 Message-ID: <20251111184415.141757-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" damos_test_commit_filter() is covering only a single test case. Extend it to cover multiple combinations of inputs. Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 53 ++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 5052d8db9657..2770972b0a39 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -528,17 +528,58 @@ static void damos_test_commit_filter_for(struct kunit= *test, =20 static void damos_test_commit_filter(struct kunit *test) { - struct damos_filter src_filter =3D { - .type =3D DAMOS_FILTER_TYPE_ANON, - .matching =3D true, - .allow =3D true}; - struct damos_filter dst_filter =3D { + struct damos_filter dst =3D { .type =3D DAMOS_FILTER_TYPE_ACTIVE, .matching =3D false, .allow =3D false, }; =20 - damos_test_commit_filter_for(test, &dst_filter, &src_filter); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_ANON, + .matching =3D true, + .allow =3D true, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_MEMCG, + .matching =3D false, + .allow =3D false, + .memcg_id =3D 123, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_YOUNG, + .matching =3D true, + .allow =3D true, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_HUGEPAGE_SIZE, + .matching =3D false, + .allow =3D false, + .sz_range =3D {.min =3D 234, .max =3D 345}, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_UNMAPPED, + .matching =3D true, + .allow =3D true, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_ADDR, + .matching =3D false, + .allow =3D false, + .addr_range =3D {.start =3D 456, .end =3D 567}, + }); + damos_test_commit_filter_for(test, &dst, + &(struct damos_filter){ + .type =3D DAMOS_FILTER_TYPE_TARGET, + .matching =3D true, + .allow =3D true, + .target_idx =3D 6, + }); } =20 static void damos_test_filter_out(struct kunit *test) --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B7CF62BF016; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; cv=none; b=Aq6L0TI+Fb9J4BhuwZn3orPfnwI5tF3X9a3vi+Xn/vhgCf00BQe7pvxCGWkyU5M1CCmdJvlh7deXekacTMcGUK6DRmTTk62NZ1FOzNMvi0B6i7cyTk/L8EH87FCBZTGIJfJpN5ov1vx5dwkQqTAve1yGMi0gHLItFtj/lhdpklE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; c=relaxed/simple; bh=6GIRF1VPc6ujIgCM/hIhi5fTx9G4B73HDb3fviuhNMY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IKJm3QKTL2k3hxxE6oLL7e0fNW3Af2zj2p9/DbVrvp6QXqkHE92daeYz5trnbPXzSGp4Ber+p29T5vJDKgnCsXovR8GkoSbJf7ZRWRj71+rP1l1jFvCI0A6vq9avKSFDYtlM64y1uwbFaBql8wb0oyg/2xlQkTrnGig9jyHBAfk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IFCM8je4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IFCM8je4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 25D14C2BC87; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886668; bh=6GIRF1VPc6ujIgCM/hIhi5fTx9G4B73HDb3fviuhNMY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IFCM8je4C6B8TLyL7WzV8/bGwLWLzPgT822w2nvlMY50AJZYGbB6t8uoSVpVnbIxC d10Q8aC0D4hxUdiFtHVE7xWbgZhyDSnYAQjnHbjwPx37VYOmTSla5T0oWc5s48MOSz o5LNlQi9tG2Lk6ytnC0BlIoyj81nnvdK55vxxjLqFyUIZOKYDJqGk8z3/ON2y26JYK 5DiDCgwzcI7aMsjI8mWklr/ilhQlz5aXFXF3F2HoaOidO5mn9ICyNvOijSLcMHX7Oc oR0xVxjnTsou1ulG5fkQpUSzgbcE8ijCK6ne7moUh2GvRa7/3Dytm/q6E1IGZVwTjE 1E6BX/ZtLAA2Q== 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 05/11] mm/damon/tests/core-kunit: add damos_commit_quota_goal() test Date: Tue, 11 Nov 2025 10:44:04 -0800 Message-ID: <20251111184415.141757-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new unit test for damos_commit_quota_goal(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 2770972b0a39..0fdf9c7eedc3 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -497,6 +497,89 @@ static void damos_test_new_filter(struct kunit *test) damos_destroy_filter(filter); } =20 +static void damos_test_commit_quota_goal_for(struct kunit *test, + struct damos_quota_goal *dst, + struct damos_quota_goal *src) +{ + u64 dst_last_psi_total =3D 0; + + if (dst->metric =3D=3D DAMOS_QUOTA_SOME_MEM_PSI_US) + dst_last_psi_total =3D dst->last_psi_total; + damos_commit_quota_goal(dst, src); + + KUNIT_EXPECT_EQ(test, dst->metric, src->metric); + KUNIT_EXPECT_EQ(test, dst->target_value, src->target_value); + if (src->metric =3D=3D DAMOS_QUOTA_USER_INPUT) + KUNIT_EXPECT_EQ(test, dst->current_value, src->current_value); + if (dst_last_psi_total && src->metric =3D=3D DAMOS_QUOTA_SOME_MEM_PSI_US) + KUNIT_EXPECT_EQ(test, dst->last_psi_total, dst_last_psi_total); + switch (dst->metric) { + case DAMOS_QUOTA_NODE_MEM_USED_BP: + case DAMOS_QUOTA_NODE_MEM_FREE_BP: + KUNIT_EXPECT_EQ(test, dst->nid, src->nid); + break; + case DAMOS_QUOTA_NODE_MEMCG_USED_BP: + case DAMOS_QUOTA_NODE_MEMCG_FREE_BP: + KUNIT_EXPECT_EQ(test, dst->nid, src->nid); + KUNIT_EXPECT_EQ(test, dst->memcg_id, src->memcg_id); + break; + default: + break; + } +} + +static void damos_test_commit_quota_goal(struct kunit *test) +{ + struct damos_quota_goal dst =3D { + .metric =3D DAMOS_QUOTA_SOME_MEM_PSI_US, + .target_value =3D 1000, + .current_value =3D 123, + .last_psi_total =3D 456, + }; + + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal){ + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 789, + .current_value =3D 12}); + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal){ + .metric =3D DAMOS_QUOTA_NODE_MEM_FREE_BP, + .target_value =3D 345, + .current_value =3D 678, + .nid =3D 9, + }); + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal){ + .metric =3D DAMOS_QUOTA_NODE_MEM_USED_BP, + .target_value =3D 12, + .current_value =3D 345, + .nid =3D 6, + }); + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal){ + .metric =3D DAMOS_QUOTA_NODE_MEMCG_USED_BP, + .target_value =3D 456, + .current_value =3D 567, + .nid =3D 6, + .memcg_id =3D 7, + }); + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal){ + .metric =3D DAMOS_QUOTA_NODE_MEMCG_FREE_BP, + .target_value =3D 890, + .current_value =3D 901, + .nid =3D 10, + .memcg_id =3D 1, + }); + damos_test_commit_quota_goal_for(test, &dst, + &(struct damos_quota_goal) { + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 789, + .current_value =3D 12, + }); +} + static void damos_test_commit_filter_for(struct kunit *test, struct damos_filter *dst, struct damos_filter *src) { @@ -782,6 +865,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damon_test_set_attrs), KUNIT_CASE(damon_test_moving_sum), KUNIT_CASE(damos_test_new_filter), + KUNIT_CASE(damos_test_commit_quota_goal), KUNIT_CASE(damos_test_commit_filter), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B74AF2BF007; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; cv=none; b=ZNWApOCiPM0j4PbFVoqYfHMDfBecEgo4WzqyyEUYwZj8mvIKufWZNDevgrfCiAOqZlIBTPtJZ6NQGzRvOwJl6mXC8TwJCO0JnpggTuQYZnx69QqFyLtlX0Md2uSD2pZOyiI1oWSX22xQJmWWzDBiMhQl9Xa/N9fe4p2POoQQNs8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886668; c=relaxed/simple; bh=MQs6Y/Ot6w9U45Nl0r78HMyQFGLOFhpfSPQUVvOaEtA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CV3eAbIIqlw9yXJ84P3ZsHlz6r9tuI4zd/Kv5aucIGTT8blUBrHXbnYGgYHb78EpObVOSsYkzq2kHDiY4mHkTSHWWmPwNCKfuXdDHCalKlrlxKadDKSFFaD3tu/rNnFj/HDotdqXbva6Hi1JnsACK67yqc5vwfPuiO8kXTpCBpw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BQWlzsuR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BQWlzsuR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6A02AC4CEFB; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886668; bh=MQs6Y/Ot6w9U45Nl0r78HMyQFGLOFhpfSPQUVvOaEtA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BQWlzsuRWYrl1E2RWLvBQDFRbGxb+uIKfxtaP82qW/+/iTPUYBJSSHXvj3tEWsret 0iE27Jz4WI7y6LkrJT5NRSWj3F2LTF/dtjFV+rQ4OwP5nwEhtEzuSOF3jZgVSMYrIZ mr0E2hsfrcWA4yleupkxDejpHH+yQfTmW4MI3QimBIYWqTG85KUgTR6AMBj5nGr0nY yyowd4ZkMMutoeiJ573OIVjopUxKJ+FKpLMAaqJPJ3nIZf8/vjwVYn8L5GuskpliGN Bjik5X7nCG4PIhbsQYUJKx9DWxaZxQpyqQYCAjdpGB/iZr9kCPP9p6w1ljvpN3GBln EORRV8vuf+tVQ== 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 06/11] mm/damon/tests/core-kunit: add damos_commit_quota_goals() test Date: Tue, 11 Nov 2025 10:44:05 -0800 Message-ID: <20251111184415.141757-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new unit test for damos_commit_quota_goals(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 0fdf9c7eedc3..3abf31fb1074 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -580,6 +580,86 @@ static void damos_test_commit_quota_goal(struct kunit = *test) }); } =20 +static void damos_test_commit_quota_goals_for(struct kunit *test, + struct damos_quota_goal *dst_goals, int nr_dst_goals, + struct damos_quota_goal *src_goals, int nr_src_goals) +{ + struct damos_quota dst, src; + struct damos_quota_goal *goal, *next; + bool skip =3D true; + int i; + + INIT_LIST_HEAD(&dst.goals); + INIT_LIST_HEAD(&src.goals); + + for (i =3D 0; i < nr_dst_goals; i++) { + /* + * When nr_src_goals is smaller than dst_goals, + * damos_commit_quota_goals() will kfree() the dst goals. + * Make it kfree()-able. + */ + goal =3D damos_new_quota_goal(dst_goals[i].metric, + dst_goals[i].target_value); + if (!goal) + goto out; + damos_add_quota_goal(&dst, goal); + } + skip =3D false; + for (i =3D 0; i < nr_src_goals; i++) + damos_add_quota_goal(&src, &src_goals[i]); + + damos_commit_quota_goals(&dst, &src); + + i =3D 0; + damos_for_each_quota_goal(goal, (&dst)) { + KUNIT_EXPECT_EQ(test, goal->metric, src_goals[i].metric); + KUNIT_EXPECT_EQ(test, goal->target_value, + src_goals[i++].target_value); + } + KUNIT_EXPECT_EQ(test, i, nr_src_goals); + +out: + damos_for_each_quota_goal_safe(goal, next, (&dst)) + damos_destroy_quota_goal(goal); + if (skip) + kunit_skip(test, "goal alloc fail"); +} + +static void damos_test_commit_quota_goals(struct kunit *test) +{ + damos_test_commit_quota_goals_for(test, + (struct damos_quota_goal[]){}, 0, + (struct damos_quota_goal[]){ + { + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 123, + }, + }, 1); + damos_test_commit_quota_goals_for(test, + (struct damos_quota_goal[]){ + { + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 234, + }, + + }, 1, + (struct damos_quota_goal[]){ + { + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 345, + }, + }, 1); + damos_test_commit_quota_goals_for(test, + (struct damos_quota_goal[]){ + { + .metric =3D DAMOS_QUOTA_USER_INPUT, + .target_value =3D 456, + }, + + }, 1, + (struct damos_quota_goal[]){}, 0); +} + static void damos_test_commit_filter_for(struct kunit *test, struct damos_filter *dst, struct damos_filter *src) { @@ -866,6 +946,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damon_test_moving_sum), KUNIT_CASE(damos_test_new_filter), KUNIT_CASE(damos_test_commit_quota_goal), + KUNIT_CASE(damos_test_commit_quota_goals), KUNIT_CASE(damos_test_commit_filter), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4AE352C08BB; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; cv=none; b=r07733ygPh0IKT2cE2j32WS2Sigs3nnFo8BGZn7F5AvlxodSfT4uZIci6iZjBZrTeq1xUNchBVn7n/FQdufKMdoioRClp/FC5xacoDQsktwDAM4k1XgA5t83q+wfwPjkfW9fnoFVfefApCRJWhbQMx4DXEebpuUeh/0v3Uoxqqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; c=relaxed/simple; bh=5hPS/JRy01yuhaxPekjxyV4N7WLnupymMnfSho8r7YU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Glp76kjM/tJPe4hYc6jHsMw4VoFdvRJ5Mgu6Zcm+U3tk5gYM0bSEUpdZZWtIH0jkselq0mEalwGaBKb6EiSZQyS7I7Jc1+ZMltuWmY7GhNT7vpoMbp66zqERJeqFKvbLRqCtm+YuDQqLl6Fo0yJVM9rHJFiM6UD2GSrcIPgaixE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rj81mmns; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rj81mmns" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B436AC2BCB1; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886668; bh=5hPS/JRy01yuhaxPekjxyV4N7WLnupymMnfSho8r7YU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rj81mmnsTq9QoQJciglj+bJbWGeRJMX1Z8c3nXxw5O866+6jzgG4D0x1bG/s/cn6t Wm0mjoiaPhVNsS3s2lED/trYsAAYtzb3wqopG5VmmZ4K1TPEwrWC+sXxv7sfN7wQpm 3jPPoH0C2v8/27DKJTnnFYbiQoq25aOahjNWIRfHE0y4s0dHjAYQdH+651u1ARpvR2 V2QRm7lKBebdCZvRnz+600iCpaBS94DRjlRxAm86QubX5E9PQh95Yni4JVMDB+uYhq 76qP//eUUWQVLd1sBWkr9wxUDZqVr81muia0rWg/4VRdvg7XwFY4wGDoAeL/00hp6n 9CaqyCsyW7C9g== 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 07/11] mm/damon/tests/core-kunit: add damos_commit_quota() test Date: Tue, 11 Nov 2025 10:44:06 -0800 Message-ID: <20251111184415.141757-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new unit test for damos_commit_quota(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 3abf31fb1074..546e1a09d801 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -660,6 +660,38 @@ static void damos_test_commit_quota_goals(struct kunit= *test) (struct damos_quota_goal[]){}, 0); } =20 +static void damos_test_commit_quota(struct kunit *test) +{ + struct damos_quota dst =3D { + .reset_interval =3D 1, + .ms =3D 2, + .sz =3D 3, + .weight_sz =3D 4, + .weight_nr_accesses =3D 5, + .weight_age =3D 6, + }; + struct damos_quota src =3D { + .reset_interval =3D 7, + .ms =3D 8, + .sz =3D 9, + .weight_sz =3D 10, + .weight_nr_accesses =3D 11, + .weight_age =3D 12, + }; + + INIT_LIST_HEAD(&dst.goals); + INIT_LIST_HEAD(&src.goals); + + damos_commit_quota(&dst, &src); + + KUNIT_EXPECT_EQ(test, dst.reset_interval, src.reset_interval); + KUNIT_EXPECT_EQ(test, dst.ms, src.ms); + KUNIT_EXPECT_EQ(test, dst.sz, src.sz); + KUNIT_EXPECT_EQ(test, dst.weight_sz, src.weight_sz); + KUNIT_EXPECT_EQ(test, dst.weight_nr_accesses, src.weight_nr_accesses); + KUNIT_EXPECT_EQ(test, dst.weight_age, src.weight_age); +} + static void damos_test_commit_filter_for(struct kunit *test, struct damos_filter *dst, struct damos_filter *src) { @@ -947,6 +979,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damos_test_new_filter), KUNIT_CASE(damos_test_commit_quota_goal), KUNIT_CASE(damos_test_commit_quota_goals), + KUNIT_CASE(damos_test_commit_quota), KUNIT_CASE(damos_test_commit_filter), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D27A62C11F5; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; cv=none; b=BLp6HeP+4pSW2zAqrBkpgtybOIq7PgMT9PO15meidUc/HMzpE8iehAYWDMpAUN3F+hMfcKJTLimhXC0awepA7LVRfdPWvO64OSH1czGlCgZBcMcIRkFrDmLEyhWXdSuBwpk1R9Mwf/8FmCAlQqYXyfGxQL6jS92OTB6LesdhXQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; c=relaxed/simple; bh=+8bf6ecH2QvmrcQl2a7rJm2jNUhjf8tGWK0R12xiYjg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YZqVLs1Q5pdbn0sDGW/aqhd+XDzWKRzUqiWU/moFcPpt0aLEKvR++zuB8NFyUxbt2o+86kWEhPXd18mg4zbYQA1Ia84F0YEHOEXg19eEQGKXGwicrUigapD3jtZeH4gTcInQ8UYvGoYtqZYXFXI5Sp2EYPy3O7g15qHR3w9ZJJI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pTdymFss; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pTdymFss" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 03EA8C4CEFB; Tue, 11 Nov 2025 18:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886669; bh=+8bf6ecH2QvmrcQl2a7rJm2jNUhjf8tGWK0R12xiYjg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pTdymFssBjyFKZQvY9G5+u54zM6i/+Y4DTZAt0CIeOQDITh6nLowUfB2sTsgOz3uB pgc2KrrqQHpnatga8xi7CQ5mlgLiVf3IfzofdVbdNeGDtBolgZ6QfixzluMbHTyDUa eyCkNpGQKJM4hZx1bvGAxutK20scr0IQuyY9Ef03FAgYpKn8XsVFcyn0ZKL9/qMIOm ZtcNNlgg9YAMgyymYON55BB6n7QIpZ/krFt+5dx4ZD49Z8WE5GPuO1q+XtFptUMrsH mslTc6T6m5UPLhWDP+Agna40O5ACC3ecBjRMY3r/Hy81pTaaYgrjxhveaA7yi4QLnN VIQt0RDIb5BVw== 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 08/11] mm/damon/core: pass migrate_dests to damos_commit_dests() Date: Tue, 11 Nov 2025 10:44:07 -0800 Message-ID: <20251111184415.141757-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" damos_commit_dests() receives 'struct damos' pointers, while it uses only their ->migrate_dests fields. This makes code unnecessarily difficult to read. It also makes unit tests writing complicated. Refactor the function to receive pointers to the ->migrate_dests fields. Signed-off-by: SeongJae Park --- mm/damon/core.c | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 06ad359024ad..a14cc73c2cab 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1000,36 +1000,32 @@ static void damos_set_filters_default_reject(struct= damos *s) damos_filters_default_reject(&s->ops_filters); } =20 -static int damos_commit_dests(struct damos *dst, struct damos *src) +static int damos_commit_dests(struct damos_migrate_dests *dst, + struct damos_migrate_dests *src) { - struct damos_migrate_dests *dst_dests, *src_dests; + if (dst->nr_dests !=3D src->nr_dests) { + kfree(dst->node_id_arr); + kfree(dst->weight_arr); =20 - dst_dests =3D &dst->migrate_dests; - src_dests =3D &src->migrate_dests; - - if (dst_dests->nr_dests !=3D src_dests->nr_dests) { - kfree(dst_dests->node_id_arr); - kfree(dst_dests->weight_arr); - - dst_dests->node_id_arr =3D kmalloc_array(src_dests->nr_dests, - sizeof(*dst_dests->node_id_arr), GFP_KERNEL); - if (!dst_dests->node_id_arr) { - dst_dests->weight_arr =3D NULL; + dst->node_id_arr =3D kmalloc_array(src->nr_dests, + sizeof(*dst->node_id_arr), GFP_KERNEL); + if (!dst->node_id_arr) { + dst->weight_arr =3D NULL; return -ENOMEM; } =20 - dst_dests->weight_arr =3D kmalloc_array(src_dests->nr_dests, - sizeof(*dst_dests->weight_arr), GFP_KERNEL); - if (!dst_dests->weight_arr) { + dst->weight_arr =3D kmalloc_array(src->nr_dests, + sizeof(*dst->weight_arr), GFP_KERNEL); + if (!dst->weight_arr) { /* ->node_id_arr will be freed by scheme destruction */ return -ENOMEM; } } =20 - dst_dests->nr_dests =3D src_dests->nr_dests; - for (int i =3D 0; i < src_dests->nr_dests; i++) { - dst_dests->node_id_arr[i] =3D src_dests->node_id_arr[i]; - dst_dests->weight_arr[i] =3D src_dests->weight_arr[i]; + dst->nr_dests =3D src->nr_dests; + for (int i =3D 0; i < src->nr_dests; i++) { + dst->node_id_arr[i] =3D src->node_id_arr[i]; + dst->weight_arr[i] =3D src->weight_arr[i]; } =20 return 0; @@ -1076,7 +1072,7 @@ static int damos_commit(struct damos *dst, struct dam= os *src) dst->wmarks =3D src->wmarks; dst->target_nid =3D src->target_nid; =20 - err =3D damos_commit_dests(dst, src); + err =3D damos_commit_dests(&dst->migrate_dests, &src->migrate_dests); if (err) return err; =20 --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9BE212C0F96; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; cv=none; b=XSL8Wl1jCL0rPNbIFSREIoLBhhl6fBxHTVBMEOcw0HL166jXVOTOsqk+J8endih8ZNVcyKY0ecu2kJNjPoSwNZpYH+qo2Y8Y/VQ1EhNLXJq28aJaDlKviYawlsGg0/gdPq2n2/2lcvRNFOSMVHjGy9WnhSwu6bsZjv1Ib2hGeJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886669; c=relaxed/simple; bh=tky6fX2wXCCUx0aD3orGzGNV89HCs2127JlHIOUkDvQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=al9Kqaz0vId33X4GBQU1uYKiOEsaWH8by35fTVxNLdiRJDIwRSPLRRCrMckrbACUTAbwYqU1EYyWk96XCm7jXmLnOiwa7cse3Gk/hHOWbIMwMdBR+yqy8To2OgdsLZ/9e7Q6VhE/rYKoJIFwsKPFDa4ciJdcKx9Cb78Hjuru6/0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=I91ZQq0a; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="I91ZQq0a" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 538D4C19421; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886669; bh=tky6fX2wXCCUx0aD3orGzGNV89HCs2127JlHIOUkDvQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I91ZQq0aHC7IVWjDDARNcxlvg91DU4DWeMAdsQXq9P7alYjccpLNYouaHhVTC3Rko uiyyFpj15TE3NrN9Y9/wxvdmxnT0nKTkvoqPC1c48dhBEKFWhTgnWqRhMNa2fqC5e5 7z4VIffRy5a55tWJbJVgPBGJfpF5GQNkYR9TYz0piB4hVprmVQ2LNsbYt1yhrgv505 qVWHuIy8hVsDq+EH0zc4aVXFH48Cn/RTEfQcyaTNO869zYfoBfp7KGHZhun+fDCtKl RsXUJHJK6x3Z20TmoCSoogD8jykZ4UtA12nw7xkcflLLQSvGB6nAlS8Aui4vJai0b8 lehFzSoWk9TTQ== 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 09/11] mm/damon/tests/core-kunit: add damos_commit_dests() test Date: Tue, 11 Nov 2025 10:44:08 -0800 Message-ID: <20251111184415.141757-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new unit test for damos_commit_dests(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 97 +++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 546e1a09d801..10f2aefc71ff 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -692,6 +692,102 @@ static void damos_test_commit_quota(struct kunit *tes= t) KUNIT_EXPECT_EQ(test, dst.weight_age, src.weight_age); } =20 +static int damos_test_help_dests_setup(struct damos_migrate_dests *dests, + unsigned int *node_id_arr, unsigned int *weight_arr, + size_t nr_dests) +{ + size_t i; + + dests->node_id_arr =3D kmalloc_array(nr_dests, + sizeof(*dests->node_id_arr), GFP_KERNEL); + if (!dests->node_id_arr) + return -ENOMEM; + dests->weight_arr =3D kmalloc_array(nr_dests, + sizeof(*dests->weight_arr), GFP_KERNEL); + if (!dests->weight_arr) { + kfree(dests->node_id_arr); + dests->node_id_arr =3D NULL; + return -ENOMEM; + } + + for (i =3D 0; i < nr_dests; i++) { + dests->node_id_arr[i] =3D node_id_arr[i]; + dests->weight_arr[i] =3D weight_arr[i]; + } + dests->nr_dests =3D nr_dests; + return 0; +} + +static void damos_test_help_dests_free(struct damos_migrate_dests *dests) +{ + kfree(dests->node_id_arr); + kfree(dests->weight_arr); +} + +static void damos_test_commit_dests_for(struct kunit *test, + unsigned int *dst_node_id_arr, unsigned int *dst_weight_arr, + size_t dst_nr_dests, + unsigned int *src_node_id_arr, unsigned int *src_weight_arr, + size_t src_nr_dests) +{ + struct damos_migrate_dests dst =3D {}, src =3D {}; + int i, err; + bool skip =3D true; + + err =3D damos_test_help_dests_setup(&dst, dst_node_id_arr, + dst_weight_arr, dst_nr_dests); + if (err) + kunit_skip(test, "dests setup fail"); + err =3D damos_test_help_dests_setup(&src, src_node_id_arr, + src_weight_arr, src_nr_dests); + if (err) { + damos_test_help_dests_free(&dst); + kunit_skip(test, "src setup fail"); + } + err =3D damos_commit_dests(&dst, &src); + if (err) + goto out; + skip =3D false; + + KUNIT_EXPECT_EQ(test, dst.nr_dests, src_nr_dests); + for (i =3D 0; i < dst.nr_dests; i++) { + KUNIT_EXPECT_EQ(test, dst.node_id_arr[i], src_node_id_arr[i]); + KUNIT_EXPECT_EQ(test, dst.weight_arr[i], src_weight_arr[i]); + } + +out: + damos_test_help_dests_free(&dst); + damos_test_help_dests_free(&src); + if (skip) + kunit_skip(test, "skip"); +} + +static void damos_test_commit_dests(struct kunit *test) +{ + damos_test_commit_dests_for(test, + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, + 3, + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, + 3); + damos_test_commit_dests_for(test, + (unsigned int[]){1, 2}, (unsigned int[]){2, 3}, + 2, + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, + 3); + damos_test_commit_dests_for(test, + NULL, NULL, 0, + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, + 3); + damos_test_commit_dests_for(test, + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, + 3, + (unsigned int[]){4, 5}, (unsigned int[]){5, 6}, 2); + damos_test_commit_dests_for(test, + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, + 3, + NULL, NULL, 0); +} + static void damos_test_commit_filter_for(struct kunit *test, struct damos_filter *dst, struct damos_filter *src) { @@ -980,6 +1076,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damos_test_commit_quota_goal), KUNIT_CASE(damos_test_commit_quota_goals), KUNIT_CASE(damos_test_commit_quota), + KUNIT_CASE(damos_test_commit_dests), KUNIT_CASE(damos_test_commit_filter), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E440E2C15A2; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886670; cv=none; b=lN2ntf8TqIzETdSdYSHqOdSinXZfD+yIN752izTnlONQUe2JcnsE3n3hnuPK6HOISoElX/bAr+SVACLawhQRsDtVye9DjpUQhFLTXTeRMy6ug1PO6AxODr7Rh8YTCUP3s2Q114jj7I5Jg56qN72eEEPX1WhLUPOzZdSlXqIORyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886670; c=relaxed/simple; bh=UHTTCWbBxKg4HVFBjTI+3bp4LAWv9VnyN7HpL47+onk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ByzalPf45X/QgpFko/2Q4RdWg2ftFNQh2qPn0njDoYnbSuI3SJmioktYZvoWtHxhy8iTk4C+cMvhZ1tP14R6YwwlYu+YdxhQLynvdK2Ta2oqt4tc6lT1IOKrgxeVlKo42OT1Trjz1xcxWFvUGqnIYMG5nCxJ+E8dH0lEboanEeA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ivB+mUEJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ivB+mUEJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D23FC116D0; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886669; bh=UHTTCWbBxKg4HVFBjTI+3bp4LAWv9VnyN7HpL47+onk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ivB+mUEJg/v+GWvlW7Q7nRX8JRqQEfRVL0BwPVv9S1vkR6mhVZO/vgmOG9bWe6nQK tQKRPeqjBXg5Zbor+Vn+l3o/rVu1HkdRN6hgT9YM7sNvfcATE99rKvba+BmemfCHeO SHunCl44MO+uvxRsip0iaPF9XNuCLpuNdSyAEb6kGbHMSy0yGpwkVyd4bLaOq9lOBG R742RGGAY3sSUhywxeUgdHnpPjM/miRf1TtzPG6WzMHGOBpuYm+OvrN2/LO7KNpGYK xkSeqg13Uet2qerkEo8vZWhhTda5LWSSABDZrFHoEwT74wP1qn5YtRkRiiZIwxYgwT cqOpD5atP/lOg== 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/11] mm/damon/tests/core-kunit: add damos_commit() test Date: Tue, 11 Nov 2025 10:44:09 -0800 Message-ID: <20251111184415.141757-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new unit test for damos_commit(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 92 +++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 10f2aefc71ff..c71c10f9e059 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -873,6 +873,97 @@ static void damos_test_commit_filter(struct kunit *tes= t) }); } =20 +static void damos_test_help_initailize_scheme(struct damos *scheme) +{ + INIT_LIST_HEAD(&scheme->quota.goals); + INIT_LIST_HEAD(&scheme->filters); + INIT_LIST_HEAD(&scheme->ops_filters); +} + +static void damos_test_commit_for(struct kunit *test, struct damos *dst, + struct damos *src) +{ + int err; + + damos_test_help_initailize_scheme(dst); + damos_test_help_initailize_scheme(src); + + err =3D damos_commit(dst, src); + if (err) + kunit_skip(test, "damos_commit fail"); + + KUNIT_EXPECT_EQ(test, dst->pattern.min_sz_region, + src->pattern.min_sz_region); + KUNIT_EXPECT_EQ(test, dst->pattern.max_sz_region, + src->pattern.max_sz_region); + KUNIT_EXPECT_EQ(test, dst->pattern.min_nr_accesses, + src->pattern.min_nr_accesses); + KUNIT_EXPECT_EQ(test, dst->pattern.max_nr_accesses, + src->pattern.max_nr_accesses); + KUNIT_EXPECT_EQ(test, dst->pattern.min_age_region, + src->pattern.min_age_region); + KUNIT_EXPECT_EQ(test, dst->pattern.max_age_region, + src->pattern.max_age_region); + + KUNIT_EXPECT_EQ(test, dst->action, src->action); + KUNIT_EXPECT_EQ(test, dst->apply_interval_us, src->apply_interval_us); + + KUNIT_EXPECT_EQ(test, dst->wmarks.metric, src->wmarks.metric); + KUNIT_EXPECT_EQ(test, dst->wmarks.interval, src->wmarks.interval); + KUNIT_EXPECT_EQ(test, dst->wmarks.high, src->wmarks.high); + KUNIT_EXPECT_EQ(test, dst->wmarks.mid, src->wmarks.mid); + KUNIT_EXPECT_EQ(test, dst->wmarks.low, src->wmarks.low); + + switch (src->action) { + case DAMOS_MIGRATE_COLD: + case DAMOS_MIGRATE_HOT: + KUNIT_EXPECT_EQ(test, dst->target_nid, src->target_nid); + break; + default: + break; + } +} + +static void damos_test_commit(struct kunit *test) +{ + damos_test_commit_for(test, + &(struct damos){ + .pattern =3D (struct damos_access_pattern){ + 1, 2, 3, 4, 5, 6}, + .action =3D DAMOS_PAGEOUT, + .apply_interval_us =3D 1000000, + .wmarks =3D (struct damos_watermarks){ + DAMOS_WMARK_FREE_MEM_RATE, + 900, 100, 50}, + }, + &(struct damos){ + .pattern =3D (struct damos_access_pattern){ + 2, 3, 4, 5, 6, 7}, + .action =3D DAMOS_PAGEOUT, + .apply_interval_us =3D 2000000, + .wmarks =3D (struct damos_watermarks){ + DAMOS_WMARK_FREE_MEM_RATE, + 800, 50, 30}, + }); + damos_test_commit_for(test, + &(struct damos){ + .pattern =3D (struct damos_access_pattern){ + 1, 2, 3, 4, 5, 6}, + .action =3D DAMOS_PAGEOUT, + .apply_interval_us =3D 1000000, + .wmarks =3D (struct damos_watermarks){ + DAMOS_WMARK_FREE_MEM_RATE, + 900, 100, 50}, + }, + &(struct damos){ + .pattern =3D (struct damos_access_pattern){ + 2, 3, 4, 5, 6, 7}, + .action =3D DAMOS_MIGRATE_HOT, + .apply_interval_us =3D 2000000, + .target_nid =3D 5, + }); +} + static void damos_test_filter_out(struct kunit *test) { struct damon_target *t; @@ -1078,6 +1169,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damos_test_commit_quota), KUNIT_CASE(damos_test_commit_dests), KUNIT_CASE(damos_test_commit_filter), + KUNIT_CASE(damos_test_commit), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), KUNIT_CASE(damon_test_set_filters_default_reject), --=20 2.47.3 From nobody Sat Feb 7 21:11:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 833202C2369; Tue, 11 Nov 2025 18:44:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886670; cv=none; b=gI1tnyqhbjFHOiPNC9nPDhwQJcOf2FZw959/IBNv3n1Tpy8AZPXQAzUOdXk5IVxpqWBOq+YnzZzgohu0w1my8KR34/EPXIGIqVWgrzYIa+AJUXwpeXI4zv1XK+sqRfgVa0uAL8+NW/eTX3AL5WwsbKf+cn6xAqFLwzY34hlDHFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762886670; c=relaxed/simple; bh=m/GX1of/o0JwmQB22uABGhbz8AVH+G+y5IyrNLPgTaI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E8eVoNo7GVNzLKYFGs7LqAfUNxa5NvAHx1f12vTWUB4USqdmMUZURcnHdz3QLXp8Ip7br3OTBlp+d9Is46cZwWscgp8RnbabG1S1HtdGND4MPnOpBM11uJumMnpNn9VYlUxrNbL1f0zAwQ5t8HjkFZadA00C08ny6csxsK9Hgkw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FNPTrLvs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FNPTrLvs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7B0FC2BCB0; Tue, 11 Nov 2025 18:44:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762886670; bh=m/GX1of/o0JwmQB22uABGhbz8AVH+G+y5IyrNLPgTaI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FNPTrLvs9YPxmIT6K0ECp8GD35K01XGC/S34VT/9Wej8jKHlX0asTUZSAxO3VSoKg 34behRhWEUos0wj4lYps20hRlOSRHQTvmS30ugkz5TkUL7qrEYyTsveSy31dBN5yAa Sm/wkBIY0eYDWjuDoyOPYGMKHWbErVsUEWTrAgDJVe0KdBDgMKRpfnZE1Cd8DnO9Ze n6VVw0LB9GW1+5i8gwGKg40k36uRDBmgEDvZtNLA1MzpZ8GJ4nOCE+//jsud4X/gVa Jqq9stjJXqb1n7xE5s+hpLu2mzMUkWMFBsQzO8XWJWdHNQZ9DZoZQa1UcDn+F3Tb++ dXoG050dSrRCQ== 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 11/11] mm/damon/tests/core-kunit: add damon_commit_target_regions() test Date: Tue, 11 Nov 2025 10:44:10 -0800 Message-ID: <20251111184415.141757-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111184415.141757-1-sj@kernel.org> References: <20251111184415.141757-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" Add a new test for damon_commit_target_regions(). Signed-off-by: SeongJae Park --- mm/damon/tests/core-kunit.h | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index c71c10f9e059..0d2d8cda8631 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -964,6 +964,70 @@ static void damos_test_commit(struct kunit *test) }); } =20 +static struct damon_target *damon_test_help_setup_target( + unsigned long region_start_end[][2], int nr_regions) +{ + struct damon_target *t; + struct damon_region *r; + int i; + + t =3D damon_new_target(); + if (!t) + return NULL; + for (i =3D 0; i < nr_regions; i++) { + r =3D damon_new_region(region_start_end[i][0], + region_start_end[i][1]); + if (!r) { + damon_free_target(t); + return NULL; + } + damon_add_region(r, t); + } + return t; +} + +static void damon_test_commit_target_regions_for(struct kunit *test, + unsigned long dst_start_end[][2], int nr_dst_regions, + unsigned long src_start_end[][2], int nr_src_regions, + unsigned long expect_start_end[][2], int nr_expect_regions) +{ + struct damon_target *dst_target, *src_target; + struct damon_region *r; + int i; + + dst_target =3D damon_test_help_setup_target(dst_start_end, nr_dst_regions= ); + if (!dst_target) + kunit_skip(test, "dst target setup fail"); + src_target =3D damon_test_help_setup_target(src_start_end, nr_src_regions= ); + if (!src_target) { + damon_free_target(dst_target); + kunit_skip(test, "src target setup fail"); + } + damon_commit_target_regions(dst_target, src_target, 1); + i =3D 0; + damon_for_each_region(r, dst_target) { + KUNIT_EXPECT_EQ(test, r->ar.start, expect_start_end[i][0]); + KUNIT_EXPECT_EQ(test, r->ar.end, expect_start_end[i][1]); + i++; + } + KUNIT_EXPECT_EQ(test, damon_nr_regions(dst_target), nr_expect_regions); + KUNIT_EXPECT_EQ(test, i, nr_expect_regions); + damon_free_target(dst_target); + damon_free_target(src_target); +} + +static void damon_test_commit_target_regions(struct kunit *test) +{ + damon_test_commit_target_regions_for(test, + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2, + (unsigned long[][2]) {{4, 6}}, 1, + (unsigned long[][2]) {{4, 6}}, 1); + damon_test_commit_target_regions_for(test, + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2, + (unsigned long[][2]) {}, 0, + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2); +} + static void damos_test_filter_out(struct kunit *test) { struct damon_target *t; @@ -1170,6 +1234,7 @@ static struct kunit_case damon_test_cases[] =3D { KUNIT_CASE(damos_test_commit_dests), KUNIT_CASE(damos_test_commit_filter), KUNIT_CASE(damos_test_commit), + KUNIT_CASE(damon_test_commit_target_regions), KUNIT_CASE(damos_test_filter_out), KUNIT_CASE(damon_test_feed_loop_next_input), KUNIT_CASE(damon_test_set_filters_default_reject), --=20 2.47.3