From nobody Sat Feb 7 18:16:06 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 83A1633D6EE; Wed, 12 Nov 2025 15:42:07 +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=1762962127; cv=none; b=gfeHgTDUbJC3NYree0ZkB13a+2ivTrZIUY7apql60nvR2aAwlcDbbYcbjzeZsFsI1cH2AkToHcw/EtdUfmpKkYc5JCRZYKtLV1NLPx48bOKMsTwjbh13Mwq6mGDLzNfigWMT3Vxoo4k3YkInEgZ5aWizFlWL++CJrg7GGIkDCf4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962127; c=relaxed/simple; bh=NiZ7ea35pME1fM3maEI5aXEnDEDvdt1SSghBc/AiFyk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sYydFLrRPEI8kxH9/em+b2S9b7o18kH/wRbrmcXsLb41UbTPdLrrjKcGIFr94rZQgC1pK2SUhTwYcSDWHK4WS0D1p7l75tiav5s/o36SFPeaqX5qvUqyAXOp0GHXspUyU3k5MsInLg4IjHD5s2L/NY6HqI6YohtZbNb9OrZczKc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R37Sx87/; 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="R37Sx87/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 36B4EC19423; Wed, 12 Nov 2025 15:42:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962127; bh=NiZ7ea35pME1fM3maEI5aXEnDEDvdt1SSghBc/AiFyk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R37Sx87/i8ZHQBhoTFE3dFsIlhXKSfafQa9RFcrnozAwKjGlQ6I43Gj+nu9r3YpI1 wZJuXfNsCUjC5eZyWKbnO5syAAPhPOKJabI09QgxpnHGorsMMlgnyOKVbdwhnUS63I ONJdbjKKxW3SWgYr6p9SSeI/5zfJWBN355f90Acup8ovlYRmnS3yayYk1LT5pXP8Br Ewgc0WKL3TTUXbHtqcJb+uioWEM+TVWg4aBVN9oCiR4ovVv3IWjz/JkFd/EUnK9hTp P0UCtkGfo2OiALXDr5eMNuDw4caLVt5Mn+NZCCPvg8I5x+7XgkLkOQWt2Q8Nt25VSP mc6lX1AxKFFuw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Bill Wendling , Justin Stitt , Miguel Ojeda , Nathan Chancellor , Nick Desaulniers , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, llvm@lists.linux.dev Subject: [PATCH 1/9] mm/damon: rename damos core filter helpers to have word core Date: Wed, 12 Nov 2025 07:41:04 -0800 Message-ID: <20251112154114.66053-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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 filters handled by the core layer are called core filters, while those handled by the ops layer are called ops filters. They share the same type but are managed in different places since core filters are evaluated before the ops filters. They also have different helper functions that depend on their managed places. The helper functions for ops filters have '_ops_' keyword on their name, so it is easy to know they are for ops filters. Meanwhile, the helper functions for core filters are not having the 'core' keyword on their name. This makes it easy to be mistakenly used for ops filters. Actually there was such a bug. To avoid future mistakes from similar confusions, rename DAMOS core filters helper functions to have a keyword 'core' on their names. Signed-off-by: SeongJae Park --- .clang-format | 4 ++-- include/linux/damon.h | 4 ++-- mm/damon/core.c | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.clang-format b/.clang-format index f371a13b4d19..748efbe791ad 100644 --- a/.clang-format +++ b/.clang-format @@ -140,8 +140,8 @@ ForEachMacros: - 'damon_for_each_scheme_safe' - 'damon_for_each_target' - 'damon_for_each_target_safe' - - 'damos_for_each_filter' - - 'damos_for_each_filter_safe' + - 'damos_for_each_core_filter' + - 'damos_for_each_core_filter_safe' - 'damos_for_each_ops_filter' - 'damos_for_each_ops_filter_safe' - 'damos_for_each_quota_goal' diff --git a/include/linux/damon.h b/include/linux/damon.h index f3566b978cdf..6e3db165fe60 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -871,10 +871,10 @@ static inline unsigned long damon_sz_region(struct da= mon_region *r) #define damos_for_each_quota_goal_safe(goal, next, quota) \ list_for_each_entry_safe(goal, next, &(quota)->goals, list) =20 -#define damos_for_each_filter(f, scheme) \ +#define damos_for_each_core_filter(f, scheme) \ list_for_each_entry(f, &(scheme)->filters, list) =20 -#define damos_for_each_filter_safe(f, next, scheme) \ +#define damos_for_each_core_filter_safe(f, next, scheme) \ list_for_each_entry_safe(f, next, &(scheme)->filters, list) =20 #define damos_for_each_ops_filter(f, scheme) \ diff --git a/mm/damon/core.c b/mm/damon/core.c index a14cc73c2cab..d4cb11ced13f 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -450,7 +450,7 @@ void damon_destroy_scheme(struct damos *s) damos_for_each_quota_goal_safe(g, g_next, &s->quota) damos_destroy_quota_goal(g); =20 - damos_for_each_filter_safe(f, next, s) + damos_for_each_core_filter_safe(f, next, s) damos_destroy_filter(f); =20 damos_for_each_ops_filter_safe(f, next, s) @@ -864,12 +864,12 @@ static int damos_commit_quota(struct damos_quota *dst= , struct damos_quota *src) return 0; } =20 -static struct damos_filter *damos_nth_filter(int n, struct damos *s) +static struct damos_filter *damos_nth_core_filter(int n, struct damos *s) { struct damos_filter *filter; int i =3D 0; =20 - damos_for_each_filter(filter, s) { + damos_for_each_core_filter(filter, s) { if (i++ =3D=3D n) return filter; } @@ -923,15 +923,15 @@ static int damos_commit_core_filters(struct damos *ds= t, struct damos *src) struct damos_filter *dst_filter, *next, *src_filter, *new_filter; int i =3D 0, j =3D 0; =20 - damos_for_each_filter_safe(dst_filter, next, dst) { - src_filter =3D damos_nth_filter(i++, src); + damos_for_each_core_filter_safe(dst_filter, next, dst) { + src_filter =3D damos_nth_core_filter(i++, src); if (src_filter) damos_commit_filter(dst_filter, src_filter); else damos_destroy_filter(dst_filter); } =20 - damos_for_each_filter_safe(src_filter, next, src) { + damos_for_each_core_filter_safe(src_filter, next, src) { if (j++ < i) continue; =20 @@ -1767,7 +1767,7 @@ static bool damos_filter_out(struct damon_ctx *ctx, s= truct damon_target *t, struct damos_filter *filter; =20 s->core_filters_allowed =3D false; - damos_for_each_filter(filter, s) { + damos_for_each_core_filter(filter, s) { if (damos_filter_match(ctx, t, r, filter, ctx->min_sz_region)) { if (filter->allow) s->core_filters_allowed =3D true; --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 7FE9E33F388; Wed, 12 Nov 2025 15:42:13 +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=1762962133; cv=none; b=AIHisnDX8eQMOcfo1xiH3/3FuUG6p4v0RLAniEuA165N/dmdqc167PjqOkxQhSWeYMh8xM93AncBY2yEowj1uebomxC36imKh4WUTtIANvzkrTEdXTdFTiZDG3sLItJvZSkdt1wjgxf1BAdUQ8MUwQu2Kq32M+m/yxmUZ2EkQVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962133; c=relaxed/simple; bh=Ydpo3xsumi/0AU0ywoSi8MHefmYKBp2O+zycDWbAlqg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LFkZLUunT4rgbt5JbRQgpxjZdjFPuF/Fu/1yFtZTYpBV0R61OOKDJ/FUBcfIfzhS6Zbi7lt77zjlWfD5Xu19HVBvm10prSxoPYnB7uHb1NKXN/r3NwgKShFQdZ+hoZ67HMUB7jbbklQ7DQvsoeFHxhPWOs8X/uZ7Mkso2LZyvQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Rg+Iy5FU; 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="Rg+Iy5FU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C70B9C113D0; Wed, 12 Nov 2025 15:42:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962133; bh=Ydpo3xsumi/0AU0ywoSi8MHefmYKBp2O+zycDWbAlqg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rg+Iy5FUuR0ooXsRWmZ7hGatyVWmvp72qpBrqVWMcmB/BuD7VDSM+iqFRVTPiczNx 5U2G+YmR+esLUWkDZF0qWemYZXgEnh5ngPcocxe1UnXxc/yK+9gCaQkKbv8KA6KR0c mq3RaDiWMH2WnEcKJxhqk3qFLKWbLn++cjQK7fF1FWAxUqjPC/pZrbIiouTc+2C6cD +6X0a1lHaESDqKqwA6n0jxZ3qb0+SDXEla6TyFJthCovxImSHbJ6+l5gZ6thQH3hZi hYZ0FWZrB3AgEuhyh8NJDbqStNejmwBULgg8U10Np7m5eR505QXSMQ/iRnj7mdrPUM JqN0EnmuyfyXQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/9] mm/damon: rename damos->filters to damos->core_filters Date: Wed, 12 Nov 2025 07:41:05 -0800 Message-ID: <20251112154114.66053-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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 filters that are handled by the ops layer are linked to damos->ops_filters. Owing to the ops_ prefix on the name, it is easy to understand it is for ops layer handled filters. The other types of filters, which are handled by the core layer, are linked to damos->filters. Because of the name, it is easy to confuse the list is there for not only core layer handled ones but all filters. Avoid such confusions by renaming the field to core_filters. Signed-off-by: SeongJae Park --- include/linux/damon.h | 10 +++++----- mm/damon/core.c | 6 +++--- mm/damon/tests/core-kunit.h | 4 ++-- .../testing/selftests/damon/drgn_dump_damon_status.py | 8 ++++---- tools/testing/selftests/damon/sysfs.py | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 6e3db165fe60..3813373a9200 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -492,7 +492,7 @@ struct damos_migrate_dests { * @wmarks: Watermarks for automated (in)activation of this scheme. * @migrate_dests: Destination nodes if @action is "migrate_{hot,cold}". * @target_nid: Destination node if @action is "migrate_{hot,cold}". - * @filters: Additional set of &struct damos_filter for &action. + * @core_filters: Additional set of &struct damos_filter for &action. * @ops_filters: ops layer handling &struct damos_filter objects list. * @last_applied: Last @action applied ops-managing entity. * @stat: Statistics of this scheme. @@ -518,7 +518,7 @@ struct damos_migrate_dests { * * Before applying the &action to a memory region, &struct damon_operations * implementation could check pages of the region and skip &action to resp= ect - * &filters + * &core_filters * * The minimum entity that @action can be applied depends on the underlying * &struct damon_operations. Since it may not be aligned with the core la= yer @@ -562,7 +562,7 @@ struct damos { struct damos_migrate_dests migrate_dests; }; }; - struct list_head filters; + struct list_head core_filters; struct list_head ops_filters; void *last_applied; struct damos_stat stat; @@ -872,10 +872,10 @@ static inline unsigned long damon_sz_region(struct da= mon_region *r) list_for_each_entry_safe(goal, next, &(quota)->goals, list) =20 #define damos_for_each_core_filter(f, scheme) \ - list_for_each_entry(f, &(scheme)->filters, list) + list_for_each_entry(f, &(scheme)->core_filters, list) =20 #define damos_for_each_core_filter_safe(f, next, scheme) \ - list_for_each_entry_safe(f, next, &(scheme)->filters, list) + list_for_each_entry_safe(f, next, &(scheme)->core_filters, list) =20 #define damos_for_each_ops_filter(f, scheme) \ list_for_each_entry(f, &(scheme)->ops_filters, list) diff --git a/mm/damon/core.c b/mm/damon/core.c index d4cb11ced13f..aedb315b075a 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -306,7 +306,7 @@ void damos_add_filter(struct damos *s, struct damos_fil= ter *f) if (damos_filter_for_ops(f->type)) list_add_tail(&f->list, &s->ops_filters); else - list_add_tail(&f->list, &s->filters); + list_add_tail(&f->list, &s->core_filters); } =20 static void damos_del_filter(struct damos_filter *f) @@ -397,7 +397,7 @@ struct damos *damon_new_scheme(struct damos_access_patt= ern *pattern, */ scheme->next_apply_sis =3D 0; scheme->walk_completed =3D false; - INIT_LIST_HEAD(&scheme->filters); + INIT_LIST_HEAD(&scheme->core_filters); INIT_LIST_HEAD(&scheme->ops_filters); scheme->stat =3D (struct damos_stat){}; INIT_LIST_HEAD(&scheme->list); @@ -995,7 +995,7 @@ static void damos_set_filters_default_reject(struct dam= os *s) s->core_filters_default_reject =3D false; else s->core_filters_default_reject =3D - damos_filters_default_reject(&s->filters); + damos_filters_default_reject(&s->core_filters); s->ops_filters_default_reject =3D damos_filters_default_reject(&s->ops_filters); } diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 0d2d8cda8631..4380d0312d24 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -876,7 +876,7 @@ static void damos_test_commit_filter(struct kunit *test) 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->core_filters); INIT_LIST_HEAD(&scheme->ops_filters); } =20 @@ -1140,7 +1140,7 @@ static void damon_test_set_filters_default_reject(str= uct kunit *test) struct damos scheme; struct damos_filter *target_filter, *anon_filter; =20 - INIT_LIST_HEAD(&scheme.filters); + INIT_LIST_HEAD(&scheme.core_filters); INIT_LIST_HEAD(&scheme.ops_filters); =20 damos_set_filters_default_reject(&scheme); diff --git a/tools/testing/selftests/damon/drgn_dump_damon_status.py b/tool= s/testing/selftests/damon/drgn_dump_damon_status.py index cb4fdbe68acb..5374d18d1fa8 100755 --- a/tools/testing/selftests/damon/drgn_dump_damon_status.py +++ b/tools/testing/selftests/damon/drgn_dump_damon_status.py @@ -175,11 +175,11 @@ def scheme_to_dict(scheme): ['target_nid', int], ['migrate_dests', damos_migrate_dests_to_dict], ]) - filters =3D [] + core_filters =3D [] for f in list_for_each_entry( - 'struct damos_filter', scheme.filters.address_of_(), 'list'): - filters.append(damos_filter_to_dict(f)) - dict_['filters'] =3D filters + 'struct damos_filter', scheme.core_filters.address_of_(), 'lis= t'): + core_filters.append(damos_filter_to_dict(f)) + dict_['core_filters'] =3D core_filters ops_filters =3D [] for f in list_for_each_entry( 'struct damos_filter', scheme.ops_filters.address_of_(), 'list= '): diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index b34aea0a6775..b4c5ef5c4d69 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -132,7 +132,7 @@ def assert_scheme_committed(scheme, dump): assert_watermarks_committed(scheme.watermarks, dump['wmarks']) # TODO: test filters directory for idx, f in enumerate(scheme.core_filters.filters): - assert_filter_committed(f, dump['filters'][idx]) + assert_filter_committed(f, dump['core_filters'][idx]) for idx, f in enumerate(scheme.ops_filters.filters): assert_filter_committed(f, dump['ops_filters'][idx]) =20 --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 7B89C33ADB3; Wed, 12 Nov 2025 15:42:20 +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=1762962140; cv=none; b=GT4Ho0olAC0SPFAD0MggYghytWZQp6q9B8piUyax1vmYIQtWHyPAjuJtoQ1+AtKU/i/xmhB/FBB6yycs9jBR9eo+8XoeRKs78vKzkz3V5FdVUifDDouuYvFo/F1DmQQMDrjxogQN5Gv8hpa38rq22iYYgqTTPPWt5ve+mHsbYuc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962140; c=relaxed/simple; bh=1rHJgGszkdfaLNjPQTgFPJf9bjvlypOeFoo13vrtMto=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jlj2XrdsojU7OhGYYHZomEBSW1mcy5Abh9oAwCWy+LRudHmEZB06aXd0MarMNlrPeIUrXeB15ZgdsTH1LzkEsAIIPp9AocV4CI6fDNcI58IzLAjGbm7hfbcxDos2sQlEW0UphM8Er+8cfn9kYF7eY6fqzGhdvCV4xkNhnGgKCB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q476rGfT; 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="q476rGfT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 977D6C4CEF5; Wed, 12 Nov 2025 15:42:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962140; bh=1rHJgGszkdfaLNjPQTgFPJf9bjvlypOeFoo13vrtMto=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q476rGfTrYl4tz8y5mq9CS1pT/6YlSCHU1cNxcS1yQ8qnfxTacdAaWz1jFQQnceTr DE6zFlkuS6mCsTM0RV0tOC9XXJ23ZVUdZA3ghKdZg2l1qT2gxRJbjIEILdLoh3AEL1 2sxKFoTiOAshj+O8U2L4k9I5tRmY/us7DyiDq2OdmzqQZbtILTfbgMTjKDw2hUBPuf OK61rWD5sGnqkImo1IwtrkZRX5ekoiizatRueQLw0LL9bR2v/73lDx2EbZDzJ8czTq yknaZdVaOadcM0nw03uf4QBB/7xIKBAljlfyuQmFHdBl9WMRG3ziJux/jJd9IWeTit JdpXoNuP94qEQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Hugh Dickins Subject: [PATCH 3/9] mm/damon/vaddr: cleanup using pmd_trans_huge_lock() Date: Wed, 12 Nov 2025 07:41:06 -0800 Message-ID: <20251112154114.66053-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" Three pmd walk functions in vaddr.c are using pmd_trans_huge() and pmd_lock() to handle THPs. Simplify the code by replacing the two function calls with a single pmd_trans_huge_lock() call. Note that this cleanup is not only reducing the lines of code, but also simplifies code execution flows for migration entries case, as kindly explained [1] by Hugh, who suggested this cleanup. [1] https://lore.kernel.org/296c2b3f-6748-158f-b85d-2952165c0588@google.com Suggested-by: Hugh Dickins Signed-off-by: SeongJae Park Reported-by: kernel test robot --- mm/damon/vaddr.c | 48 ++++++++++++------------------------------------ 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 7e834467b2d8..0ad1ce120aa1 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -307,24 +307,14 @@ static int damon_mkold_pmd_entry(pmd_t *pmd, unsigned= long addr, unsigned long next, struct mm_walk *walk) { pte_t *pte; - pmd_t pmde; spinlock_t *ptl; =20 - if (pmd_trans_huge(pmdp_get(pmd))) { - ptl =3D pmd_lock(walk->mm, pmd); - pmde =3D pmdp_get(pmd); - - if (!pmd_present(pmde)) { - spin_unlock(ptl); - return 0; - } - - if (pmd_trans_huge(pmde)) { + ptl =3D pmd_trans_huge_lock(pmd, walk->vma); + if (ptl) { + if (pmd_present(pmdp_get(pmd))) damon_pmdp_mkold(pmd, walk->vma, addr); - spin_unlock(ptl); - return 0; - } spin_unlock(ptl); + return 0; } =20 pte =3D pte_offset_map_lock(walk->mm, pmd, addr, &ptl); @@ -446,21 +436,12 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned= long addr, struct damon_young_walk_private *priv =3D walk->private; =20 #ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (pmd_trans_huge(pmdp_get(pmd))) { - pmd_t pmde; - - ptl =3D pmd_lock(walk->mm, pmd); - pmde =3D pmdp_get(pmd); + ptl =3D pmd_trans_huge_lock(pmd, walk->vma); + if (ptl) { + pmd_t pmde =3D pmdp_get(pmd); =20 - if (!pmd_present(pmde)) { - spin_unlock(ptl); - return 0; - } - - if (!pmd_trans_huge(pmde)) { - spin_unlock(ptl); - goto regular_page; - } + if (!pmd_present(pmde)) + goto huge_out; folio =3D damon_get_folio(pmd_pfn(pmde)); if (!folio) goto huge_out; @@ -474,8 +455,6 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned l= ong addr, spin_unlock(ptl); return 0; } - -regular_page: #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ =20 pte =3D pte_offset_map_lock(walk->mm, pmd, addr, &ptl); @@ -910,13 +889,10 @@ static int damos_va_stat_pmd_entry(pmd_t *pmd, unsign= ed long addr, int nr; =20 #ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (pmd_trans_huge(*pmd)) { - pmd_t pmde; + ptl =3D pmd_trans_huge_lock(pmd, vma); + if (ptl) { + pmd_t pmde =3D pmdp_get(pmd); =20 - ptl =3D pmd_trans_huge_lock(pmd, vma); - if (!ptl) - return 0; - pmde =3D pmdp_get(pmd); if (!pmd_present(pmde)) goto huge_unlock; =20 --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 3FCE433F381; Wed, 12 Nov 2025 15:42: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=1762962151; cv=none; b=QMUb3J9QCBTQWphf+L8u7yElR+Vm4jLqLNKT7TrwGrHMiy6sOX6dFEeSn59b3KWg4XPPDyp299FtwcHzaYp7HbCfyqhDb5jgmxbGnjuIDha7BBuWY4Q3m7SkshLL3vFz9uCtMJYc0vs2OoNi5Aukkkuq3FYTo2AJXVU9AvMya/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962151; c=relaxed/simple; bh=oV9KpZkPcPBVuXqYBkV9kaSGZ1/EOa6v/e8B2pFRGFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bIPwupGuQFuh1UwpBkhDnwYedch2O09gEqU7p8jVvQbp7beINY1tmaIetyTpVtAnSEb6eZq8rIFnha82XlJKpbON8FIp/jqqsYAWVSWJJYZ+/aWIM0UHYk639Nvv/RzcQtnXHSwe7BxWkfDcV9GfUxLiDA5DMabPYJsEq8h+Kbo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uWKbwFmZ; 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="uWKbwFmZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 38DCEC4CEF8; Wed, 12 Nov 2025 15:42:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962150; bh=oV9KpZkPcPBVuXqYBkV9kaSGZ1/EOa6v/e8B2pFRGFI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uWKbwFmZmbqtbdTh322aK72q/tDo78ckesGHoFb9PYCGYvrGLRtAd5Az9X4HS373a GAdfpe+jcawZ78w7TlE8qpfEqZr9g/lqyVEONHn6SkUnAbSCZlcerqNSYMe+zixwSg 8zACGTEcu8xIYXj6kzCNxaJIrnPHPe6w9ZgzGscoJHlmjXfRelvA5SimG+/3PNI9hj C4LTWi2mlE0qsAZGTTGeC1sk5LVXHaAtax17Z9DxukagyT9NEcB/wNmPUQ3wyDoI59 4DJ0HX2Syt6kAsGAZbtwJC7pwahLw75Bc3MKf/wnqALNCc6Rn5YQuozQ+ATbZ2Qup0 Z97FMaJjH7ecg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, David Hildenbrand Subject: [PATCH 4/9] mm/damon/vaddr: use vm_normal_folio{,_pmd}() instead of damon_get_folio() Date: Wed, 12 Nov 2025 07:41:07 -0800 Message-ID: <20251112154114.66053-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" A few page table walk entry callback functions in vaddr.c uses damon_get_folio() with p{te,md}_pfn() to get the folio, and then put_folio(). Simplify and drop unnecessary folio get/put by using vm_normal_folio() and its friends instead. Note that this cleanup was suggested by David Hildenbrand during a review of another patch series [1] and the patch was updated following the suggestion. This patch further applies the cleanup to DAMON code that merged before the patch. [1] https://lore.kernel.org/0cb3d5a5-683b-4dba-90a8-b45ab83eec53@redhat.com Suggested-by: David Hildenbrand Signed-off-by: SeongJae Park --- mm/damon/vaddr.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 0ad1ce120aa1..9c06cfe4526f 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -442,7 +442,7 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned l= ong addr, =20 if (!pmd_present(pmde)) goto huge_out; - folio =3D damon_get_folio(pmd_pfn(pmde)); + folio =3D vm_normal_folio_pmd(walk->vma, addr, pmde); if (!folio) goto huge_out; if (pmd_young(pmde) || !folio_test_idle(folio) || @@ -450,7 +450,6 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned l= ong addr, addr)) priv->young =3D true; *priv->folio_sz =3D HPAGE_PMD_SIZE; - folio_put(folio); huge_out: spin_unlock(ptl); return 0; @@ -463,14 +462,13 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned= long addr, ptent =3D ptep_get(pte); if (!pte_present(ptent)) goto out; - folio =3D damon_get_folio(pte_pfn(ptent)); + folio =3D vm_normal_folio(walk->vma, addr, ptent); if (!folio) goto out; if (pte_young(ptent) || !folio_test_idle(folio) || mmu_notifier_test_young(walk->mm, addr)) priv->young =3D true; *priv->folio_sz =3D folio_size(folio); - folio_put(folio); out: pte_unmap_unlock(pte, ptl); return 0; @@ -718,18 +716,16 @@ static int damos_va_migrate_pmd_entry(pmd_t *pmd, uns= igned long addr, /* Tell page walk code to not split the PMD */ walk->action =3D ACTION_CONTINUE; =20 - folio =3D damon_get_folio(pmd_pfn(pmde)); + folio =3D vm_normal_folio_pmd(walk->vma, addr, pmde); if (!folio) goto unlock; =20 if (damos_va_filter_out(s, folio, walk->vma, addr, NULL, pmd)) - goto put_folio; + goto unlock; =20 damos_va_migrate_dests_add(folio, walk->vma, addr, dests, migration_lists); =20 -put_folio: - folio_put(folio); unlock: spin_unlock(ptl); return 0; @@ -752,18 +748,15 @@ static int damos_va_migrate_pte_entry(pte_t *pte, uns= igned long addr, if (pte_none(ptent) || !pte_present(ptent)) return 0; =20 - folio =3D damon_get_folio(pte_pfn(ptent)); + folio =3D vm_normal_folio(walk->vma, addr, ptent); if (!folio) return 0; =20 if (damos_va_filter_out(s, folio, walk->vma, addr, pte, NULL)) - goto put_folio; + return 0; =20 damos_va_migrate_dests_add(folio, walk->vma, addr, dests, migration_lists); - -put_folio: - folio_put(folio); return 0; } =20 --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 3131C340279; Wed, 12 Nov 2025 15:42: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=1762962160; cv=none; b=YQ0O98V8pxjhYTtFy8ySoi8mbOdsUdEhSWDFLfUfvoQxA1T8/956NUzMR40GYbTwMc3P8hFEopze5zcijFsjCkt+QxuFEzWGpgce3EP1ohz00MLrfiWjhTa2tS/+uQ66NGTGusw8UvH+VEFRyVvoDOC+GCdXbMgKOwklsmLJjH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962160; c=relaxed/simple; bh=fyGxdylWBgAVN1pPbqolUxiQxMykoRKgirgaM7k7Lm0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IrGwf7vYqIgd40o9jCxAhfhf4BZ3UN/tjpSx0cv6/wwmtBovZTv1FIzR7KDWPLwuEbT6T0Krol5mKd7Xrdul+1InQZUMUjUq9NASPQnn9S09yQfCoFKPfN9Txo2N9rCRUgz8YjR0asP/MnZf8hKgILF+E5hG9Y2mh1x8I/oVXBM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YJPkMLOQ; 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="YJPkMLOQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id ABA50C16AAE; Wed, 12 Nov 2025 15:42:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962159; bh=fyGxdylWBgAVN1pPbqolUxiQxMykoRKgirgaM7k7Lm0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YJPkMLOQM8CjnT+976he2HZY6GupzdlSz309HLegPA5L06cVXuJWLwg0Fk/XXWNUC j5lpRzEVSqTzbY0SvInaI3YLw989pC2Uql8SIqSHl+s2X//n71ukEeDUvwdr/C3l9u tnajO7HxephoCH2YXNUkNhmnf8mp0j1Kg/hAEoDU3WRGDWgmx4wZ2aCZYp3Es4Kg43 MfyX6StfLBBwvBNihzy510M8FL/APG2NE+kgce6za0HjGVbSqw7+breLPufbdI0BRI 7Zt4esOBgnllnoTXCVrCU4x0wCh3RrhlYZ7Mkk8RAto4djZmBTE/sJJ9/ukI39X7YD UZ5CR54rRz3HA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, David Hildenbrand Subject: [PATCH 5/9] mm/damon/vaddr: consistently use only pmd_entry for damos_migrate Date: Wed, 12 Nov 2025 07:41:08 -0800 Message-ID: <20251112154114.66053-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" For page table walks, it is usual [1] to have only one pmd entry function. The vaddr.c code for DAMOS_MIGRATE_{HOT,COLD} is not following the pattern. Instead, it uses both pmd and pte entry functions without a special reason. Refactor it to use only the pmd entry function, to make the code under mm/ more consistent. Suggested-by: David Hildenbrand Signed-off-by: SeongJae Park --- mm/damon/vaddr.c | 84 +++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 47 deletions(-) diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 9c06cfe4526f..ef57e95eb422 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -695,7 +695,6 @@ static void damos_va_migrate_dests_add(struct folio *fo= lio, list_add(&folio->lru, &migration_lists[i]); } =20 -#ifdef CONFIG_TRANSPARENT_HUGEPAGE static int damos_va_migrate_pmd_entry(pmd_t *pmd, unsigned long addr, unsigned long next, struct mm_walk *walk) { @@ -705,58 +704,49 @@ static int damos_va_migrate_pmd_entry(pmd_t *pmd, uns= igned long addr, struct damos_migrate_dests *dests =3D &s->migrate_dests; struct folio *folio; spinlock_t *ptl; - pmd_t pmde; - - ptl =3D pmd_lock(walk->mm, pmd); - pmde =3D pmdp_get(pmd); - - if (!pmd_present(pmde) || !pmd_trans_huge(pmde)) - goto unlock; - - /* Tell page walk code to not split the PMD */ - walk->action =3D ACTION_CONTINUE; - - folio =3D vm_normal_folio_pmd(walk->vma, addr, pmde); - if (!folio) - goto unlock; - - if (damos_va_filter_out(s, folio, walk->vma, addr, NULL, pmd)) - goto unlock; - - damos_va_migrate_dests_add(folio, walk->vma, addr, dests, - migration_lists); - -unlock: - spin_unlock(ptl); - return 0; -} -#else -#define damos_va_migrate_pmd_entry NULL -#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ + pte_t *start_pte, *pte, ptent; + int nr; =20 -static int damos_va_migrate_pte_entry(pte_t *pte, unsigned long addr, - unsigned long next, struct mm_walk *walk) -{ - struct damos_va_migrate_private *priv =3D walk->private; - struct list_head *migration_lists =3D priv->migration_lists; - struct damos *s =3D priv->scheme; - struct damos_migrate_dests *dests =3D &s->migrate_dests; - struct folio *folio; - pte_t ptent; +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + ptl =3D pmd_trans_huge_lock(pmd, walk->vma); + if (ptl) { + pmd_t pmde =3D pmdp_get(pmd); =20 - ptent =3D ptep_get(pte); - if (pte_none(ptent) || !pte_present(ptent)) + if (!pmd_present(pmde)) + goto huge_out; + folio =3D vm_normal_folio_pmd(walk->vma, addr, pmde); + if (!folio) + goto huge_out; + if (damos_va_filter_out(s, folio, walk->vma, addr, NULL, pmd)) + goto huge_out; + damos_va_migrate_dests_add(folio, walk->vma, addr, dests, + migration_lists); +huge_out: + spin_unlock(ptl); return 0; + } +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ =20 - folio =3D vm_normal_folio(walk->vma, addr, ptent); - if (!folio) + start_pte =3D pte =3D pte_offset_map_lock(walk->mm, pmd, addr, &ptl); + if (!pte) return 0; =20 - if (damos_va_filter_out(s, folio, walk->vma, addr, pte, NULL)) - return 0; + for (; addr < next; pte +=3D nr, addr +=3D nr * PAGE_SIZE) { + nr =3D 1; + ptent =3D ptep_get(pte); =20 - damos_va_migrate_dests_add(folio, walk->vma, addr, dests, - migration_lists); + if (pte_none(ptent) || !pte_present(ptent)) + continue; + folio =3D vm_normal_folio(walk->vma, addr, ptent); + if (!folio) + continue; + if (damos_va_filter_out(s, folio, walk->vma, addr, pte, NULL)) + return 0; + damos_va_migrate_dests_add(folio, walk->vma, addr, dests, + migration_lists); + nr =3D folio_nr_pages(folio); + } + pte_unmap_unlock(start_pte, ptl); return 0; } =20 @@ -822,7 +812,7 @@ static unsigned long damos_va_migrate(struct damon_targ= et *target, struct damos_migrate_dests *dests =3D &s->migrate_dests; struct mm_walk_ops walk_ops =3D { .pmd_entry =3D damos_va_migrate_pmd_entry, - .pte_entry =3D damos_va_migrate_pte_entry, + .pte_entry =3D NULL, .walk_lock =3D PGWALK_RDLOCK, }; =20 --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 ED3F8345741; Wed, 12 Nov 2025 15:42: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=1762962162; cv=none; b=WauEgE3R+zGcUA3k8RPCZZFxpvWgsmRSk4f4smmHskLui9E/jsW7xUaYUxetoCszOvqT5aZz4YwLVg/4fS7hPZOUx7UIKmfG06+e/zk+Sju7DwBonS6wc5BCaNyHO1YtfQJ8qm/eqzeq70fCDhRxQCgvdbg4BALkz64/yoCVc/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962162; c=relaxed/simple; bh=+nAXiRSD3au0hre7wXKW+GzTCyBQWmgweSl5Hvkt0UE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ADwPxF8+/8IhdQ7PzIii22Fw3vpm6YPgbj38Kd47jFvwXhipipp6DJOa6aY1PU+Me/CAehwN47j4CpTh1oPsmVXKqHWwAilVO+wXV75e0hKrRmKwQ9/B/6vQuB/fsCMfu2N1bTHYcYNdAJH+hZk8xImNoDF5mZxR//ofrv56u74= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eKPHCnkr; 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="eKPHCnkr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 04A8AC113D0; Wed, 12 Nov 2025 15:42:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962161; bh=+nAXiRSD3au0hre7wXKW+GzTCyBQWmgweSl5Hvkt0UE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eKPHCnkr5xrhSxNOU3m625LuzkuCWOODKU1mxNA8UPfpVMV0HL4sjQoCKeTF7uCVz 72NUEswHEoG3hW6Z0dSp+AxdHBU7UPvYieZd57XItZIn0JaeTW5f4SmNLNX5+AomQe 2Pe7ETYWYPjTp+bCrBZPGCRuisiFDj+7B9XyHbwsiZu9XFlSVWzebW5aZHzhyVoE0s UI+waiZR83g9weR6KegWdRkRc8dLl13dbAGkGHRNb+hnfOYEsqZJknnJc4wpoLUU3+ d+YU1ES+v9SaY8pH9XS8/JehwifOHZDttMieLdb81GXmKQtKmGysVI20TIj1Aq9iaG hrHb2gI2ctpkA== 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 6/9] mm/damon/tests/core-kunit: remove DAMON_MIN_REGION redefinition Date: Wed, 12 Nov 2025 07:41:09 -0800 Message-ID: <20251112154114.66053-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" A few DAMON core functions including damon_set_regions() were hard-coded to use DAMON_MIN_REGION as their regions management granularity. For simple and human-readable unit tests' expectations, DAMON core layer kunit test re-defines DAMON_MIN_REGION to '1'. A previous patch series [1] has removed the hard-coded part but kept the redefinition and updated related function calls to explicitly use DAMON_MIN_REGION. Remove the unnecessary redefinition and update relevant function calls to pass literals (number '1') instead of the DAMON_MIN_REGION. [1] https://lore.kernel.org/20250828171242.59810-1-sj@kernel.org Signed-off-by: SeongJae Park --- mm/damon/core.c | 5 ---- mm/damon/tests/core-kunit.h | 55 ++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index aedb315b075a..f9fc0375890a 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -20,11 +20,6 @@ #define CREATE_TRACE_POINTS #include =20 -#ifdef CONFIG_DAMON_KUNIT_TEST -#undef DAMON_MIN_REGION -#define DAMON_MIN_REGION 1 -#endif - static DEFINE_MUTEX(damon_lock); static int nr_running_ctxs; static bool running_exclusive_ctxs; diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h index 4380d0312d24..a1eff023e928 100644 --- a/mm/damon/tests/core-kunit.h +++ b/mm/damon/tests/core-kunit.h @@ -279,7 +279,7 @@ static void damon_test_split_regions_of(struct kunit *t= est) kunit_skip(test, "region alloc fail"); } damon_add_region(r, t); - damon_split_regions_of(t, 2, DAMON_MIN_REGION); + damon_split_regions_of(t, 2, 1); KUNIT_EXPECT_LE(test, damon_nr_regions(t), 2u); damon_free_target(t); =20 @@ -292,7 +292,7 @@ static void damon_test_split_regions_of(struct kunit *t= est) kunit_skip(test, "second region alloc fail"); } damon_add_region(r, t); - damon_split_regions_of(t, 4, DAMON_MIN_REGION); + damon_split_regions_of(t, 4, 1); KUNIT_EXPECT_LE(test, damon_nr_regions(t), 4u); damon_free_target(t); } @@ -373,7 +373,7 @@ static void damon_test_set_regions(struct kunit *test) =20 damon_add_region(r1, t); damon_add_region(r2, t); - damon_set_regions(t, &range, 1, DAMON_MIN_REGION); + damon_set_regions(t, &range, 1, 1); =20 KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 3); damon_for_each_region(r, t) { @@ -1037,15 +1037,14 @@ static void damos_test_filter_out(struct kunit *tes= t) f =3D damos_new_filter(DAMOS_FILTER_TYPE_ADDR, true, false); if (!f) kunit_skip(test, "filter alloc fail"); - f->addr_range =3D (struct damon_addr_range){ - .start =3D DAMON_MIN_REGION * 2, .end =3D DAMON_MIN_REGION * 6}; + f->addr_range =3D (struct damon_addr_range){.start =3D 2, .end =3D 6}; =20 t =3D damon_new_target(); if (!t) { damos_destroy_filter(f); kunit_skip(test, "target alloc fail"); } - r =3D damon_new_region(DAMON_MIN_REGION * 3, DAMON_MIN_REGION * 5); + r =3D damon_new_region(3, 5); if (!r) { damos_destroy_filter(f); damon_free_target(t); @@ -1054,50 +1053,48 @@ static void damos_test_filter_out(struct kunit *tes= t) damon_add_region(r, t); =20 /* region in the range */ - KUNIT_EXPECT_TRUE(test, - damos_filter_match(NULL, t, r, f, DAMON_MIN_REGION)); + KUNIT_EXPECT_TRUE(test, damos_filter_match(NULL, t, r, f, 1)); KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 1); =20 /* region before the range */ - r->ar.start =3D DAMON_MIN_REGION * 1; - r->ar.end =3D DAMON_MIN_REGION * 2; + r->ar.start =3D 1; + r->ar.end =3D 2; KUNIT_EXPECT_FALSE(test, - damos_filter_match(NULL, t, r, f, DAMON_MIN_REGION)); + damos_filter_match(NULL, t, r, f, 1)); KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 1); =20 /* region after the range */ - r->ar.start =3D DAMON_MIN_REGION * 6; - r->ar.end =3D DAMON_MIN_REGION * 8; + r->ar.start =3D 6; + r->ar.end =3D 8; KUNIT_EXPECT_FALSE(test, - damos_filter_match(NULL, t, r, f, DAMON_MIN_REGION)); + damos_filter_match(NULL, t, r, f, 1)); KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 1); =20 /* region started before the range */ - r->ar.start =3D DAMON_MIN_REGION * 1; - r->ar.end =3D DAMON_MIN_REGION * 4; - KUNIT_EXPECT_FALSE(test, - damos_filter_match(NULL, t, r, f, DAMON_MIN_REGION)); + r->ar.start =3D 1; + r->ar.end =3D 4; + KUNIT_EXPECT_FALSE(test, damos_filter_match(NULL, t, r, f, 1)); /* filter should have split the region */ - KUNIT_EXPECT_EQ(test, r->ar.start, DAMON_MIN_REGION * 1); - KUNIT_EXPECT_EQ(test, r->ar.end, DAMON_MIN_REGION * 2); + KUNIT_EXPECT_EQ(test, r->ar.start, 1); + KUNIT_EXPECT_EQ(test, r->ar.end, 2); KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 2); r2 =3D damon_next_region(r); - KUNIT_EXPECT_EQ(test, r2->ar.start, DAMON_MIN_REGION * 2); - KUNIT_EXPECT_EQ(test, r2->ar.end, DAMON_MIN_REGION * 4); + KUNIT_EXPECT_EQ(test, r2->ar.start, 2); + KUNIT_EXPECT_EQ(test, r2->ar.end, 4); damon_destroy_region(r2, t); =20 /* region started in the range */ - r->ar.start =3D DAMON_MIN_REGION * 2; - r->ar.end =3D DAMON_MIN_REGION * 8; + r->ar.start =3D 2; + r->ar.end =3D 8; KUNIT_EXPECT_TRUE(test, - damos_filter_match(NULL, t, r, f, DAMON_MIN_REGION)); + damos_filter_match(NULL, t, r, f, 1)); /* filter should have split the region */ - KUNIT_EXPECT_EQ(test, r->ar.start, DAMON_MIN_REGION * 2); - KUNIT_EXPECT_EQ(test, r->ar.end, DAMON_MIN_REGION * 6); + KUNIT_EXPECT_EQ(test, r->ar.start, 2); + KUNIT_EXPECT_EQ(test, r->ar.end, 6); KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 2); r2 =3D damon_next_region(r); - KUNIT_EXPECT_EQ(test, r2->ar.start, DAMON_MIN_REGION * 6); - KUNIT_EXPECT_EQ(test, r2->ar.end, DAMON_MIN_REGION * 8); + KUNIT_EXPECT_EQ(test, r2->ar.start, 6); + KUNIT_EXPECT_EQ(test, r2->ar.end, 8); damon_destroy_region(r2, t); =20 damon_free_target(t); --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 D63C3345CBE; Wed, 12 Nov 2025 15:42: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=1762962163; cv=none; b=Lb13TI4IxOw5aiAsrd0fZsfJK460jzD6VqxmoQ1mmkwZVUI41t8CQJ9+Wc8NiAJGbfNOypVFGlQ8wygykySkgFrdQ87wz+F7NXH/OijTLu9V9nJJL5J8U+dtJN9mFynXUwO84PMHxAT4TV4yvkku1fsEL6EAYyj0GC5aSbkUF9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962163; c=relaxed/simple; bh=ipqbHpurnSVvOIPX2qXsTqde4IbogP7c/9c05Brr93w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JfhjIIO1BRj6L3m6y1lj6RYxauUTwYezrxVT9/e03M4nEN/BpU1mLBk04Ak+15aKHR9g0GBUDkyRKe4hFOq0Exsm+wo9AdybxhvgqL9Bah5JO4mWl1GkNKRV004sNJT0n5Qh1t9jYhN65cK7S5aDvKnts4vSaEh4Kh0pcghE8N4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KPituJcF; 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="KPituJcF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7079AC4CEF5; Wed, 12 Nov 2025 15:42:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962163; bh=ipqbHpurnSVvOIPX2qXsTqde4IbogP7c/9c05Brr93w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KPituJcFNSjD5P+6aPcagVN3PDZTIuLo6Chdee4DGXczD42xk/RYHpsFtOpSMPV2w igC1fhqrXpXvYjeAZ5uX6tawwU1Vpm82tNw4zXOBvLP2r+j/kgv6VWOMuBZ37HH3j6 +HHSzHW56t9Af4AeL/NraNZ0QcK2yjWO6ORCouO+o8mlaW6wGjKnR2LEVF4E9Z/DK1 fv1fk43sm+4Fr6bzIw0/eWUO3rLsKpB7m+awnK52NgUfEoN1HmY3d+uYx6ndW57SlW c/bHxyfZRAQvrKG5+Ya/V3B4kfOmCZ1jwG30ay6XjiegnhPYtlPmA8KbhaFKOm8xpv eqEYcsuEhq7wQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 7/9] selftests/damon/sysfs.py: merge DAMON status dumping into commitment assertion Date: Wed, 12 Nov 2025 07:41:10 -0800 Message-ID: <20251112154114.66053-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" For each test case, sysfs.py makes changes to DAMON, dumps DAMON internal status and asserts the expectation is met. The dumping part should be the same for all cases, so it is duplicated for each test case. Which means it is easy to make mistakes. Actually a few of those duplicates are not turning DAMON off in case of the dumping failure. It makes following selftests that need to turn DAMON on fails with -EBUSY. Merge the status dumping into commitment assertion with proper dumping failure handling, to deduplicate and avoid the unnecessary following tests failures. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 43 ++++++++------------------ 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index b4c5ef5c4d69..9cca71eb0325 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -185,7 +185,15 @@ def assert_ctx_committed(ctx, dump): assert_monitoring_targets_committed(ctx.targets, dump['adaptive_target= s']) assert_schemes_committed(ctx.schemes, dump['schemes']) =20 -def assert_ctxs_committed(ctxs, dump): +def assert_ctxs_committed(kdamonds): + status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) + if err is not None: + print(err) + kdamonds.stop() + exit(1) + + ctxs =3D kdamonds.kdamonds[0].contexts + dump =3D status['contexts'] assert_true(len(ctxs) =3D=3D len(dump), 'ctxs length', dump) for idx, ctx in enumerate(ctxs): assert_ctx_committed(ctx, dump[idx]) @@ -202,13 +210,7 @@ def main(): print('kdamond start failed: %s' % err) exit(1) =20 - status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) - if err is not None: - print(err) - kdamonds.stop() - exit(1) - - assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) + assert_ctxs_committed(kdamonds) =20 context =3D _damon_sysfs.DamonCtx( monitoring_attrs=3D_damon_sysfs.DamonAttrs( @@ -256,12 +258,7 @@ def main(): kdamonds.kdamonds[0].contexts =3D [context] kdamonds.kdamonds[0].commit() =20 - status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) - if err is not None: - print(err) - exit(1) - - assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) + assert_ctxs_committed(kdamonds) =20 # test online commitment of minimum context. context =3D _damon_sysfs.DamonCtx() @@ -270,12 +267,7 @@ def main(): kdamonds.kdamonds[0].contexts =3D [context] kdamonds.kdamonds[0].commit() =20 - status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) - if err is not None: - print(err) - exit(1) - - assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) + assert_ctxs_committed(kdamonds) =20 kdamonds.stop() =20 @@ -303,17 +295,8 @@ def main(): exit(1) kdamonds.kdamonds[0].contexts[0].targets[1].obsolete =3D True kdamonds.kdamonds[0].commit() - - status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) - if err is not None: - print(err) - kdamonds.stop() - exit(1) - del kdamonds.kdamonds[0].contexts[0].targets[1] - - assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) - + assert_ctxs_committed(kdamonds) kdamonds.stop() =20 if __name__ =3D=3D '__main__': --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 114B4346787; Wed, 12 Nov 2025 15:42:46 +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=1762962166; cv=none; b=iNyNxv93RUNN15ivd5faaQfeDy4QfbXsloKS0bRrQLNDvEU1iB+PTCubCmqGoS4C7SsMcT5Csl7OkPyCLOqAoQlJ6ZUPL+0nEC3+hpdUd57ahOmLM0UNbYRRHaWLiAohhI9M1ddRwrUlPT5TGHUA1oAj+Qno1zfQo36WQMNXN2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962166; c=relaxed/simple; bh=+Y8/mmzsL4R1VnXUesO/LqQSUharTVlUfdkKQD15AOo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=opT78QisxVrtuW4woLdaFyOR5xma+R9tAg3hjICuE2yAnJCGtjR1bZn27DqIjIul8cOs3aVcx0/oUbpzS/KKkP4BjVyzvSIufK86h3miqvc3xRLvJiyqWw6P5h85xFlt+h/6IYCZMyIwEXm/ARrENFHwugZ1j7+d/ObrHTWXdzg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VPxNTBtu; 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="VPxNTBtu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63EE4C19421; Wed, 12 Nov 2025 15:42:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962165; bh=+Y8/mmzsL4R1VnXUesO/LqQSUharTVlUfdkKQD15AOo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VPxNTBtuFzWP5E0kbJfUaoHse2TRa2w3nZ7fygR+O4btmVa4UyrFKKPFIVhBu1gAp /FxcP+pNURKfWiadsKxQsW+cuQkIE/ik57NaUnCq2om4A6XN+9Ev2fZEbRPl/saqy1 1FAPq3L/MS8HBKtkCko/vb381RHwcFxRcnYu5clqp4frD5Mt9zBWEibZI+OOpbRNbP cQfXVgDHOBs+XzBzlIYZcLlZB4gv1NkonecWttOx4sE5fIOLC3ztqIX76Bg6p7aJ/F UyGuKTdsWUkuCq53Vhruu08ckKwqpZWi//L+HpgnQAl0Z9CErM3dHFWNwKJqxnanBt 6+pGTk/lNP2ew== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 8/9] Docs/mm/damon/maintainer-profile: fix a typo on mm-untable link Date: Wed, 12 Nov 2025 07:41:11 -0800 Message-ID: <20251112154114.66053-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" Commit 0b473f9e6eac ("Docs/mm/damon/maintainer-profile: update for mm-new tree") mistakenly forgot putting a space between a link and the next word. Fix it. Signed-off-by: SeongJae Park --- Documentation/mm/damon/maintainer-profile.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/mm/damon/maintainer-profile.rst b/Documentation/= mm/damon/maintainer-profile.rst index 58a3fb3c5762..f1aed6e55d31 100644 --- a/Documentation/mm/damon/maintainer-profile.rst +++ b/Documentation/mm/damon/maintainer-profile.rst @@ -57,7 +57,7 @@ Key cycle dates =20 Patches can be sent anytime. Key cycle dates of the `mm-new `_, `mm-unstable -`_and `mm-stable +`_ and `mm-stable `_ trees depend on the memory management subsystem maintainer. =20 --=20 2.47.3 From nobody Sat Feb 7 18:16:06 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 C00FF346A0C; Wed, 12 Nov 2025 15:42: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=1762962167; cv=none; b=o/Mng+nFkDu2Pm33T+ybkqC84AtGaRb2fkKHeM5G37/QQRmTfLZmssqh8m76CbTtpc+ir0uQBisiQLKyCTKwH8siPtXg/IeeIAMhFzbEn1EIKhLmu3RhAMHQ2XjawWRwQfBr9icO87dD2mf9QqTbDwj1OmbijB1aOxyfwFVRV9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762962167; c=relaxed/simple; bh=FBvB31rC2k0tLRJF6QYnzPfHs35FSu/tgti7HSN3rF0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eDB4qkVa5sO5/c5o4D6sMeaSyD7lh9sj374wmDwssEtRgfKH2otISfEYu+3B0ettOD+deojEpf2wbMKsaD52yRzEnuj3JWlpj1sJ9fTPdwThqg+1kVLR+OLSN0QnSsJjpk6SqFqMkU6I2ORIM4FBqBVKzi7Z7/HwNwxUUQvsUtg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uB+6vhcX; 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="uB+6vhcX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A9C4C4AF09; Wed, 12 Nov 2025 15:42:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762962167; bh=FBvB31rC2k0tLRJF6QYnzPfHs35FSu/tgti7HSN3rF0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uB+6vhcXgD2N/irb6B7wVJSD0ZCkAohTi91IssEJMN5ne6QnsOoRIjSATHwXszAJP KtwCRdxqtDCAbw63HqvPiHcVK1/ollFG5R5GF1vTt0cQkZUoiIBqEKDyZIVarM2GE7 byMmioNTmy+MlAzqC5Ia3j5zEGYbKg4lS5S+CoAgb2jLfGCpRIA3cU620h3SF7I/Nz 8hCl91wRfHQSzkBePKgMxNaSU8UQBiG2RasFpYimQp7eFui0xGIVKg5OP2UcAWld4V vw+4DdO6eicqU0FkjKljiRcCsYseK7y1tWx0cwGjdlNPFhU4NeET2lzLv17Q6hvz5V Io/xl7FbXk5ag== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 9/9] Docs/mm/damon/maintainer-profile: fix grammartical errors Date: Wed, 12 Nov 2025 07:41:12 -0800 Message-ID: <20251112154114.66053-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251112154114.66053-1-sj@kernel.org> References: <20251112154114.66053-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" Fix a few grammartical errors on DAMON maintainer-profile. Signed-off-by: SeongJae Park --- Documentation/mm/damon/maintainer-profile.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/mm/damon/maintainer-profile.rst b/Documentation/= mm/damon/maintainer-profile.rst index f1aed6e55d31..e761edada1e9 100644 --- a/Documentation/mm/damon/maintainer-profile.rst +++ b/Documentation/mm/damon/maintainer-profile.rst @@ -27,8 +27,8 @@ maintainer. =20 Note again the patches for `mm-new tree `_ are queued by the memory manag= ement -subsystem maintainer. If the patches requires some patches in `damon/next= tree -`_ which not yet merged in mm-new, +subsystem maintainer. If the patches require some patches in `damon/next = tree +`_ which have not yet merged in mm= -new, please make sure the requirement is clearly specified. =20 Submit checklist addendum @@ -99,5 +99,5 @@ Schedules and reservation status are available at the Goo= gle `doc `_. There is also a public Google `calendar `_ -that has the events. Anyone can subscribe it. DAMON maintainer will also -provide periodic reminder to the mailing list (damon@lists.linux.dev). +that has the events. Anyone can subscribe to it. DAMON maintainer will a= lso +provide periodic reminders to the mailing list (damon@lists.linux.dev). --=20 2.47.3