From nobody Tue Dec 16 23:25:35 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 CF10B266B42; Wed, 5 Mar 2025 22:27:39 +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=1741213659; cv=none; b=k/YkBj9o/oTQyPHKgJxT3+DIkBBYyANg1skm3HSNOEOn7n6hPFx1hiLxu42ywGvVxM/M0yOhc7zBCNknyfqiTt0cu3NGcjtju7ja0uOQCvRmeXkmDOnX1LXhw1wGhGWGqlvULYs+5uU0AvjJ0bqn6nRECUfOwnP7GZt4UcHCk1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213659; c=relaxed/simple; bh=OpjcLDxsccLyhNm0FxG5QdoWmIkJ0HjMaFtLsbzpWMo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ltPCoMKlustYxNv/dKgrb8xwOSkTKT3/OD4hKNKeUADy39MT7XQ0TjIP0pq44Z7tfnaAeKgMV0oytKE84ldYZ+YkU3Z+1STVZbWs40JOAGnYvq/yRUpscB3jAS4cGfw0+oMTkT5Vecwa+hw3/flNwNNNv8L/b0qhvuPt76n7yJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=I6/FBMSg; 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="I6/FBMSg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85EA9C4CED1; Wed, 5 Mar 2025 22:27:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213659; bh=OpjcLDxsccLyhNm0FxG5QdoWmIkJ0HjMaFtLsbzpWMo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I6/FBMSgQVrOici0mbqK5Zz2q121hKQ90mpoRt1jvWNL4rdHuUukYMSqZHjwWeIYn ZSu7YU66rHiK91B7IA/lmZWNK9aRZigfjjnSaIDQfAx4Eqyr6Nz/1LVI6nofqL7Wir 01RdrzhjTteerB8sEERse1+cmDZOVqmYZ2zvxKzN56dG8/+hwYLJIwsb8oRkc6L42T 3sNodszdWMb4IW5T/zyltjJW6WU4TUIic5Rt92fyxpA3GLCywpMUlxb+7ZXdbwLdI/ qImf3tpp8hKjm9RyGIooK5FDtpOuMkn+UymvRcINrAwX3yv5OwzkX9JI1gHC3WmiRD xECHKJ83hwFGA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:26 -0800 Message-Id: <20250305222733.59089-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 for adding sibling directories having files same to those of "filters", and named as "core_filters" and "ops_filters". 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:35 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 6EC9F266EEE; Wed, 5 Mar 2025 22:27:41 +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=1741213661; cv=none; b=SCB1+UYnvnvCPX0Mbs+a54JXJy9zaTkqrj1gDXVvc0GgumefnqjUDsEc8zjIcmijd0GRf1hlIn1gzgxFiQsflqD8VpCSv8ipUSVH6qM0lRQYKIa7oRMgkfIZXXWDNnM0ISitw5QnD3NICtCK7YLA9qRmWTzEVyr2K2GqUzDIpdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213661; c=relaxed/simple; bh=AUd6l3/n6b21S89N2joBnG5ZkxmjuNuJETDzA5Bc2qA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lWIBxTaEaSwGv6188uY4YKhWidYwJPq+mnOjHUIvWsGrD8iy2/je9eK+ONQVM5WzWbj0GRJWe0wyAlxDO7A9WsHnp+b/jPzj7cZfrA7ro+rIkiDjcbUgEfdmRCJGFz/xmcsGsPRsRGcZxiigzDbHJWNEnMLeDSxzEJe7ucV3i+I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MBq58oec; 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="MBq58oec" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C03DCC4CED1; Wed, 5 Mar 2025 22:27:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213661; bh=AUd6l3/n6b21S89N2joBnG5ZkxmjuNuJETDzA5Bc2qA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MBq58oechD8L4MQkW3fn0Tpw6vXxl4DckF6IuMpfAZ7cRURq4LSqwmGfJ2Qyhyl+j xILQ+rvDl6RTD1+f8ioKV8c6jWQOoW+VKKSFQCCUDpTOy5zTntp8YOL2Ul2FM6Q/af CWalBjWTs6JYvgEetmJxcTcs5mr0fyzFJWMTu7dcVCAWoG42xsD6uS/M1F9I8MQFmn 8fM0m/anAg5J9hdnj1Eu9L6OCHJMfIkXtXUhKlzYl1Dp6wnS14ktdfMXU6P+JQ81v4 OT0jo8U6A22XAubNVLmW4qRSk5ihvC+FEdxwfMo+UTKw0czWbtMkZv0KBNEooRypkv +uwxQJp8YCNtg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:27 -0800 Message-Id: <20250305222733.59089-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 connecting 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:35 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 33FAD266F0D; Wed, 5 Mar 2025 22:27:42 +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=1741213662; cv=none; b=X/fI5FRMFKLPqYLTYPmwPRwoJA9v1kjgAH+5+c+iffxT2NWTi3gnlVc5S9UlPASyD+Osy3k5gu97ZYLtl/zeAVaVyNO2hIy+lIsKB+90j+Ka34gUA+6uJOzeHe+OcSo3U3ULzPo8enxy5qTHgcZ4vT0aj0HamaEObikF2QSvjos= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213662; c=relaxed/simple; bh=yhxaKnOdMb0lPXI2cJtKjmbcibbUG7nUMZVQwaF1kHw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pl773RcQVxGoloV/AYHY+1xdCffNCrASAGQhqHcSy8xpSnjPTAa54VrgHMNTtADF2fqm9wBdKO71vME/wm5srY156ziPeJi+jTsdvyTctwCRgaDxtsXYPhMK0vJf+VvWLiU5lCtsslmgtLhc+ij1d/tuyiVwQa2vofQCk0CHe9Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=StLNs9+Q; 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="StLNs9+Q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA715C4CED1; Wed, 5 Mar 2025 22:27:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213662; bh=yhxaKnOdMb0lPXI2cJtKjmbcibbUG7nUMZVQwaF1kHw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=StLNs9+QuCwCvenK6UtEtHVajVFoZHMemB/YxtPBm6pXj8MCgXS66OJkSA24KOgqt 7tiAu4vFhWdJwhB0spu20qZVw1DanxBeyJKMjgcYfPGcY4o1EP28+5UZ/80MBw2wp2 P3jY90eW5xR9UCuC69NpNiQ/nJcohBpu8lYjU+rwyiiY8DdoB96A7Tk6dl4sDk2DJw IuBUd1ld/3ffac8T+OpdtpRKKCLyHEtRadq/NLCb3L1mMIhLH/aiLLyvDzVO2epTuE G7Y1RYNvvgYQEf8+uSoqAc4pYvQVgWzZDDTBaUfMbuT27DdrwDau4/+pZmI/eY+nyx 1vPHQWy0Lejag== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:28 -0800 Message-Id: <20250305222733.59089-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 for 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:35 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 AC5C12673A9; Wed, 5 Mar 2025 22:27:43 +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=1741213663; cv=none; b=Emb7ptuHPFstmK4He2bewejjI35M5P9aJR4kf35KkV5n97MZnsWfImfdTZTsGsguxBD3/2a3OkCMKrshEXdw/iKbAY0ttdKRqZ8RAJOZujcJUmR3NbhCE7aPWCkY4fPAsWDu/Z7n5OGeW8vKrTYrz0tDJ9B03EM+WX6DQ2bUmQk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213663; c=relaxed/simple; bh=eJ79aIy+KAG+2fVOvrVZnQksHxdlrGRDAyQqbJ9uXyQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iDpBiao/ytTSSP3iZRbq4Vm6HmswguJxYfePD7IfxcISRxYfkvd5p1mCQmLAR6B8yQHQHrIli65B3q8RD57xobe162Iylqs2dgmNWpAd5va0h5JqN74YqJs+4L2KylCL+kFTYd9x/5Api3RUZMrxostVIUnuU9H9mPD+kIbwsQE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PaY2kj8A; 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="PaY2kj8A" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 029F5C4CED1; Wed, 5 Mar 2025 22:27:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213663; bh=eJ79aIy+KAG+2fVOvrVZnQksHxdlrGRDAyQqbJ9uXyQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PaY2kj8AmWawguEdmCNUQobuUZHVxSQUPY3b5C4KFMLUv4x4MgClffxV2X2SoEDmo 2QqZPI7a1ppdOMf9pS+qOLU1TMtgeEQJsM4WZ6N3HhzfLqqTJ8FdIA0B9CAiN1V/7E KNsqIPUen/oTYyX9liEVgJgtF6VVcFjV9WrWRXw9lxO8Qe5Ke5DPx3kYmPwgeB1R01 psCz6Phx6uBOfw8mwIsAo71+l7gOhjw6+Kf/Es1y0xUj8EAVNqWH8dIWWzasDICDBv Cg2QmH7h/JLcjLYCzUNoOwpoO78b3VhFMQlld6X+6sh13kChAf11m85kcfwc+480UU Qa0iKKbwEl5Cg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:29 -0800 Message-Id: <20250305222733.59089-5-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 52559475dbe7..eed008b64a23 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -894,6 +894,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 194550e033b1..d4fc2c907cfc 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:35 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 D4F752676DC; Wed, 5 Mar 2025 22:27:44 +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=1741213664; cv=none; b=JjrjapNO4i7tDAmecXtVw/IOM9tYkkyHUsb/iZANkmAy/To4dEsZQgsdKFnVZcclDoICDD4795Rzt1YM8WX+e+Q4umWGvufBs+3Qj2gXhPZw+jU5wAT77pH4CZdai0YWE0YBG61xBGE+3lNNooO3rK9plH0HVJTOlZML/yrEj0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213664; c=relaxed/simple; bh=omzDcLQxOt4b1eAtHmmakixx0La83wEbeQMY0qApQrU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DkWpBa1OCE6FBQV7ORP5XuWQKL+bJ18pFjKU5mo3nA0LzqWrGppVgk6NlvHqUGApfup1sujzjuate9vJ0HefspT/BMqpnDiwcfnOMIiWyIg6FuM075J3m+TFkBScVarR/39mt1gH10L6FyFOr+TpFOphUfj80gEhGzPGTTlbjTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nPCf65V6; 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="nPCf65V6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A9FEC4CEE9; Wed, 5 Mar 2025 22:27:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213664; bh=omzDcLQxOt4b1eAtHmmakixx0La83wEbeQMY0qApQrU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nPCf65V6a35HkE8QBy7nmsiyOHOU4SuTigF0B8sRNGJ4wLWSSKyjjfhQ/STTBPP0A gXEwAFSr+JuwMNcFuEzucZLQipdOf4Lcuhw5EtFtOAjwHCDJYMQv1iN/38o484Kvrr U9e+rdqtUJ02+Qq1s4OSqNENlq++fM6niYZrcCNij7yecPp0P3ZLAmAzkBODE1zhLy 5+QQNfYKWLEmji0XggkpOLCnF2aGMu4jjDknAeenNHsfXpqD+0uukb7d3CIwEZ2s3M AV8WGF0r2XHOvDfw5U9NSQZI7EAR5ojT6hwLpqi6fNdQlf8oykeH+VPXxCa7uD6ev9 zOZ0T9WB7DCgw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: record filters of which layer should be added to the given filters directory Date: Wed, 5 Mar 2025 14:27:30 -0800 Message-Id: <20250305222733.59089-6-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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. As a first step for preventing such wrong installments, add information about filters that handled by what layer should the installed to the given filters directory in the 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:35 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 D480F267B0F; Wed, 5 Mar 2025 22:27:47 +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=1741213667; cv=none; b=DKIbYWO7AJoA85J5bVZWbkEtyKlMHPIYQ3u0s14iCqCl7Rdu1fNOAMvLv9pDJc7LRNuoEj4vORX+4ggmWu5q+637xI3Ne5OwM4aKEYl4Mb6FaDLzzoh4BQ6Dji/FqPwHuTFt8fBBtmOjuRfE0QcJWGQ5Z8KKmRjQ7uabZpoOsQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213667; c=relaxed/simple; bh=LQ57T8uZEfXJqRz+pJDK96lN4rwQ3E6I/AuuNUmLtpE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HyhpJqelyoAtTzw+EGkZN9hQ3QYm53ymEQjHJVCA9wRdyvjeNM3+Gfp2CgNWAsJKhNqsFwDAmLjY3n/ry/OshFlJqvTtMKxP/3Qv+qGkpnJqci8nJa+7wy8jfaj1of3PdBAQ/HXcZlG8v92oDj/1W38xz0xnHa9GtdKE08SYpNs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G1sZRBPm; 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="G1sZRBPm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E4D8C4CEE8; Wed, 5 Mar 2025 22:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213667; bh=LQ57T8uZEfXJqRz+pJDK96lN4rwQ3E6I/AuuNUmLtpE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G1sZRBPmlSradLgfTY8Wkkc3WmAPdnOChvdMQ/QNf7Qj1Fi8Igg1jebiMMri7A425 +4DHZ327YpDb+aBY8hx3FRdyRVP8cgAXH5ecp3qpHk1nn76aMUr8BI2v/HQnng0YOL aEMZsi1xHCpa7ArUaAz7zUtwJ5cLTx6+xQRq9/Y9IBzhZ9OYQrtwM9jzagWCSJBYZo RKoPRPZRFRnH2WHDIXexP2uMoAySqiGvN6XKkV5XF4EIzjbHNLQfU/wUswZ1ftmIRM PLic60AraWQWa9PnEUUf3vUDk1bC5N+HFYypf8ymHa15hcxDvBq4V8Dk7wUJsUlmJN QGUpA9eKKMlzA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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 when for attempts to install filters on wrong sysfs directory Date: Wed, 5 Mar 2025 14:27:31 -0800 Message-Id: <20250305222733.59089-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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:35 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 7694C267B96; Wed, 5 Mar 2025 22:27:49 +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=1741213669; cv=none; b=GwoFBpmB/hHNW1ZmmhHO4vk/6z+HzefaWq+QTQutgz7Jo1E4FD/g4yg80E3jb4lIo7h1/Clsa0bjb6cd735/JjfPuOWg3nsD/Fvj+LL5syrPWDIRsF0aBbGT0zNQf26c0r4PznyePiaIorUmKXuMrhMQOEDV08bqB0t0EsiEV1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213669; c=relaxed/simple; bh=OAEdxxcc77GPmmDMbh1z2HLH683wgymD1nDX7vY4PmA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OHV2E+OdqRiu3t4JH+QU0Pvcb/v9yonCxop1NoHeugTSYrKB+++d4l02+d6Z66BtAVXYlSJrpyV6AByUQbrtuwx89PcRJWTkS4lfFzzeN5BRi81mootu5Gtl4GbD9JbLr1zN13HnjmZCYsVYu1HT25O+vy+BCCyjLah/hSSKYVs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=COhYSUvA; 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="COhYSUvA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B88FDC4CED1; Wed, 5 Mar 2025 22:27:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213668; bh=OAEdxxcc77GPmmDMbh1z2HLH683wgymD1nDX7vY4PmA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=COhYSUvAzM/kIrKA3AIr4Du9Hvlu5Te9LUGuEq19YnsUYn+PHUT0LxZhrJmHssQsI et8zSnnECgIb7CdD5fvIWqT3R5MCm/24gFhlfqXJ6+O0McSyoQ/zQ+JX/7+K5gdDXc QwQhf5D79gWHRKx5mVtzCCihKUd7L9O6MI8G9Ui6MTwscIV8FyIOhPOD8ZuUW0Z3sm +cnwGnXSdSxrpWRAM7UoDPJiIRxNWMQW7CgSW1pa51z/5kKecxY2D13ySCj4WWYzgv T7raOiUiRed2NbTygrroHjrA3EX035XF/A6iJyrxlBZX5Q9wZmmyAqHKaRLVRkjaBa 06oAFx4nWGOww== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:32 -0800 Message-Id: <20250305222733.59089-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 76da77d7f7b6..293197f180ad 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-damon +++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon @@ -409,6 +409,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:35 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 32259268698; Wed, 5 Mar 2025 22:27:50 +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=1741213670; cv=none; b=V78IMzTkG1f4xu/Su8woP8YkQThlt+7h73WQCjtI5ywVE8e510vdkAc23tPudGHN7Uw9V+2+bQpBjsNvtPl8AL2MYG6wGOASgyTpmp2ngHrgQaclrWjkYdn92twk6uOfCl17iHRwVBhjiHCNsTIa/OLB4zYML0II2jidySczZ9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741213670; c=relaxed/simple; bh=47X+eEoNM4cXPe501kkxrph0V2B2kHrGH6GZrrO40z0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=q4uzysONpOq36TvqMrjiCISqrFRVA1OPtGbTbYOfYW82IY9zoVFoAN7i5VlRdN3V+HvvDi7DNlaHmw93ek3Usap/m/fCGiohsaLS08kgc3OyAHnzuX6rUEGPpBt8aT2vBIxpA2tzqaOMNMA/10tIT/S6lJSfyrnB0rbj+NVq47Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=A/8GAGHV; 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="A/8GAGHV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAAA9C4AF09; Wed, 5 Mar 2025 22:27:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741213670; bh=47X+eEoNM4cXPe501kkxrph0V2B2kHrGH6GZrrO40z0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A/8GAGHVWwEyJKU9fX+3btSUYqcbCJkD5n70OIIlgDwm2SUWpPrPDbgxWw2cz96Es +WQAAgzNt4rpfKnvi2yeWDbQQc4vdZwg4Lr+Vuyi2vdRaSeakhTMsAIsJVw4iGjauD sRwiK15hqLuulWufZxCON720EA5i0DGS51il9e1f7VKcKWK5nYGkjos/8WRuZLonUg l2berudzd46p8iz7wleIwOxOdVYSNf2dVbJlSkUSs87VPX9Jj1bHydurGROmUaA5VU LF8KlS867WeivAEb9gS1mQbal5hzEOwS4i0X9B2bSr2ukZnVtnljz3Wh+iPGoTT9V0 unPes/owhWHpg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: Wed, 5 Mar 2025 14:27:33 -0800 Message-Id: <20250305222733.59089-9-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250305222733.59089-1-sj@kernel.org> References: <20250305222733.59089-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 de549dd18107..ced2013db3df 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -83,7 +83,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 @@ -307,9 +307,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 @@ -420,13 +421,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. @@ -435,7 +447,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 @@ -455,6 +467,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