From nobody Tue Jun 16 01:16:42 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 A195E34DCC7; Wed, 29 Apr 2026 04:12:37 +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=1777435957; cv=none; b=BGkLfIEW4Qzsgsc1Qf1fqHf2EbwAF09G3YpvNNpsvab/O1C8eU2CtsNdL9iwz+tuTGWPhmxE/VJN0QL03SW4j2ELnmj0p2K5yU3ETxeQwJrcs36QMK2v3ShghroI/vlFFtCxOV2Y3NCdMxHqOI637kP2u6YlFw+fxychvdZLKYo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435957; c=relaxed/simple; bh=049URIRLtatALXiIb20Ra9ky+XPPw2/kMGej8Y0Qt0E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZFXZY35AQSyLcO5847vSE3yy3i51091BhTxdeozcYPRMZ1FGnX9IGWWmlECNz9c/5qnWFEimLh/Nffe46R5cd9qlBRvKJgzTJ+qFpoJBIUDUbdWvNbvsmuQmDd+z93fkVzp704A0A9HT5rRcoIpov8VlcIEmifO9GYgXuXEaYWE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eWKMXG0I; 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="eWKMXG0I" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CD9EC2BCC7; Wed, 29 Apr 2026 04:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435957; bh=049URIRLtatALXiIb20Ra9ky+XPPw2/kMGej8Y0Qt0E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eWKMXG0IMklhPdaxeBYX9oMzqREyU6hFq1jpu/fIIuQaAM7/rMlX4vPrVESytswcu XW6zsP8OraCnhmpOGav40Hsb60LKkIxyBFbm/PDZC3kCs9sa/7w889R7C0eOUFXuoA iq57SFgPpdfR82+wUwDT8Y+kENBBiXDdaURiRX1gKbfpvOKbqkAqx0cbWMCQsmqTdI nziK45o/iiY+PGrhvW/WmyVmf3nuKTo+il6ra5vz/ybgxEzfMsLB4c2679g5IftMpo 2zjAr/gNWDiEkyXjd8/sbKVGIUOZDNCTC5XhJxdyjZnXBBzGldS3tSk8hpU5bqcHQb qxkz4vfkZATUw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 1/7] mm/damon: introduce damon_set_region_system_rams_default() Date: Tue, 28 Apr 2026 21:12:23 -0700 Message-ID: <20260429041232.90257-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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_set_region_biggest_system_ram_default() sets the monitoring target region as the caller requested. If the caller didn't specify the region, it finds the biggest System RAM of the system and sets it as the target region. When there are more than one considerable size of System RAM resources in the system, the default target setup makes no sense. Introduce a variant, namely damon_set_region_system_rams_default(). It sets a physical address range that covers all System RAM resources as the default target region. Signed-off-by: SeongJae Park --- include/linux/damon.h | 5 +++ mm/damon/core.c | 77 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index f2370a3a4a9a3..f656908b2d389 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1010,6 +1010,11 @@ int damon_kdamond_pid(struct damon_ctx *ctx); int damon_call(struct damon_ctx *ctx, struct damon_call_control *control); int damos_walk(struct damon_ctx *ctx, struct damos_walk_control *control); =20 +int damon_set_region_system_rams_default(struct damon_target *t, + unsigned long *start, unsigned long *end, + unsigned long addr_unit, + unsigned long min_region_sz); + int damon_set_region_biggest_system_ram_default(struct damon_target *t, unsigned long *start, unsigned long *end, unsigned long addr_unit, diff --git a/mm/damon/core.c b/mm/damon/core.c index 05e4bef367dbf..980a31cd3498e 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3328,14 +3328,20 @@ static int kdamond_fn(void *data) return 0; } =20 -static int walk_system_ram(struct resource *res, void *arg) +struct damon_system_ram_range_walk_arg { + bool walked; + struct resource res; +}; + +static int damon_system_ram_walk_fn(struct resource *res, void *arg) { - struct resource *a =3D arg; + struct damon_system_ram_range_walk_arg *a =3D arg; =20 - if (resource_size(a) < resource_size(res)) { - a->start =3D res->start; - a->end =3D res->end; + if (!a->walked) { + a->walked =3D true; + a->res.start =3D res->start; } + a->res.end =3D res->end; return 0; } =20 @@ -3352,6 +3358,67 @@ static unsigned long damon_res_to_core_addr(resource= _size_t ra, return ra / addr_unit; } =20 +static bool damon_find_system_rams_range(unsigned long *start, + unsigned long *end, unsigned long addr_unit) +{ + struct damon_system_ram_range_walk_arg arg =3D {}; + + walk_system_ram_res(0, -1, &arg, damon_system_ram_walk_fn); + if (!arg.walked) + return false; + *start =3D damon_res_to_core_addr(arg.res.start, addr_unit); + *end =3D damon_res_to_core_addr(arg.res.end + 1, addr_unit); + if (*end <=3D *start) + return false; + return true; +} + +/** + * damon_set_region_system_rams_default() - Set the region of the given + * monitoring target as requested, or to cover all 'System RAM' resources. + * @t: The monitoring target to set the region. + * @start: The pointer to the start address of the region. + * @end: The pointer to the end address of the region. + * @addr_unit: The address unit for the damon_ctx of @t. + * @min_region_sz: Minimum region size. + * + * This function sets the region of @t as requested by @start and @end. I= f the + * values of @start and @end are zero, however, this function finds 'System + * RAM' resources and sets the region to cover all the resource. In the l= atter + * case, this function saves the start and the end addresseses of the firs= t and + * the last resources in @start and @end, respectively. + * + * Return: 0 on success, negative error code otherwise. + */ +int damon_set_region_system_rams_default(struct damon_target *t, + unsigned long *start, unsigned long *end, + unsigned long addr_unit, unsigned long min_region_sz) +{ + struct damon_addr_range addr_range; + + if (*start > *end) + return -EINVAL; + + if (!*start && !*end && + !damon_find_system_rams_range(start, end, addr_unit)) + return -EINVAL; + + addr_range.start =3D *start; + addr_range.end =3D *end; + return damon_set_regions(t, &addr_range, 1, min_region_sz); +} + +static int walk_system_ram(struct resource *res, void *arg) +{ + struct resource *a =3D arg; + + if (resource_size(a) < resource_size(res)) { + a->start =3D res->start; + a->end =3D res->end; + } + return 0; +} + /* * Find biggest 'System RAM' resource and store its start and end address = in * @start and @end, respectively. If no System RAM is found, returns fals= e. --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 D9046378D7B; Wed, 29 Apr 2026 04:12:37 +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=1777435957; cv=none; b=kzk5qJsDyiSZ8UIW3Uo+Dbxt8dH95fUHE35D4ri7Yd66EVGNJrIAK/DaI8otK5eczij+TIXBhzp8Bh/D+US0s5NDO+emsulbXIPoHOeFniBFL5yOetD8diRV20CnHqjS+OexP/M0m3uDeRMIaOKcCXQXnP8Ji2WTcbX1Yp1qKGc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435957; c=relaxed/simple; bh=t9Rr9ycMseYm87fA5FNyb+eYDvT/K9z7TWRb2DuqipQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RJWmRiBl7KLCri8W0iDmv9hg3kS34DF0nqAnnx68xiFQA2gXmHk75krLWb307vKI+P6gJaeezE0r0JBq+pIIpt3xVXmSFVXzEOy1FPh/VB1ms6JES67PCM07T820I0OR49iQ7w/d7/8VZ9VC6EvfUGpsdYd6DelvpZNR2r+P2yY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q6fEh0o4; 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="Q6fEh0o4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 905CDC2BCB4; Wed, 29 Apr 2026 04:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435957; bh=t9Rr9ycMseYm87fA5FNyb+eYDvT/K9z7TWRb2DuqipQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q6fEh0o41yEc+4ITmIpOW2AlL/IMvgwSy9Mp/yEficOXCLiG/2jPhfzFDwUd3cxh/ /PLdDOriqj6CMab+2VyDo4U3ynVmdvHYAcOFD9LnLVPM5EA4qm95Z506x8aiaO9h4L bnSUEzEgf9T4foy0Wo4LE/gAUmiOhsCG4hLoW1EvAl2Oc8zq/hS8npjcdz+xb+C4lE vfa5+9IVo3t3+W0bgzbgXq2MsMbDyZ1WQzyK3QeieEEoCuqzog2um6xRbHZNbIEUlC /1td3NePQkTJWXZSULinnNb+YXdd3R+ldYuJodf+cBmeWOsqumMAXX1oeo1y8VTZFA u/jcHgDqxDfYA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/7] mm/damon/reclaim: cover all system rams Date: Tue, 28 Apr 2026 21:12:24 -0700 Message-ID: <20260429041232.90257-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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_RECLAIM allows users to set the physical address range to monitor and do the work on. When users don't explicitly set the range, the biggest System RAM resource of the system is selected as the monitoring target address range. The intention was to reduce the overhead from monitoring non-System RAM areas because monitoring of non-System RAM may be meaningless. However, because of the sampling based access check and adaptive regions adjustment, the overhead should be negligible. It makes more sense to just cover all system rams of the system. Do so. Signed-off-by: SeongJae Park --- mm/damon/reclaim.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/damon/reclaim.c b/mm/damon/reclaim.c index b330ff1695907..a60ee800d63e9 100644 --- a/mm/damon/reclaim.c +++ b/mm/damon/reclaim.c @@ -113,7 +113,8 @@ DEFINE_DAMON_MODULES_MON_ATTRS_PARAMS(damon_reclaim_mon= _attrs); * Start of the target memory region in physical address. * * The start physical address of memory region that DAMON_RECLAIM will do = work - * against. By default, biggest System RAM is used as the region. + * against. By default, the system's entire physical memory is used as the + * region. */ static unsigned long monitor_region_start __read_mostly; module_param(monitor_region_start, ulong, 0600); @@ -122,7 +123,8 @@ module_param(monitor_region_start, ulong, 0600); * End of the target memory region in physical address. * * The end physical address of memory region that DAMON_RECLAIM will do wo= rk - * against. By default, biggest System RAM is used as the region. + * against. By default, the system's entire physical memory is used as the + * region. */ static unsigned long monitor_region_end __read_mostly; module_param(monitor_region_end, ulong, 0600); @@ -232,11 +234,9 @@ static int damon_reclaim_apply_parameters(void) damos_add_filter(scheme, filter); } =20 - err =3D damon_set_region_biggest_system_ram_default(param_target, - &monitor_region_start, - &monitor_region_end, - param_ctx->addr_unit, - param_ctx->min_region_sz); + err =3D damon_set_region_system_rams_default(param_target, + &monitor_region_start, &monitor_region_end, + param_ctx->addr_unit, param_ctx->min_region_sz); if (err) goto out; err =3D damon_commit_ctx(ctx, param_ctx); --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 3F82B382F27; Wed, 29 Apr 2026 04:12:38 +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=1777435958; cv=none; b=f12OAZCo8L9X5bRM44BpJeCoNuZH1CX7whn9eA3yH2yv6NSIzVDs9jSt+/S/Eb5JvJ7GKVcXkoenQZlarXiIBLHULlI8iLJuZ/vUZ0lI6T/zLZse2duJ5h5KSszn68ifklLR2QUyc2ivHV6dm68JVPWtC/WFHxJRiKpo+o2VY2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435958; c=relaxed/simple; bh=xMqq3xpXSyg1zeBbUMUMZmxc1oat68q5ZzAMINfxXRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fpQ8dmJqBLLjTJMaBsPZw6M1TROP3IFMn1+D/soMZHLAa2iPGkzWkTDtoLCNBt3xQsnnQEgzvKh6v1UqV4rXFCS8Zap89yd0yDDNnZ2Xq/ceIqUROPZkQajRQvISIq6GFK2+gyiQvi08j8SQOngp0SazhggnwJWGG+F52iJiHGY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KrFQKhs8; 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="KrFQKhs8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E37B8C2BCC6; Wed, 29 Apr 2026 04:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435958; bh=xMqq3xpXSyg1zeBbUMUMZmxc1oat68q5ZzAMINfxXRA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KrFQKhs8TpgSxmgq6oc2QBSOSpUfh6QnY0mq3KvhaNsnUkeb+vFvkzhrYL4Q5zmlP fMaHEh8kNJH+Ry43zgBsmVjjbr36lZ37MsoI/PGqHtZS5Z/kkbQ++AU8x8uyJwB/ly JT3araYWCHuo2N2R3qd96lw4CyPn4QTvUfFyFGEn/CSznJL01umPYDjvRKO4d3kpdu GuzVlGyfCQHOhZRtR0SOiTZMiQ8qBwEJHQwUv8ZY8c4/oixWDZRfhS25C1Ed2pkrGW abvpKBtVRPSpnYbxg62tHXUNRbWnHE4zxnOgDsAZQfa6nSmsBz50OqGPtTLs12FtDI BcVijjgXikl/A== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 3/7] mm/damon/lru_sort: cover all system rams Date: Tue, 28 Apr 2026 21:12:25 -0700 Message-ID: <20260429041232.90257-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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_LRU_SORT allows users to set the physical address range to monitor and do the work on. When users don't explicitly set the range, the biggest system ram resource of the system is selected as the monitoring target address range. The intention was to reduce the overhead from monitoring non-System RAM areas because monitoring non-System RAM may be meaningless. However, because of the sampling based access check and adaptive regions adjustment, the overhead should be negligible. It makes more sense to just cover all system rams of the system. Do so. Signed-off-by: SeongJae Park --- mm/damon/lru_sort.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c index 7569e471160a0..2eb559d913b62 100644 --- a/mm/damon/lru_sort.c +++ b/mm/damon/lru_sort.c @@ -139,7 +139,8 @@ DEFINE_DAMON_MODULES_MON_ATTRS_PARAMS(damon_lru_sort_mo= n_attrs); * Start of the target memory region in physical address. * * The start physical address of memory region that DAMON_LRU_SORT will do= work - * against. By default, biggest System RAM is used as the region. + * against. By default, the system's entire physical memory is used as the + * region. */ static unsigned long monitor_region_start __read_mostly; module_param(monitor_region_start, ulong, 0600); @@ -148,7 +149,8 @@ module_param(monitor_region_start, ulong, 0600); * End of the target memory region in physical address. * * The end physical address of memory region that DAMON_LRU_SORT will do w= ork - * against. By default, biggest System RAM is used as the region. + * against. By default, the system's entire physical memory is used as the + * region. */ static unsigned long monitor_region_end __read_mostly; module_param(monitor_region_end, ulong, 0600); @@ -326,7 +328,7 @@ static int damon_lru_sort_apply_parameters(void) if (err) goto out; =20 - err =3D damon_set_region_biggest_system_ram_default(param_target, + err =3D damon_set_region_system_rams_default(param_target, &monitor_region_start, &monitor_region_end, param_ctx->addr_unit, --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 9B5F6388E6F; Wed, 29 Apr 2026 04:12:38 +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=1777435958; cv=none; b=E3kfHGpqKkCsVdWj9fUiDMITKvPXTuncEnei3JobDskBVKGnHGYEcG1c9t216vdHTt3SCwDhJRrZrVsePzoPyFYsPNFeBam+/5+f4x7JHU+88FjNPkYF05w1a7X8rT1MGOmLhkirYe9dk89HHSE3lPUOF1txT4dHGOSPvYIoSI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435958; c=relaxed/simple; bh=8jYx8KZ5p5GMU2eOGfXvJCf4Ua/nksXozWCmG0l4E4U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ghicHSYOx6bfbv7DejFNWTWsfmm7GsLEWBI8JGKsxjTUOF8BJYB+pnHJkMCMd8u3DkMczD8DJ+huumk50Do/K2VTcdZ+NPES1m4Rbqxy2zNemH3CxUr2A9zoBD0KApYGSqBNjnlD9n8U6lnaakuHtRPR3JTgYJHUe4rr/WVIlNE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=On4DAleE; 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="On4DAleE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40239C2BCB4; Wed, 29 Apr 2026 04:12:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435958; bh=8jYx8KZ5p5GMU2eOGfXvJCf4Ua/nksXozWCmG0l4E4U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=On4DAleEvzEblzRF0MfZsJJfDsA5lc6a6VvbWctwBhhMaR7JRPPqOwfKLyoKtTl2T aONJzcB/oXaoUjqOxrTAojdkxjdwWOULDFXcC0Mw2KmVFLKWiaVV+sca6oTM+BBY+N Q1XYQYzacmH6KI9j8AB3l1VApf6Vm+oeQ3bMs73ZGkkXbyhFJFeWa5bWFg+5dHH4N3 vcNSrxC6u6TGv+CPF5bTImH82jucZWOUcycziOI6/d6BSuHxXT3MmP2P/sIrLEarVW 719+xYSRV+31RrlCvNdc9mNSoJsJAuvrJqCUWkbAdJWDBZHEAMjnOcmnvoWXxHVqia zZXP712hKTrtQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 4/7] mm/damon/core: remove damon_set_region_biggest_system_ram_default() Date: Tue, 28 Apr 2026 21:12:26 -0700 Message-ID: <20260429041232.90257-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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" Now nobody is using damon_set_region_biggest_system_ram_default(). Remove it. Signed-off-by: SeongJae Park --- include/linux/damon.h | 5 ---- mm/damon/core.c | 64 ------------------------------------------- 2 files changed, 69 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index f656908b2d389..c7a31572689be 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -1015,11 +1015,6 @@ int damon_set_region_system_rams_default(struct damo= n_target *t, unsigned long addr_unit, unsigned long min_region_sz); =20 -int damon_set_region_biggest_system_ram_default(struct damon_target *t, - unsigned long *start, unsigned long *end, - unsigned long addr_unit, - unsigned long min_region_sz); - #endif /* CONFIG_DAMON */ =20 #endif /* _DAMON_H */ diff --git a/mm/damon/core.c b/mm/damon/core.c index 980a31cd3498e..9f38deddcb30e 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3408,70 +3408,6 @@ int damon_set_region_system_rams_default(struct damo= n_target *t, return damon_set_regions(t, &addr_range, 1, min_region_sz); } =20 -static int walk_system_ram(struct resource *res, void *arg) -{ - struct resource *a =3D arg; - - if (resource_size(a) < resource_size(res)) { - a->start =3D res->start; - a->end =3D res->end; - } - return 0; -} - -/* - * Find biggest 'System RAM' resource and store its start and end address = in - * @start and @end, respectively. If no System RAM is found, returns fals= e. - */ -static bool damon_find_biggest_system_ram(unsigned long *start, - unsigned long *end, unsigned long addr_unit) - -{ - struct resource res =3D {}; - - walk_system_ram_res(0, -1, &res, walk_system_ram); - *start =3D damon_res_to_core_addr(res.start, addr_unit); - *end =3D damon_res_to_core_addr(res.end + 1, addr_unit); - if (*end <=3D *start) - return false; - return true; -} - -/** - * damon_set_region_biggest_system_ram_default() - Set the region of the g= iven - * monitoring target as requested, or biggest 'System RAM'. - * @t: The monitoring target to set the region. - * @start: The pointer to the start address of the region. - * @end: The pointer to the end address of the region. - * @addr_unit: The address unit for the damon_ctx of @t. - * @min_region_sz: Minimum region size. - * - * This function sets the region of @t as requested by @start and @end. I= f the - * values of @start and @end are zero, however, this function finds the bi= ggest - * 'System RAM' resource and sets the region to cover the resource. In the - * latter case, this function saves the start and end addresses of the res= ource - * in @start and @end, respectively. - * - * Return: 0 on success, negative error code otherwise. - */ -int damon_set_region_biggest_system_ram_default(struct damon_target *t, - unsigned long *start, unsigned long *end, - unsigned long addr_unit, unsigned long min_region_sz) -{ - struct damon_addr_range addr_range; - - if (*start > *end) - return -EINVAL; - - if (!*start && !*end && - !damon_find_biggest_system_ram(start, end, addr_unit)) - return -EINVAL; - - addr_range.start =3D *start; - addr_range.end =3D *end; - return damon_set_regions(t, &addr_range, 1, min_region_sz); -} - /* * damon_moving_sum() - Calculate an inferred moving sum value. * @mvsum: Inferred sum of the last @len_window values. --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 005FD38945C; Wed, 29 Apr 2026 04:12:38 +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=1777435959; cv=none; b=aEJzB2T7vnVsU9yzOhVKovt9aLROXLcM3wZs1VMDI8i+kRCmpnhU8Rg8H69DHOuDrwEurrshckqUNdHCZB/rOll7cOvsWdfswFUAQXO7rG/jYCLTSS+INz/CqX18pNCwg0exvrnGWzjgBx2ZWtMLPmoCnU3KJOfLr45JRSJt+HA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435959; c=relaxed/simple; bh=tLnMMWyWOb5JWter/hkS9/BroYtAzNu6DanZ/dgc7BI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MDtOdMgEsyk1HDFS29svWErdyWHIuEZnituXzDbik53z+wur27/FlNfITPD6nKVOMNS15gDBNVnT6eEhrPg7NXETR0AFq/TAZLTKMRgAGfFoJm8EDTtgAGuMI9fTLwFDCWT5QPrxkyn6e3wLyvmReVkAnRYeX9cujoNN7e1uOrY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OWV9Zwqj; 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="OWV9Zwqj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91620C2BCC7; Wed, 29 Apr 2026 04:12:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435958; bh=tLnMMWyWOb5JWter/hkS9/BroYtAzNu6DanZ/dgc7BI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OWV9Zwqjp6SCQsoS8qqmQHNRel8GAHCYcF5lV7VFcRdPqRxvyktNufhT1B9y81cht Nh6OekIufSS//qGawwe1wlVuDt0OSUCcptCmhOCHMHY1k/FeIaoJoTWSc6kmXmq8/S hyeY1RQs2v8avPKP1ej2D2hh3DRxNhs8kIs5ktxOtmMLaqnc/RrO9rMtgJCZHronXT T4kR5fK9jjjF2qNZTlzE9iZwmAQCzWyrGUkzpAhsGyJQHx1c4XbqiyvMt+ZKVP2X9X xWWPIH4GBpqKo2BnJjv4ZQUvOx5+7/5x0u1pNrSNJIOxG4vV1/lXEbeHLwtfQi5Lyi VIDXo6MDVIL6w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 5/7] mm/damon/stat: use damon_set_region_system_rams_default() Date: Tue, 28 Apr 2026 21:12:27 -0700 Message-ID: <20260429041232.90257-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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_stat_set_moniotirng_region() is nearly a duplicate of the core function, damon_set_region_system_rams_default(). Use the core implementation. Signed-off-by: SeongJae Park --- mm/damon/stat.c | 53 +++---------------------------------------------- 1 file changed, 3 insertions(+), 50 deletions(-) diff --git a/mm/damon/stat.c b/mm/damon/stat.c index 3951b762cbddf..f4d3203e92639 100644 --- a/mm/damon/stat.c +++ b/mm/damon/stat.c @@ -148,59 +148,12 @@ static int damon_stat_damon_call_fn(void *data) return 0; } =20 -struct damon_stat_system_ram_range_walk_arg { - bool walked; - struct resource res; -}; - -static int damon_stat_system_ram_walk_fn(struct resource *res, void *arg) -{ - struct damon_stat_system_ram_range_walk_arg *a =3D arg; - - if (!a->walked) { - a->walked =3D true; - a->res.start =3D res->start; - } - a->res.end =3D res->end; - return 0; -} - -static unsigned long damon_stat_res_to_core_addr(resource_size_t ra, - unsigned long addr_unit) -{ - /* - * Use div_u64() for avoiding linking errors related with __udivdi3, - * __aeabi_uldivmod, or similar problems. This should also improve the - * performance optimization (read div_u64() comment for the detail). - */ - if (sizeof(ra) =3D=3D 8 && sizeof(addr_unit) =3D=3D 4) - return div_u64(ra, addr_unit); - return ra / addr_unit; -} - -static int damon_stat_set_monitoring_region(struct damon_target *t, - unsigned long addr_unit, unsigned long min_region_sz) -{ - struct damon_addr_range addr_range; - struct damon_stat_system_ram_range_walk_arg arg =3D {}; - - walk_system_ram_res(0, -1, &arg, damon_stat_system_ram_walk_fn); - if (!arg.walked) - return -EINVAL; - addr_range.start =3D damon_stat_res_to_core_addr( - arg.res.start, addr_unit); - addr_range.end =3D damon_stat_res_to_core_addr( - arg.res.end + 1, addr_unit); - if (addr_range.end <=3D addr_range.start) - return -EINVAL; - return damon_set_regions(t, &addr_range, 1, min_region_sz); -} - static struct damon_ctx *damon_stat_build_ctx(void) { struct damon_ctx *ctx; struct damon_attrs attrs; struct damon_target *target; + unsigned long start =3D 0, end =3D 0; =20 ctx =3D damon_new_ctx(); if (!ctx) @@ -230,8 +183,8 @@ static struct damon_ctx *damon_stat_build_ctx(void) if (!target) goto free_out; damon_add_target(ctx, target); - if (damon_stat_set_monitoring_region(target, ctx->addr_unit, - ctx->min_region_sz)) + if (damon_set_region_system_rams_default(target, &start, &end, + ctx->addr_unit, ctx->min_region_sz)) goto free_out; return ctx; free_out: --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 A11C138AC9E; Wed, 29 Apr 2026 04:12: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=1777435959; cv=none; b=M+w4XHyZO9B41h+cu8a9lynILS1Gxfw5nlajY9Q1cnxhkgI8Zrs7npw6c/kPA5tXASiEm/8GbYWY85qCHTcZjoo4nK9lCeUcGTP3RcW6ogSumLqxa+HpKcko4hVOT8xyE29lU8D+8DSfYmXcrIbH0O0lY1xIJWmg/wRx5fFJrug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435959; c=relaxed/simple; bh=M+ZCKDs15omwhqSNEq9DSlBKj4hfJOQxX08s5GsHoNM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BGKPaTLEA2Ds0GmGSiuqIX5N0GxncOESEBYaUCut/cpAwkSgZ5mqaMC7w65O/jxxLU0xNv7tyLmVXNNIqwbJQLsbWG6/IGDs2ChWxO0ZWXgNL6SeaNUuj7Y6XT/b8HD0g6ShPa6xFIbqdgNJWYnt8bPKg2+o/KdqTOdbvSdtg14= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=l/Ub3bsI; 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="l/Ub3bsI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2D1DC2BCB4; Wed, 29 Apr 2026 04:12:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435959; bh=M+ZCKDs15omwhqSNEq9DSlBKj4hfJOQxX08s5GsHoNM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l/Ub3bsI4oZq4qktJLPFghhfsWU/YqsnepWRznNQdTlnYZe4j+m98Qlp5Zc+7deiI pbu/d+QDsUFb5IekgG7Jf1Dv+THzn7tnFjbRF3gOnSYBP0XPRZVzVBsKSmnrzgfJRh YAnMFu4SLPnMna2xRj7nKEoxp3cpYt95ZJRw6DmNHelrggj1oQ1EwzoS/SUGPCjUkD moEcDkIabkGvKq4OGjtID2FsJTgVkRGd/mS+1G9EXhVceIiywg2pVS/CRbwBgLB086 Z6oeETCFucNTQB7x4XJRCxESPF80BrzIGTKwAFJpuY0DsIDwDdRt3HZ/G1V4LaFxpI VPZUmYIsbwC+w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Shuah Khan , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 6/7] Docs/admin-guide/mm/damon/reclaim: update for entire memory monitoring Date: Tue, 28 Apr 2026 21:12:28 -0700 Message-ID: <20260429041232.90257-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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" Update DAMON_RECLAIM usage document for the changed default monitoring target region selection. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/reclaim.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/mm/damon/reclaim.rst b/Documentation= /admin-guide/mm/damon/reclaim.rst index 01a34c215b66f..57ab8b1876506 100644 --- a/Documentation/admin-guide/mm/damon/reclaim.rst +++ b/Documentation/admin-guide/mm/damon/reclaim.rst @@ -229,7 +229,8 @@ Start of target memory region in physical address. =20 The start physical address of memory region that DAMON_RECLAIM will do work against. That is, DAMON_RECLAIM will find cold memory regions in this reg= ion -and reclaims. By default, biggest System RAM is used as the region. +and reclaims. By default, the system's entire physical memory is used as = the +region. =20 monitor_region_end ------------------ @@ -238,7 +239,8 @@ End of target memory region in physical address. =20 The end physical address of memory region that DAMON_RECLAIM will do work against. That is, DAMON_RECLAIM will find cold memory regions in this reg= ion -and reclaims. By default, biggest System RAM is used as the region. +and reclaims. By default, the system's entire physical memory is used as = the +region. =20 addr_unit --------- --=20 2.47.3 From nobody Tue Jun 16 01:16:42 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 74C4838D005; Wed, 29 Apr 2026 04:12:40 +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=1777435960; cv=none; b=Rmb4ox3AIMYDZfTuiyV1MqY2WXdMGb1CbwrMgkc2huIDWr3j+HkIMk8p1WoImHBbLoSHgd72vO0s37ZLiblDRaa+OSyonC+SSq15Ryebc/WAP6xXJbtIb9xbGlTfe0qSirlNLXP4qeiDo9hvW/HR4DqSLSsWMBA6aXCOaOQhc/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777435960; c=relaxed/simple; bh=u93JPpTlUZa2B/ZunhEoNlylkbQxSRBwO+E/mC/FBAU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VrTvFa4wBMPg5+b85+T47XwmT+o7MfsXhvKXajzFqvtNDnQuLBh26u/Xa4x3IZZfCrGtvFLXLgebozozMw/cAJPId1+h/bjVVYtJDXnAOWuDFBDx9rFThfIvf4kzXPfaFjBoxyxXrevV6/r9WHFDKg5re9B8mu/Ao9P0+OI/VNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=C912i0Pe; 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="C912i0Pe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97F58C2BCC4; Wed, 29 Apr 2026 04:12:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777435960; bh=u93JPpTlUZa2B/ZunhEoNlylkbQxSRBwO+E/mC/FBAU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C912i0PemsFCYsHBoZ9dNu2aeuVuI85VpslMloSdbwD0vPIrHLRERO1zehLZEVUMb 6J0hVMz7P9ORo9NEJRPgQThbGUerYmFz6R7GB2ZO3dnlGNWZCuJGrsYmTmyUrqoajX 25eGlkYwvOsQa/9B5aFVFnqhTa3J9LvYbXBaPxXkZ9bBnl3Zi7VMysmhKTA+zxNBbi V2lrRlorpW35jyTcltz5R7kDibkBRAp5LOg6S5GJ6C09XAQjg3TqyGxyF4b6mDScTr vHgzKUvkdtCo/NmmjOj4Z5MkJGY1SeYD7IaiAxCj9kGRpAAsiFoXFwkZeTHE5phcSz t/3uNSkvvfHPA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Shuah Khan , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 7/7] Docs/admin-guide/mm/damon/lru_sort: update for entire memory monitoring Date: Tue, 28 Apr 2026 21:12:29 -0700 Message-ID: <20260429041232.90257-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260429041232.90257-1-sj@kernel.org> References: <20260429041232.90257-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" Update DAMON_LRU_SORT usage document for the changed default monitoring target region selection. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/lru_sort.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/mm/damon/lru_sort.rst b/Documentatio= n/admin-guide/mm/damon/lru_sort.rst index 25e2f042a383f..b93ca9b0853d2 100644 --- a/Documentation/admin-guide/mm/damon/lru_sort.rst +++ b/Documentation/admin-guide/mm/damon/lru_sort.rst @@ -246,7 +246,8 @@ monitor_region_start Start of target memory region in physical address. =20 The start physical address of memory region that DAMON_LRU_SORT will do wo= rk -against. By default, biggest System RAM is used as the region. +against. By default, the system's entire physical memory is used as the +region. =20 monitor_region_end ------------------ @@ -254,7 +255,8 @@ monitor_region_end End of target memory region in physical address. =20 The end physical address of memory region that DAMON_LRU_SORT will do work -against. By default, biggest System RAM is used as the region. +against. By default, the system's entire physical memory is used as the +region. =20 addr_unit --------- --=20 2.47.3