From nobody Sat Feb 7 20:04:37 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 8F4EB5C82; Thu, 7 Mar 2024 03:00:19 +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=1709780419; cv=none; b=OIHB7HQdWlmUn9HyGeEWaWoEG03ByJWmkU7iRY2ZGP5XQpT4jx0CXf0ee7N1x/xGodxSwKdS23oORrGoWW0tvMmoAYxFYJee31aNCjznVOTNxT2GI8nb3ciF6J+UlYl+s/0cgNAx5ggNTOd/maagGCZ0O0BiVZkogTZhjA+JV9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709780419; c=relaxed/simple; bh=LO88k+dd/BebwXvUzvdC1iypWVc1Mb6U9juVYlKD5Nk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=r4lnhhcKpsfvQbPy3pMx09kcZIRTbuLqMla5/mjjY/fdTEow8WM4tdjn5jnqT4H2Sg0gsqBOQlXxuLyHiNqlF+KuMFTToZfdLSIKkUuBNiTIdY8HUURKpm6JCXzIt+cmQJxY9L81WXmf0Ddgx1wsB/Kk4o1u5Zd55lcBJo4LC08= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Xfvl0OYl; 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="Xfvl0OYl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C52C9C433F1; Thu, 7 Mar 2024 03:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709780419; bh=LO88k+dd/BebwXvUzvdC1iypWVc1Mb6U9juVYlKD5Nk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Xfvl0OYlXalMPZ5OQy3u2by1UcGM63J6lYhw6OnPh5BnjI7XbNx9yehBIe98iibpT mVEKZQGkrZK0nQgcWw/M7VsDKZGgiUz/6W5vvgcZScmUgyu7T75nOC9STn59mm8Bte mJfbJOPDheRHml1ByYZpQbHQdeRj120Sjddcr/1nHUd70BI54sCBVgXEXYJketb0Jt z9IUEX3UDo9GyhOR8XDgyW5k+0gxOUQs29Ld4RSIAngv7MO0XbF7f8apdD49lPDFvA NZyTKlEO/ta8kLgllFMMiE92wUPs0XsSDFR+vGs9TLrlKLcicF3HkPvRcWv7Ffq43e QpdZFfAX9k+5Q== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , honggyu.kim@sk.com, hyeongtak.ji@sk.com, kernel_team@skhynix.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 1/3] mm/damon: add DAMOS filter type YOUNG Date: Wed, 6 Mar 2024 19:00:11 -0800 Message-Id: <20240307030013.47041-2-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240307030013.47041-1-sj@kernel.org> References: <20240307030013.47041-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" Define yet another DAMOS filter type, YOUNG. Like anon and memcg, the type of filter will be applied to each page in the memory region, and check if the page is accessed since the last check. Note that this commit is only defining the type. Implementation of it should be made on DAMON operations sets. A couple of commits for the implementation on 'paddr' DAMON operations set will follow. Signed-off-by: SeongJae Park --- include/linux/damon.h | 2 ++ mm/damon/sysfs-schemes.c | 1 + 2 files changed, 3 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 886d07294f4e..f7da65e1ac04 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -297,6 +297,7 @@ struct damos_stat { * enum damos_filter_type - Type of memory for &struct damos_filter * @DAMOS_FILTER_TYPE_ANON: Anonymous pages. * @DAMOS_FILTER_TYPE_MEMCG: Specific memcg's pages. + * @DAMOS_FILTER_TYPE_YOUNG: Recently accessed pages. * @DAMOS_FILTER_TYPE_ADDR: Address range. * @DAMOS_FILTER_TYPE_TARGET: Data Access Monitoring target. * @NR_DAMOS_FILTER_TYPES: Number of filter types. @@ -315,6 +316,7 @@ struct damos_stat { enum damos_filter_type { DAMOS_FILTER_TYPE_ANON, DAMOS_FILTER_TYPE_MEMCG, + DAMOS_FILTER_TYPE_YOUNG, DAMOS_FILTER_TYPE_ADDR, DAMOS_FILTER_TYPE_TARGET, NR_DAMOS_FILTER_TYPES, diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 53a90ac678fb..bea5bc52846a 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -343,6 +343,7 @@ static struct damon_sysfs_scheme_filter *damon_sysfs_sc= heme_filter_alloc(void) static const char * const damon_sysfs_scheme_filter_type_strs[] =3D { "anon", "memcg", + "young", "addr", "target", }; --=20 2.39.2 From nobody Sat Feb 7 20:04:37 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 9807DE555; Thu, 7 Mar 2024 03:00: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=1709780420; cv=none; b=UhhkLQpyDkLMvoCN+av4eYFGU14UqunkVcff13PWJrHlJnIGYl1hhHsbKS2Ap5dSY2C70UDIWgucoNyYZQTywBg5smMUj0EQtKJoJYlrn2HetwzHUjnUxJ236iXzKM/3p9rnDHlxAurAMcrGprQPJUXWW2vKuul17P9UuZz7jcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709780420; c=relaxed/simple; bh=0eBYRMuRF3ohUK1LpjNQClNe+yHwQ6lEwKTScu0clBQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nDUTzxSKeY0IyW5qe4w5S6TsGD7euAJvX1skcN0SMLlYgRmMC7+qZgqo+B68FOiiqV/Ks+t6baKHnlUyWxAlVJjS4K/aB8zJQjfoH9LhV0mLCttcbwG7sgQ4AFN/4vXfhUh2tTUfYiltc3+m1pOWPTn4sysjK9IQ8fopUsIOw8k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SEsAH8mQ; 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="SEsAH8mQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97DD0C43399; Thu, 7 Mar 2024 03:00:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709780420; bh=0eBYRMuRF3ohUK1LpjNQClNe+yHwQ6lEwKTScu0clBQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SEsAH8mQ0+MJ9898A1IG2SQIvaIy0pUH8KdiOgj6Z61nklkkDbv+he/qFjFiJ0lI/ OrhEf2N80oOQpHKx/HJLFeyiiy38u5gHHpIhVWyGlKVUjrPVamcW3hYTrv/kXdES1a zs1s9szWp0LKHT1qi9u4/Ew0lSvG5ixmO1AAw2yHctf0QyEv8poK6Sp3rHyvGhN4mz lLKFkrBvCu3F0hhxuSvHt5/OGxd8MfRmOmV7oo1af7NugjdAZi3l9liSAfR/Vvs2kY ekTXh7f9xZMv5Z30FdHKya4JPNfZ6fcptOoyKT8ua7rmkesYAcdM5r7I4pS8EIKsdc 9KFnL4DWWQ4xQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , honggyu.kim@sk.com, hyeongtak.ji@sk.com, kernel_team@skhynix.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 2/3] mm/damon/paddr: implement damon_folio_young() Date: Wed, 6 Mar 2024 19:00:12 -0800 Message-Id: <20240307030013.47041-3-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240307030013.47041-1-sj@kernel.org> References: <20240307030013.47041-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_pa_young() receives physical address, get the folio covering the address, and return if the folio is accessed since the last check. Split the internal logic for checking access to given folio, for future reuse of the logic from code that already got the folio of the address of the question. Signed-off-by: SeongJae Park --- mm/damon/paddr.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index 5e6dc312072c..deee0fdf2e5b 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -111,9 +111,8 @@ static bool __damon_pa_young(struct folio *folio, struc= t vm_area_struct *vma, return *accessed =3D=3D false; } =20 -static bool damon_pa_young(unsigned long paddr, unsigned long *folio_sz) +static bool damon_folio_young(struct folio *folio) { - struct folio *folio =3D damon_get_folio(PHYS_PFN(paddr)); bool accessed =3D false; struct rmap_walk_control rwc =3D { .arg =3D &accessed, @@ -122,27 +121,34 @@ static bool damon_pa_young(unsigned long paddr, unsig= ned long *folio_sz) }; bool need_lock; =20 - if (!folio) - return false; - if (!folio_mapped(folio) || !folio_raw_mapping(folio)) { if (folio_test_idle(folio)) - accessed =3D false; + return false; else - accessed =3D true; - goto out; + return true; } =20 need_lock =3D !folio_test_anon(folio) || folio_test_ksm(folio); if (need_lock && !folio_trylock(folio)) - goto out; + return false; =20 rmap_walk(folio, &rwc); =20 if (need_lock) folio_unlock(folio); =20 -out: + return accessed; +} + +static bool damon_pa_young(unsigned long paddr, unsigned long *folio_sz) +{ + struct folio *folio =3D damon_get_folio(PHYS_PFN(paddr)); + bool accessed; + + if (!folio) + return false; + + accessed =3D damon_folio_young(folio); *folio_sz =3D folio_size(folio); folio_put(folio); return accessed; --=20 2.39.2 From nobody Sat Feb 7 20:04:37 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 6BB67107A9; Thu, 7 Mar 2024 03:00:21 +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=1709780421; cv=none; b=UkRuRgzdYbw8asoirC4K4VNxyYdmu1sCXefoQIQgm2//BzF8Yg2WFcXhkZ4hJIHFEKsK9uorvSAk/Eb25iDkJ1qnUSZC00oUgGL1WraVYLrhXmC3tdmsp1USVx3xfFjyGOdFxeOAhANZCL11oanaL44HuGCw3efvVl3Dnm/F2Oc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709780421; c=relaxed/simple; bh=T4Zlt0HI2JO9pfzPw6anb118M3jARiv+TpO7SVPb1+s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u3JxvpEOsVzk5o5q2kUg+mFbCs68sUSeobZx0KUbFdSk8On4C9juCqaZozd+BVSGq28Fh6leJsF+Tzfe0r9m4n6dlow34l4DoxdE1gwNjJCeR/79OE3J+MKhpH5Ib3tZKMDhm8X29Hy7s/2qnayk+Z17aqjgaDpgIvWaE0cZO68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gr9yFIso; 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="Gr9yFIso" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5CFA2C433A6; Thu, 7 Mar 2024 03:00:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709780420; bh=T4Zlt0HI2JO9pfzPw6anb118M3jARiv+TpO7SVPb1+s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gr9yFIsoRpLje3SvSmfKYtWNR0uF3miMXc3LPHKsQdFSm9I+Tm4opJXvrkVMMmD3a jLeGpR1MNiipgS8Fs1hljL1UEMO0+qd9APCsbYJjrn0vZbc3dGYayyBIyW4qw++Q+f FJIxtv3yoBl4sUqUdis8IjJkjkkUm2xKA9Xr/eGFcN/S8cIiuRVBeWm636Z3k6qigh aMetigmopMzSlpeWgw3m1T481zUJtpufmVO0T2zISAyN/1SRgZUWDXOyKpgzLiNE30 hqoEhcnBLYXzqzwYIeHdQOGTb9wQAQI64t7ETWJVBakfeE4XdXny8xIed3YHH5t28n lfVc8S8ugzlNQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , honggyu.kim@sk.com, hyeongtak.ji@sk.com, kernel_team@skhynix.com, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 3/3] mm/damon/paddr: support DAMOS filter type YOUNG Date: Wed, 6 Mar 2024 19:00:13 -0800 Message-Id: <20240307030013.47041-4-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240307030013.47041-1-sj@kernel.org> References: <20240307030013.47041-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 of type YOUNG is defined, but not yet implemented by any DAMON operations set. Add the implementation to the DAMON operations set for the physical address space, paddr. Signed-off-by: SeongJae Park --- mm/damon/paddr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index deee0fdf2e5b..52e4be7351cc 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -209,6 +209,9 @@ static bool __damos_pa_filter_out(struct damos_filter *= filter, matched =3D filter->memcg_id =3D=3D mem_cgroup_id(memcg); rcu_read_unlock(); break; + case DAMOS_FILTER_TYPE_YOUNG: + matched =3D damon_folio_young(folio); + break; default: break; } --=20 2.39.2