From nobody Tue Dec 16 23:25:28 2025 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 3CA43262D3D; Thu, 20 Feb 2025 19:46:52 +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=1740080812; cv=none; b=aD6DjRp/sqTVOX0OJzW9uwnkU1OrXdmCDcFaACT95zXXyBUsuQH7jv8BRFGXVa4ov+/aqRAHdFp9td0KNhARae8lAZ6x3+UDjwT3TWqgyd2isjjtHId2K69z7Vq+pj1RvLpPC6TysO/gXkzVUxiO0ZmVs/SZS2Rn8ugh1ihq8Uk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080812; c=relaxed/simple; bh=GH9O1+rW8ywRoDFEndKmAk6SUuzHHAhWNBp35Gw6b10=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=L131uNziWNYRWCi3U9TJNJuBGjtIrtyDg/5Mydn4JI5BmvkGM3iqB5VnbFrJgb0f4BLJv2QdNf54bLRa7CMTfwJOE+kHD0V44jlGGUgUA29g+InSnsI+nkSbD5lke2oxFGzhA1lpx0L8yyEz3gGrtQk96+3wn5lcv6OdFA/m8MU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=maTwzYGK; 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="maTwzYGK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EAC24C4CED1; Thu, 20 Feb 2025 19:46:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080812; bh=GH9O1+rW8ywRoDFEndKmAk6SUuzHHAhWNBp35Gw6b10=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=maTwzYGKA5skdxLquMlgD68qhQHKsYnoHbbYAoLeNewOU9hccV8E1abjLK3oQTDIA RSJnIfKh4yOjq3nkm3jUay/1zIbbLmcKE1cbUB/gybWIxAIkS5+FUmRTEKWsBBi5et y+f2C1ob6qQBTaX3LWJI3KvIV5qn1hKopVDuvamYi0W08t5KPwZTuIlbSi9V05mUTk +Vncl26DNFLLSkL6s5/jCrxCscsUNFpdmflcuUFjFLMTCFhBDR20z95B0KHYljyd/t vV7u53LOY+Az36gNffp59kmpS4u/amTgn/n9cbycqZn7MxikkYuV5/2SS6dfNm2gMT Eg0u49fhQILUw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 1/8] mm/damon/sysfs-schemes: let damon_sysfs_scheme_set_filters() be used for different named directories Date: Thu, 20 Feb 2025 11:46:39 -0800 Message-Id: <20250220194646.37726-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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_sysfs_scheme_set_filters() is using a hard-coded directory name, "filters". Refactor for general named directories of same files hierarchy, to use from upcoming changes. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 66a1c46cee84..541ca5887b24 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -1604,7 +1604,9 @@ static int damon_sysfs_scheme_set_watermarks(struct d= amon_sysfs_scheme *scheme) return err; } =20 -static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *schem= e) +static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *schem= e, + const char *name, + struct damon_sysfs_scheme_filters **filters_ptr) { struct damon_sysfs_scheme_filters *filters =3D damon_sysfs_scheme_filters_alloc(); @@ -1614,11 +1616,11 @@ static int damon_sysfs_scheme_set_filters(struct da= mon_sysfs_scheme *scheme) return -ENOMEM; err =3D kobject_init_and_add(&filters->kobj, &damon_sysfs_scheme_filters_ktype, &scheme->kobj, - "filters"); + name); if (err) kobject_put(&filters->kobj); else - scheme->filters =3D filters; + *filters_ptr =3D filters; return err; } =20 @@ -1670,7 +1672,8 @@ static int damon_sysfs_scheme_add_dirs(struct damon_s= ysfs_scheme *scheme) err =3D damon_sysfs_scheme_set_watermarks(scheme); if (err) goto put_quotas_access_pattern_out; - err =3D damon_sysfs_scheme_set_filters(scheme); + err =3D damon_sysfs_scheme_set_filters(scheme, "filters", + &scheme->filters); if (err) goto put_watermarks_quotas_access_pattern_out; err =3D damon_sysfs_scheme_set_stats(scheme); --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 C959F26460B; Thu, 20 Feb 2025 19:46:53 +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=1740080813; cv=none; b=pDwgWNKBuvW//H5ozBF2gg5TTVfR6Z/p2jgKobBhVk3VZMJ3cBZzKt2pU7SNjVQ1VX8HGdPacCKluDFc73OFJAB2MFzhakT70OiZEn5ePh67lWLXLL1jCnMj+f3qcNpflZTzL4i7dzGNm963+aao5iSnVYJCmMGCJZPz/FqEpcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080813; c=relaxed/simple; bh=x49E7WlC9jzDdYoMfkdigGCJYjlYQheM7yPC5VYZSrg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ni58a9ZrnIUYDJY4AACIzO2OH7ujwbHrP1OYomz6ITThZerBtpH7ubBdVqaIRmeOSMlgl2/5P3JdX0iRNgLYrJZOhkSxtTz8IzORtXFHs4gCpl8HDBvEU45eVuUOds3e73zmVUo4x9n6XHTNXN0yeyzgSijdW9J7RKppEyC7s60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=azoYwA17; 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="azoYwA17" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22BF8C4CED1; Thu, 20 Feb 2025 19:46:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080813; bh=x49E7WlC9jzDdYoMfkdigGCJYjlYQheM7yPC5VYZSrg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=azoYwA174ibgpxsa5omO/gZ6EKQsnGkEk4Ql2SF2Cy0Tj9zoSDHUXemgBNpO64T6U cvSp28YFClj3X9fS3NRI1PHh+KP714IZORD2IOG8JFCqJKpbUBXZcdVaJ0oKfNgAQD /SvEQayW/MtBtvBsu2bk4PI105CSB1SZfo09wwh9kcbEf0FR2gIqKpntM8AVVcewjd E8DhLOrwUW54aUlMiyS00gXij0XmoU3+06uWAH5hkHyJQUvz/DCymOeyo8QNdMV3h4 ar4O5h7nNZQuDFBW4VJETtLu838dvoLBGecYZRA54ufmuZWNOllIrN5YHkAwl+Ti97 DhwgBnBHIu4bA== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/8] mm/damon/sysfs-schemes: implement core_filters and ops_filters directories Date: Thu, 20 Feb 2025 11:46:40 -0800 Message-Id: <20250220194646.37726-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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" Implement two DAMOS sysfs directories for managing core and operations layer handled filters separately. Those are named as 'core_filters' and 'ops_filters', and have files hierarchy same to 'filters'. This commit is only populating and cleaning up the directories, not really the files with DAMON. Following changes will make the connections. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 541ca5887b24..61ff800ce78d 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -1504,6 +1504,8 @@ struct damon_sysfs_scheme { unsigned long apply_interval_us; struct damon_sysfs_quotas *quotas; struct damon_sysfs_watermarks *watermarks; + struct damon_sysfs_scheme_filters *core_filters; + struct damon_sysfs_scheme_filters *ops_filters; struct damon_sysfs_scheme_filters *filters; struct damon_sysfs_stats *stats; struct damon_sysfs_scheme_regions *tried_regions; @@ -1624,6 +1626,33 @@ static int damon_sysfs_scheme_set_filters(struct dam= on_sysfs_scheme *scheme, return err; } =20 +static int damos_sysfs_set_filter_dirs(struct damon_sysfs_scheme *scheme) +{ + int err; + + err =3D damon_sysfs_scheme_set_filters(scheme, "filters", + &scheme->filters); + if (err) + return err; + err =3D damon_sysfs_scheme_set_filters(scheme, "core_filters", + &scheme->core_filters); + if (err) + goto put_filters_out; + err =3D damon_sysfs_scheme_set_filters(scheme, "ops_filters", + &scheme->ops_filters); + if (err) + goto put_core_filters_out; + return 0; + +put_core_filters_out: + kobject_put(&scheme->core_filters->kobj); + scheme->core_filters =3D NULL; +put_filters_out: + kobject_put(&scheme->filters->kobj); + scheme->filters =3D NULL; + return err; +} + static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) { struct damon_sysfs_stats *stats =3D damon_sysfs_stats_alloc(); @@ -1672,8 +1701,7 @@ static int damon_sysfs_scheme_add_dirs(struct damon_s= ysfs_scheme *scheme) err =3D damon_sysfs_scheme_set_watermarks(scheme); if (err) goto put_quotas_access_pattern_out; - err =3D damon_sysfs_scheme_set_filters(scheme, "filters", - &scheme->filters); + err =3D damos_sysfs_set_filter_dirs(scheme); if (err) goto put_watermarks_quotas_access_pattern_out; err =3D damon_sysfs_scheme_set_stats(scheme); @@ -1688,6 +1716,10 @@ static int damon_sysfs_scheme_add_dirs(struct damon_= sysfs_scheme *scheme) kobject_put(&scheme->tried_regions->kobj); scheme->tried_regions =3D NULL; put_filters_watermarks_quotas_access_pattern_out: + kobject_put(&scheme->ops_filters->kobj); + scheme->ops_filters =3D NULL; + kobject_put(&scheme->core_filters->kobj); + scheme->core_filters =3D NULL; kobject_put(&scheme->filters->kobj); scheme->filters =3D NULL; put_watermarks_quotas_access_pattern_out: @@ -1711,6 +1743,10 @@ static void damon_sysfs_scheme_rm_dirs(struct damon_= sysfs_scheme *scheme) kobject_put(&scheme->watermarks->kobj); damon_sysfs_scheme_filters_rm_dirs(scheme->filters); kobject_put(&scheme->filters->kobj); + damon_sysfs_scheme_filters_rm_dirs(scheme->core_filters); + kobject_put(&scheme->core_filters->kobj); + damon_sysfs_scheme_filters_rm_dirs(scheme->ops_filters); + kobject_put(&scheme->ops_filters->kobj); kobject_put(&scheme->stats->kobj); damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions); kobject_put(&scheme->tried_regions->kobj); --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 6B5EA26461C; Thu, 20 Feb 2025 19:46:54 +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=1740080814; cv=none; b=cTeqHrEbEdkxD/O3TnyRspX2FtTrGoJy3Zuk4bZ6A7QWIsSrWOzrvUrYEyRIdxxsAuVG5goXPI28uPAwFqJrSPrWlH+TtEDbNUK75GUiFyt5l1cSeSXX7I/luOkCh7WUaAsvpdj0nmR8+ZS4IaHwS/B7olRgPMJ7SvHmU/6o56A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080814; c=relaxed/simple; bh=wL/4Ps4xqCe4JY2MuJBUpgRAAyA49p5mtKK+mW9qR+A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ld8lQe+K8wXnUI6rdBLhxcMCa8ed9lBq1WBCgREwRlv9D5uy7ZoTuKglVfHQVZzPn54I4q22JCVIbWCXu2iYeENs9vV2+GBufq29EFD98VXvELfFssfFGn+isdfRiPSwkQf72MiPuX4/6LM5szah76+tARf9Fe0uShbkokzx46A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RKWygKjo; 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="RKWygKjo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 286DEC4CED1; Thu, 20 Feb 2025 19:46:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080814; bh=wL/4Ps4xqCe4JY2MuJBUpgRAAyA49p5mtKK+mW9qR+A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RKWygKjoL1oSenPwdkIqV8dQ+WNR2ETeM5PdaAJFbqHb8eDuLmlNz3PPe270203cs FD7wIoi3aBMqxE5kFuhWQF+JhOfzbz7tQEYQfsXfxto6vB4Okv3E83HlZBegiNwE0R sVv4+zeFHbppPIUbvz9mjbMJJO0heWpcCOmvXSCaDUY5dpq2vvGS71xXnSVMSOl2vo jawR1UKrYM/8JVV+kg6dCG1aJ96RS4bwUdPjzXdhPsT041nr79zeP4cniEbYHjyNHP y8BANuduzs1tie4HkHG7B1CGoF/OQjJHDHrUR+dnNN5r3YeS7jS9A0dSUMnOS8xNTW 3/48jwN1j+Jew== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 3/8] mm/damon/sysfs-schemes: commit filters in {core,ops}_filters directories Date: Thu, 20 Feb 2025 11:46:41 -0800 Message-Id: <20250220194646.37726-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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" Connect user inputs to files under core_filters and ops_filters with DAMON, so that the files can really function. Becasuse {core,ops}_filters are easier to be managed in terms of expecting filters evaluation order, add filters in {core,ops}_filters before 'filters' directory. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 61ff800ce78d..e85feb329bd6 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -2143,8 +2143,6 @@ static struct damos *damon_sysfs_mk_scheme( struct damon_sysfs_quotas *sysfs_quotas =3D sysfs_scheme->quotas; struct damon_sysfs_weights *sysfs_weights =3D sysfs_quotas->weights; struct damon_sysfs_watermarks *sysfs_wmarks =3D sysfs_scheme->watermarks; - struct damon_sysfs_scheme_filters *sysfs_filters =3D - sysfs_scheme->filters; struct damos *scheme; int err; =20 @@ -2184,7 +2182,17 @@ static struct damos *damon_sysfs_mk_scheme( return NULL; } =20 - err =3D damon_sysfs_add_scheme_filters(scheme, sysfs_filters); + err =3D damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->core_filters= ); + if (err) { + damon_destroy_scheme(scheme); + return NULL; + } + err =3D damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->ops_filters); + if (err) { + damon_destroy_scheme(scheme); + return NULL; + } + err =3D damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->filters); if (err) { damon_destroy_scheme(scheme); return NULL; --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 8478A264F81; Thu, 20 Feb 2025 19:46:55 +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=1740080815; cv=none; b=hsseiouH/4YMOVIWRTckiZ7DeiAfZ3v6gjAVT8S5YerSTFjJN1poN0m3vbGOJV9Dmgmm+tmZRHJgdd/8vGG68qGcOZi9DlnxluLe2acTYFkHfovX9Yw8jJ38Uw1PKGaIn376UVJMFR2E1YaqBmpUjyqvOSXHIt3d1v0PpTs2Hxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080815; c=relaxed/simple; bh=unBPrgpwY4dqZxI9ZkGpabB3hwhCwXKpoAI9O5yqzHE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EY3scEjr5Ttk5jxiEcZZrDx8tXqo/jCukMQ0iR/iagBbptnHsiyK4KwmhFTOoFy3RGHxR4cVck79erP1cttyAci0/IuWYZvAJwgmNuFbEaVBrOiOBDstQnY94nht2ER27id6c4rSquM1DNEu1/0DRBP0eofrzq5DT/Ag/lyYE3w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WewL63sw; 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="WewL63sw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D234C4CED6; Thu, 20 Feb 2025 19:46:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080815; bh=unBPrgpwY4dqZxI9ZkGpabB3hwhCwXKpoAI9O5yqzHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WewL63sw7nGHhNQcUnh0tz/dMaSYlbcPYe2RWUmVq+aytbTyEYmpJ6J5w3nOlu4tT GQ0ICGSmH408g7E32RUlQYub0hg/zDhjc44kR5LL+Sihris56f7X8MBijvaafdP99d TMsc1p8NcfjBl03dknhjDjkCUwNad8S1Zfg8OvSILPUwhYP6FJALgfdL1TYM4dAEzZ LuHi9slL+2/w7NKWzx0yIab130ftf+AcoJbYKdA89jVOGAfSlhjXCnjZHfBMgqaCiw b3Yw/gjvY+BOK2TxjFUCLDpJiUBvseEL/1Fc2ygXSCfhw4OXJQmjFSM04kbBTn3Il+ EPzMBOXW9UHAw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 4/8] mm/damon/core: expose damos_filter_for_ops() to DAMON kernel API callers Date: Thu, 20 Feb 2025 11:46:42 -0800 Message-Id: <20250220194646.37726-5-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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_filter_for_ops() can be useful to avoid putting wrong type of filters in wrong place. Make it be exposed to DAMON kernel API callers. Signed-off-by: SeongJae Park --- include/linux/damon.h | 1 + mm/damon/core.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 1d8479f57f85..085f26a2e702 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -846,6 +846,7 @@ void damon_update_region_access_rate(struct damon_regio= n *r, bool accessed, struct damos_filter *damos_new_filter(enum damos_filter_type type, bool matching, bool allow); void damos_add_filter(struct damos *s, struct damos_filter *f); +bool damos_filter_for_ops(enum damos_filter_type type); void damos_destroy_filter(struct damos_filter *f); =20 struct damos_quota_goal *damos_new_quota_goal( diff --git a/mm/damon/core.c b/mm/damon/core.c index 9744ab9ca5c5..273c91e6df86 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -281,7 +281,14 @@ struct damos_filter *damos_new_filter(enum damos_filte= r_type type, return filter; } =20 -static bool damos_filter_for_ops(enum damos_filter_type type) +/** + * damos_filter_for_ops() - Return if the filter is ops-hndled one. + * @type: type of the filter. + * + * Return: true if the filter of @type needs to be handled by ops layer, f= alse + * otherwise. + */ +bool damos_filter_for_ops(enum damos_filter_type type) { switch (type) { case DAMOS_FILTER_TYPE_ADDR: --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 12D991DED7C; Thu, 20 Feb 2025 19:46:56 +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=1740080817; cv=none; b=AOuNvtbKN9CJstlgBsPJxTbRBb/yW57ifSoEniAWoD13AIktiAkwpjgpk8AwEclYLJNjgEIi9cPyx35vTWG9R51a8wQTeNz2YwNdkerhkgYCpuULfUb9XmN2ndDNuY44A6j7ReYRtr82zuqGXbmUGeLS93h+ff/uyo6IrF8Z2rw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080817; c=relaxed/simple; bh=Oq7zbJY/d75refySY9fqfwByqDNucfBFfKnaietebjw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Je6mO9SE2vqpJZn8QPXPu6fk7+mV7BB1/sIWRXF4/CdogE8crPYoHl7gi+39DFhGsemlBu4jX58TEhQrhn162ywcTDl2J6JXUoUFnAoQsQ5JSIh2eNBkDrYwN3Shu+Da0rlttvuWGZOGf8I2unT27fWuoWjwZtm53MEGGhTvgW0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=maUxGS9R; 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="maUxGS9R" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 583C9C4CEE4; Thu, 20 Feb 2025 19:46:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080816; bh=Oq7zbJY/d75refySY9fqfwByqDNucfBFfKnaietebjw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=maUxGS9RJdK/mzBVdHSuSfIk7VmThiSz7N59euVqeFHpmaCGfRUL/9WfYVhzkNwFc /bv/0r0YnnNsDvxgNMcPkITwNP2+d+Y8uizGuWm1hLHD5CHLiGT8+5bHhyMDKrFD02 CwKNdOI9XLKrBmZCCMMyK3KpxdmxEZ5E67aUvcfUPE8HzzggqWLPfsbH50GnAEG9Vs D58in8g9O2J0YICICksTAR+qBmUF6zVfTOrk/06L2BE2e4turV5njT2kMPTyPeEzN3 akk6KIthCZdvwKXuZxNlDlziSTSGeT1DBuh+m31Vw3+AqpEvizFzWqO/DsRM9zwpwq F1XWNTZfmRUvw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 5/8] mm/damon/sysfs-schemes: set filters handling layer of directories Date: Thu, 20 Feb 2025 11:46:43 -0800 Message-Id: <20250220194646.37726-6-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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" Unlike their name and assumed purposes, {core,ops}_filters DAMOS sysfs directories are allowing installing any type of filters. To restrict wrong type of filters to the directories, first add information about filters that handled by what layer should the filters allow installing to DAMOS sysfs internal data structures. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 46 +++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index e85feb329bd6..b9f035f4b00f 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -309,8 +309,18 @@ static const struct kobj_type damon_sysfs_stats_ktype = =3D { * filter directory */ =20 +/* + * enum damos_sysfs_filter_handle_layer - Layers handling filters of a dir. + */ +enum damos_sysfs_filter_handle_layer { + DAMOS_SYSFS_FILTER_HANDLE_LAYER_CORE, + DAMOS_SYSFS_FILTER_HANDLE_LAYER_OPS, + DAMOS_SYSFS_FILTER_HANDLE_LAYER_BOTH, +}; + struct damon_sysfs_scheme_filter { struct kobject kobj; + enum damos_sysfs_filter_handle_layer handle_layer; enum damos_filter_type type; bool matching; bool allow; @@ -320,9 +330,15 @@ struct damon_sysfs_scheme_filter { int target_idx; }; =20 -static struct damon_sysfs_scheme_filter *damon_sysfs_scheme_filter_alloc(v= oid) +static struct damon_sysfs_scheme_filter *damon_sysfs_scheme_filter_alloc( + enum damos_sysfs_filter_handle_layer layer) { - return kzalloc(sizeof(struct damon_sysfs_scheme_filter), GFP_KERNEL); + struct damon_sysfs_scheme_filter *filter; + + filter =3D kzalloc(sizeof(struct damon_sysfs_scheme_filter), GFP_KERNEL); + if (filter) + filter->handle_layer =3D layer; + return filter; } =20 /* Should match with enum damos_filter_type */ @@ -595,14 +611,20 @@ static const struct kobj_type damon_sysfs_scheme_filt= er_ktype =3D { =20 struct damon_sysfs_scheme_filters { struct kobject kobj; + enum damos_sysfs_filter_handle_layer handle_layer; struct damon_sysfs_scheme_filter **filters_arr; int nr; }; =20 static struct damon_sysfs_scheme_filters * -damon_sysfs_scheme_filters_alloc(void) +damon_sysfs_scheme_filters_alloc(enum damos_sysfs_filter_handle_layer laye= r) { - return kzalloc(sizeof(struct damon_sysfs_scheme_filters), GFP_KERNEL); + struct damon_sysfs_scheme_filters *filters; + + filters =3D kzalloc(sizeof(struct damon_sysfs_scheme_filters), GFP_KERNEL= ); + if (filters) + filters->handle_layer =3D layer; + return filters; } =20 static void damon_sysfs_scheme_filters_rm_dirs( @@ -635,7 +657,8 @@ static int damon_sysfs_scheme_filters_add_dirs( filters->filters_arr =3D filters_arr; =20 for (i =3D 0; i < nr_filters; i++) { - filter =3D damon_sysfs_scheme_filter_alloc(); + filter =3D damon_sysfs_scheme_filter_alloc( + filters->handle_layer); if (!filter) { damon_sysfs_scheme_filters_rm_dirs(filters); return -ENOMEM; @@ -1607,11 +1630,11 @@ static int damon_sysfs_scheme_set_watermarks(struct= damon_sysfs_scheme *scheme) } =20 static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *schem= e, - const char *name, + enum damos_sysfs_filter_handle_layer layer, const char *name, struct damon_sysfs_scheme_filters **filters_ptr) { struct damon_sysfs_scheme_filters *filters =3D - damon_sysfs_scheme_filters_alloc(); + damon_sysfs_scheme_filters_alloc(layer); int err; =20 if (!filters) @@ -1630,15 +1653,18 @@ static int damos_sysfs_set_filter_dirs(struct damon= _sysfs_scheme *scheme) { int err; =20 - err =3D damon_sysfs_scheme_set_filters(scheme, "filters", + err =3D damon_sysfs_scheme_set_filters(scheme, + DAMOS_SYSFS_FILTER_HANDLE_LAYER_BOTH, "filters", &scheme->filters); if (err) return err; - err =3D damon_sysfs_scheme_set_filters(scheme, "core_filters", + err =3D damon_sysfs_scheme_set_filters(scheme, + DAMOS_SYSFS_FILTER_HANDLE_LAYER_CORE, "core_filters", &scheme->core_filters); if (err) goto put_filters_out; - err =3D damon_sysfs_scheme_set_filters(scheme, "ops_filters", + err =3D damon_sysfs_scheme_set_filters(scheme, + DAMOS_SYSFS_FILTER_HANDLE_LAYER_OPS, "ops_filters", &scheme->ops_filters); if (err) goto put_core_filters_out; --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 C5536265612; Thu, 20 Feb 2025 19:46:57 +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=1740080817; cv=none; b=RuF9n1ZPgiRB7uZ9g8X3u/3W9Ihr52AQFtMAMMxzkDW7NBzpC14tEv04GnuR3ysmNOAVbG+D948e6MlElP270bn2Euw4lxTba0s5rI31tB29SPVzeTPkGIYgcSQ4bNT5rusybhQY7Uf33KDImUyQRx1mUp+QWb2mthtAts+V5uY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080817; c=relaxed/simple; bh=LQ57T8uZEfXJqRz+pJDK96lN4rwQ3E6I/AuuNUmLtpE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fWlcocc7DhfTNojHRDYeclRCz56l6xWHsdIxUVzNEr2NCSvRk6hWhunTZiEzgGKZ9YNvoQn3fwWtlNt9QnHUmht8rmsi/F5uLCZmcDBi1Bmr0STUrdYOIPVnIRzBJQnPlSwardC3XtRwKiYSKGidG+K5RNcdW0iaSU5BGkGahzo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qZNHY0Zy; 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="qZNHY0Zy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E287C4CEEA; Thu, 20 Feb 2025 19:46:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080817; bh=LQ57T8uZEfXJqRz+pJDK96lN4rwQ3E6I/AuuNUmLtpE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qZNHY0ZyUBDQqoyqcF8xXzG5aTN9mOB7+NBUj3oAhIQR7q2ignh449gJSWhBuJnPx kv8MO8bEU0Job844Cpw2DTVwapbIRaiR55bpnwYVJXdI0ugER5GxM7IggwGOTlPcS5 niTtkoPczx2sAjwr2Hw2ccuwqCwJ1E8knqHxkAkP0It1SIep4kDjSKWnYyeNDPWeGg LnNsDhURD9BVBoK8UgVfhTVaZDO4XgkRavvGI+/d5nP/GuC/LtRV8Zi6wIQY6e1+qs Csm/bVpSbSqSRRGaEhG6WeQ9g6kbDCLEvWit4MVV4vG3jpkxAL+os0CjAYNGOl/m0P MPlh/ikCgqNDw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 6/8] mm/damon/sysfs-schemes: return error for wrong filter type on given directory Date: Thu, 20 Feb 2025 11:46:44 -0800 Message-Id: <20250220194646.37726-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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" Return error if the user tries to install a DAMOS filter on DAMOS filters sysfs directory that assumed to be used for filters that handled by a DAMON layer that not same to that for the installing filter. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index b9f035f4b00f..ed834622df2a 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -362,6 +362,23 @@ static ssize_t type_show(struct kobject *kobj, damon_sysfs_scheme_filter_type_strs[filter->type]); } =20 +static bool damos_sysfs_scheme_filter_valid_type( + enum damos_sysfs_filter_handle_layer layer, + enum damos_filter_type type) +{ + switch (layer) { + case DAMOS_SYSFS_FILTER_HANDLE_LAYER_BOTH: + return true; + case DAMOS_SYSFS_FILTER_HANDLE_LAYER_CORE: + return !damos_filter_for_ops(type); + case DAMOS_SYSFS_FILTER_HANDLE_LAYER_OPS: + return damos_filter_for_ops(type); + default: + break; + } + return false; +} + static ssize_t type_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { @@ -373,6 +390,9 @@ static ssize_t type_store(struct kobject *kobj, for (type =3D 0; type < NR_DAMOS_FILTER_TYPES; type++) { if (sysfs_streq(buf, damon_sysfs_scheme_filter_type_strs[ type])) { + if (!damos_sysfs_scheme_filter_valid_type( + filter->handle_layer, type)) + break; filter->type =3D type; ret =3D count; break; --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 E5D0D265638; Thu, 20 Feb 2025 19:46:58 +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=1740080819; cv=none; b=O3Y22tkC/eXOz6PuYJBb4Lpk37v/sd5CbNpzDwuG533t8REW2cJSU5X9Pom9J912W87vp0XkNKGgNf/AfWbEmrImxwsIjEdt0c8OcYzeNI4Bpf/y6dHr2w+1zhpQsqaX17moYhoAvaOolGgk0tjbVLyZHdsliI25yCSYSzxeKG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080819; c=relaxed/simple; bh=nr8gMx8OR7643cAM6UGnwQ4mZJ3Mvv9MJo9TcURxfTw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=o8J4AAgZAH5VyNd2X3BECGV5uzDAJdnPTHcKUaO03L7qoTqktmqKjrSeoJ9DW2MJIJ8yRh8kkys4XXTBQTHGZnyuCr+hDr4RxipJap5esFhERS/DHrviKQ5QTIn6UlY1bDlZwaAJxoMY5kGNe40di6kUAPzBHcqCPcQWH5jbx6Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bJn9L2Jv; 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="bJn9L2Jv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9E249C4CEE6; Thu, 20 Feb 2025 19:46:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080818; bh=nr8gMx8OR7643cAM6UGnwQ4mZJ3Mvv9MJo9TcURxfTw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bJn9L2JvryVbczIzy91hnqYdPtrPgnhjJM9l0ZjezGXCS0x+BVdPrOFnCMDIqxZNI njxzMFP7Ev86cQcsfM9UHV84nOHL/5vNcAiLjU9jH/4wLrjR4SZpTE2Lo99umM8Q8S 7qPXgPyVIcP7LiS1PxxK0rgxWkS0pHLA5XPedcbd2K4Tn6gmp52Qh/S3a2Him8sM3o 1FuAeY0J9BIFCPXpiukeSKPiGVnRiNZ+qLOjr4zfbx3ft6lALEcAKVBA3HlmiJqYuZ oz/2s3VMtu5BHvvk24CKo0mK0BxmJEJrZclq9/23BD2gmSEo4Xyz7iFFJ83wqBDXng Dk/V3GoVpDkNA== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 7/8] Docs/ABI/damon: document {core,ops}_filters directories Date: Thu, 20 Feb 2025 11:46:45 -0800 Message-Id: <20250220194646.37726-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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" Document the new DAMOS filters sysfs directories on ABI doc. Signed-off-by: SeongJae Park --- Documentation/ABI/testing/sysfs-kernel-mm-damon | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-damon b/Documentatio= n/ABI/testing/sysfs-kernel-mm-damon index ccd13ca668c8..9666074f06f3 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-damon +++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon @@ -379,6 +379,22 @@ Description: Writing 'Y' or 'N' to this file sets whet= her to allow or reject applying the scheme's action to the memory that satisfies the 'type' and the 'matching' of the directory. =20 +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//co= re_filters +Date: Feb 2025 +Contact: SeongJae Park +Description: Directory for DAMON core layer-handled DAMOS filters. Files + under this directory works same to those of + /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//filters + directory. + +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//op= s_filters +Date: Feb 2025 +Contact: SeongJae Park +Description: Directory for DAMON operations set layer-handled DAMOS filter= s. + Files under this directory works same to those of + /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//filters + directory. + What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//st= ats/nr_tried Date: Mar 2022 Contact: SeongJae Park --=20 2.39.5 From nobody Tue Dec 16 23:25:28 2025 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 97FB02676C8; Thu, 20 Feb 2025 19:47:00 +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=1740080820; cv=none; b=DZ2sRVk5vvMBpvS3iGHTMIwDv71ayIY2PObrGixHZFQdpFpkPBzwwLxWxMI0UgsaZQ17y+Sh1K4cMSTpPvBxjcPjN0vBzJs/gdDg/vA+eD70obfYDNI9sMo2V7sz6LHWFiEwEdO8EvmmS6mOV/QzeoEeSpU2m4HvknxCubUlb5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740080820; c=relaxed/simple; bh=gpLkf9zlQXx9+WdyCFmZfQMDYQZmdg3U3lwl8lQVU8U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=LnJYcnZkT4rWHa36pb4VzTP0MZiazRkwsRiEC88d+qtEFce4HKhH0tDCxLrdjvy0nxwH/rkMRU5EkCsX4s/I7cjNfvZwzlZPrprm2ol0uVEsRUBORR/FzYM9cm1G22YoB3C6r+7VRywWGFsisjzIlXboNy6v7er2uy9BfOgzwKU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XQ1j2p9F; 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="XQ1j2p9F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3DB2C4CED1; Thu, 20 Feb 2025 19:46:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080820; bh=gpLkf9zlQXx9+WdyCFmZfQMDYQZmdg3U3lwl8lQVU8U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XQ1j2p9FdJNVRlZZLTAB9nZE7l3lDOPSuLJ8cwJcZTqGShGQ0Ez9WwbtFRW19gDU6 ny570yEzYzz473rbwtVzOEBKKLamsqJBsFXuIY6NZiYGXjZXJtrPulkpvgfSK507JJ OKrQTeu50f3G38/jZqdWlNcYxAKgAfROJWMV9AWGiU6DzhP0xWwo1cuHXDt5Jy7roc E3VoKYCe9fpZyqLLeq3BktBihQyU3BHY1PTPZUK7gGK4dEMzvJmPFl0bfM87u/cuYu bH/O0Vr6mecY5vzZgpvaD16rjTWgZTSA/vK4Zi/LEMh4Mo5OqrgCympoBiYHWFXilr ib65nZ47RmwMA== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Jonathan Corbet , damon@lists.linux.dev, kernel-team@meta.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 8/8] Docs/admin-guide/mm/damon/usage: update for {core,ops}_filters directories Date: Thu, 20 Feb 2025 11:46:46 -0800 Message-Id: <20250220194646.37726-9-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Document {core,ops}_filters directories on usage document. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/usage.rst | 31 ++++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/a= dmin-guide/mm/damon/usage.rst index dc37bba96273..4b25c25d4f4f 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -82,7 +82,7 @@ comma (","). =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 :ref:`goals `/nr_goals =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 0/target_metric,target_value,current_value =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`watermarks `/metric,interval_us,high,mid,low - =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`filters `/nr_filters + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`{core_,ops_,}filters `/nr_filters =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/type,matching,allow,memcg_path,addr_start,addr_end,target_idx,m= in,max =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,= sz_ops_filter_passed,qt_exceeds =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`tried_regions `/total_bytes @@ -282,9 +282,10 @@ to ``N-1``. Each directory represents each DAMON-base= d operation scheme. schemes// ------------ =20 -In each scheme directory, five directories (``access_pattern``, ``quotas``, -``watermarks``, ``filters``, ``stats``, and ``tried_regions``) and three f= iles -(``action``, ``target_nid`` and ``apply_interval``) exist. +In each scheme directory, seven directories (``access_pattern``, ``quotas`= `, +``watermarks``, ``core_filters``, ``ops_filters``, ``filters``, ``stats``,= and +``tried_regions``) and three files (``action``, ``target_nid`` and +``apply_interval``) exist. =20 The ``action`` file is for setting and getting the scheme's :ref:`action `. The keywords that can be written to and read @@ -395,13 +396,24 @@ The ``interval`` should written in microseconds unit. =20 .. _sysfs_filters: =20 -schemes//filters/ --------------------- +schemes//{core_,ops_,}filters/ +------------------------------- =20 -The directory for the :ref:`filters ` of the g= iven +Directories for :ref:`filters ` of the given DAMON-based operation scheme. =20 -In the beginning, this directory has only one file, ``nr_filters``. Writi= ng a +``core_filters`` and ``ops_filters`` directories are for the filters handl= ed by +the DAMON core layer and operations set layer, respectively. ``filters`` +directory can be used for installing filters regardless of their handled +layers. Filters that requested by ``core_filters`` and ``ops_filters`` wi= ll be +installed before those of ``filters``. All three directories have same fi= les. + +Use of ``filters`` directory can make expecting evaluation orders of given +filters with the files under directory bit confusing. Users are hence +recommended to use ``core_filters`` and ``ops_filters`` directories. The +``filters`` directory could be deprecated in future. + +In the beginning, the directory has only one file, ``nr_filters``. Writin= g a number (``N``) to the file creates the number of child directories named `= `0`` to ``N-1``. Each directory represents each filter. The filters are evalu= ated in the numeric order. @@ -410,7 +422,7 @@ Each filter directory contains nine files, namely ``typ= e``, ``matching``, ``allow``, ``memcg_path``, ``addr_start``, ``addr_end``, ``min``, ``max`` and ``target_idx``. To ``type`` file, you can write the type of the filte= r. Refer to :ref:`the design doc ` for available = type -names and their meanings. +names, their meaning and on what layer those are handled. =20 For ``memcg`` type, you can specify the memory cgroup of the interest by writing the path of the memory cgroup from the cgroups mount point to @@ -430,6 +442,7 @@ the ``type`` and ``matching`` should be allowed or not. For example, below restricts a DAMOS action to be applied to only non-anon= ymous pages of all memory cgroups except ``/having_care_already``.:: =20 + # cd ops_filters/0/ # echo 2 > nr_filters # # disallow anonymous pages echo anon > 0/type --=20 2.39.5