2020-02-21 21:54:14

by Rik van Riel

[permalink] [raw]
Subject: [PATCH 1/2] mm,compaction,cma: add alloc_contig flag to compact_control

Add information to struct compact_control to indicate that the allocator
would really like to clear out this specific part of memory, used by for
example CMA.

Signed-off-by: Rik van Riel <[email protected]>
---
mm/internal.h | 1 +
mm/page_alloc.c | 1 +
2 files changed, 2 insertions(+)

diff --git a/mm/internal.h b/mm/internal.h
index 3cf20ab3ca01..78492d9815b4 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -206,6 +206,7 @@ struct compact_control {
bool whole_zone; /* Whole zone should/has been scanned */
bool contended; /* Signal lock or sched contention */
bool rescan; /* Rescanning the same pageblock */
+ bool alloc_contig; /* alloc_contig_range allocation */
};

/*
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3c4eb750a199..a36736812596 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -8402,6 +8402,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
.ignore_skip_hint = true,
.no_set_skip_hint = true,
.gfp_mask = current_gfp_context(gfp_mask),
+ .alloc_contig = true,
};
INIT_LIST_HEAD(&cc.migratepages);

--
2.24.1


2020-02-24 15:06:14

by Vlastimil Babka

[permalink] [raw]
Subject: Re: [PATCH 1/2] mm,compaction,cma: add alloc_contig flag to compact_control

On 2/21/20 10:53 PM, Rik van Riel wrote:
> Add information to struct compact_control to indicate that the allocator
> would really like to clear out this specific part of memory, used by for
> example CMA.
>
> Signed-off-by: Rik van Riel <[email protected]>

Reviewed-by: Vlastimil Babka <[email protected]>

Could have been just squashed into patch 2, but no strong feelings.

> ---
> mm/internal.h | 1 +
> mm/page_alloc.c | 1 +
> 2 files changed, 2 insertions(+)
>
> diff --git a/mm/internal.h b/mm/internal.h
> index 3cf20ab3ca01..78492d9815b4 100644
> --- a/mm/internal.h
> +++ b/mm/internal.h
> @@ -206,6 +206,7 @@ struct compact_control {
> bool whole_zone; /* Whole zone should/has been scanned */
> bool contended; /* Signal lock or sched contention */
> bool rescan; /* Rescanning the same pageblock */
> + bool alloc_contig; /* alloc_contig_range allocation */
> };
>
> /*
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 3c4eb750a199..a36736812596 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -8402,6 +8402,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
> .ignore_skip_hint = true,
> .no_set_skip_hint = true,
> .gfp_mask = current_gfp_context(gfp_mask),
> + .alloc_contig = true,
> };
> INIT_LIST_HEAD(&cc.migratepages);
>
>