mm/damon: remove duplicate get_monitoring_region() definitions
authorXin Hao <xhao@linux.alibaba.com>
Fri, 9 Sep 2022 21:36:06 +0000 (21:36 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 3 Oct 2022 21:03:08 +0000 (14:03 -0700)
In lru_sort.c and reclaim.c, they are all defining get_monitoring_region()
function, there is no need to define it separately.

As 'get_monitoring_region()' is not a 'static' function anymore, we try to
use a prefix to distinguish with other functions, so there rename it to
'damon_find_biggest_system_ram'.

Link: https://lkml.kernel.org/r/20220909213606.136221-1-sj@kernel.org
Signed-off-by: Xin Hao <xhao@linux.alibaba.com>
Signed-off-by: SeongJae Park <sj@kernel.org>
Suggested-by: SeongJae Park <sj@kernel.org>
Reviewed-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/damon.h
mm/damon/core.c
mm/damon/lru_sort.c
mm/damon/reclaim.c

index 90f2067..016b6c9 100644 (file)
@@ -549,6 +549,8 @@ static inline bool damon_target_has_pid(const struct damon_ctx *ctx)
 int damon_start(struct damon_ctx **ctxs, int nr_ctxs, bool exclusive);
 int damon_stop(struct damon_ctx **ctxs, int nr_ctxs);
 
+bool damon_find_biggest_system_ram(unsigned long *start, unsigned long *end);
+
 #endif /* CONFIG_DAMON */
 
 #endif /* _DAMON_H */
index 5ad31d2..2437c61 100644 (file)
@@ -1245,4 +1245,44 @@ static int kdamond_fn(void *data)
        return 0;
 }
 
+/*
+ * struct damon_system_ram_region - System RAM resource address region of
+ *                                 [@start, @end).
+ * @start:     Start address of the region (inclusive).
+ * @end:       End address of the region (exclusive).
+ */
+struct damon_system_ram_region {
+       unsigned long start;
+       unsigned long end;
+};
+
+static int walk_system_ram(struct resource *res, void *arg)
+{
+       struct damon_system_ram_region *a = arg;
+
+       if (a->end - a->start < resource_size(res)) {
+               a->start = res->start;
+               a->end = 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 false.
+ */
+bool damon_find_biggest_system_ram(unsigned long *start, unsigned long *end)
+
+{
+       struct damon_system_ram_region arg = {};
+
+       walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
+       if (arg.end <= arg.start)
+               return false;
+
+       *start = arg.start;
+       *end = arg.end;
+       return true;
+}
+
 #include "core-test.h"
index 0184ed4..8415e18 100644 (file)
@@ -257,39 +257,6 @@ module_param(nr_cold_quota_exceeds, ulong, 0400);
 static struct damon_ctx *ctx;
 static struct damon_target *target;
 
-struct damon_lru_sort_ram_walk_arg {
-       unsigned long start;
-       unsigned long end;
-};
-
-static int walk_system_ram(struct resource *res, void *arg)
-{
-       struct damon_lru_sort_ram_walk_arg *a = arg;
-
-       if (a->end - a->start < resource_size(res)) {
-               a->start = res->start;
-               a->end = 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 false.
- */
-static bool get_monitoring_region(unsigned long *start, unsigned long *end)
-{
-       struct damon_lru_sort_ram_walk_arg arg = {};
-
-       walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
-       if (arg.end <= arg.start)
-               return false;
-
-       *start = arg.start;
-       *end = arg.end;
-       return true;
-}
-
 /* Create a DAMON-based operation scheme for hot memory regions */
 static struct damos *damon_lru_sort_new_hot_scheme(unsigned int hot_thres)
 {
@@ -414,8 +381,8 @@ static int damon_lru_sort_apply_parameters(void)
        if (monitor_region_start > monitor_region_end)
                return -EINVAL;
        if (!monitor_region_start && !monitor_region_end &&
-                       !get_monitoring_region(&monitor_region_start,
-                               &monitor_region_end))
+           !damon_find_biggest_system_ram(&monitor_region_start,
+                                          &monitor_region_end))
                return -EINVAL;
        addr_range.start = monitor_region_start;
        addr_range.end = monitor_region_end;
index 5aeca0b..fe7bc0c 100644 (file)
@@ -229,39 +229,6 @@ module_param(nr_quota_exceeds, ulong, 0400);
 static struct damon_ctx *ctx;
 static struct damon_target *target;
 
-struct damon_reclaim_ram_walk_arg {
-       unsigned long start;
-       unsigned long end;
-};
-
-static int walk_system_ram(struct resource *res, void *arg)
-{
-       struct damon_reclaim_ram_walk_arg *a = arg;
-
-       if (a->end - a->start < resource_size(res)) {
-               a->start = res->start;
-               a->end = 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 false.
- */
-static bool get_monitoring_region(unsigned long *start, unsigned long *end)
-{
-       struct damon_reclaim_ram_walk_arg arg = {};
-
-       walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
-       if (arg.end <= arg.start)
-               return false;
-
-       *start = arg.start;
-       *end = arg.end;
-       return true;
-}
-
 static struct damos *damon_reclaim_new_scheme(void)
 {
        struct damos_access_pattern pattern = {
@@ -328,8 +295,8 @@ static int damon_reclaim_apply_parameters(void)
        if (monitor_region_start > monitor_region_end)
                return -EINVAL;
        if (!monitor_region_start && !monitor_region_end &&
-                       !get_monitoring_region(&monitor_region_start,
-                               &monitor_region_end))
+           !damon_find_biggest_system_ram(&monitor_region_start,
+                                          &monitor_region_end))
                return -EINVAL;
        addr_range.start = monitor_region_start;
        addr_range.end = monitor_region_end;