2023-03-19 11:42:35

by Mike Rapoport

[permalink] [raw]
Subject: [PATCH] mm: move get_page_from_free_area() to mm/page_alloc.c

From: "Mike Rapoport (IBM)" <[email protected]>

The get_page_from_free_area() helper is only used in mm/page_alloc.c so
move it there to reduce noise in include/linux/mmzone.h

Signed-off-by: Mike Rapoport (IBM) <[email protected]>
---
include/linux/mmzone.h | 7 -------
mm/page_alloc.c | 7 +++++++
2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 96599cb9eb62..8f5a9e2c722a 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -108,13 +108,6 @@ struct free_area {
unsigned long nr_free;
};

-static inline struct page *get_page_from_free_area(struct free_area *area,
- int migratetype)
-{
- return list_first_entry_or_null(&area->free_list[migratetype],
- struct page, lru);
-}
-
static inline bool free_area_empty(struct free_area *area, int migratetype)
{
return list_empty(&area->free_list[migratetype]);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 87d760236dba..2e72fdbdd8db 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1048,6 +1048,13 @@ static inline void del_page_from_free_list(struct page *page, struct zone *zone,
zone->free_area[order].nr_free--;
}

+static inline struct page *get_page_from_free_area(struct free_area *area,
+ int migratetype)
+{
+ return list_first_entry_or_null(&area->free_list[migratetype],
+ struct page, lru);
+}
+
/*
* If this is not the largest possible page, check if the buddy
* of the next-highest order is free. If it is, it's possible

base-commit: 4018ab1f7cec061b8425737328edefebdc0ab832
--
2.35.1



2023-03-19 12:08:08

by Lorenzo Stoakes

[permalink] [raw]
Subject: Re: [PATCH] mm: move get_page_from_free_area() to mm/page_alloc.c

On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> From: "Mike Rapoport (IBM)" <[email protected]>
>
> The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> move it there to reduce noise in include/linux/mmzone.h
>
> Signed-off-by: Mike Rapoport (IBM) <[email protected]>
> ---
> include/linux/mmzone.h | 7 -------
> mm/page_alloc.c | 7 +++++++
> 2 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index 96599cb9eb62..8f5a9e2c722a 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -108,13 +108,6 @@ struct free_area {
> unsigned long nr_free;
> };
>
> -static inline struct page *get_page_from_free_area(struct free_area *area,
> - int migratetype)
> -{
> - return list_first_entry_or_null(&area->free_list[migratetype],
> - struct page, lru);
> -}
> -
> static inline bool free_area_empty(struct free_area *area, int migratetype)
> {
> return list_empty(&area->free_list[migratetype]);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 87d760236dba..2e72fdbdd8db 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1048,6 +1048,13 @@ static inline void del_page_from_free_list(struct page *page, struct zone *zone,
> zone->free_area[order].nr_free--;
> }
>
> +static inline struct page *get_page_from_free_area(struct free_area *area,
> + int migratetype)
> +{
> + return list_first_entry_or_null(&area->free_list[migratetype],
> + struct page, lru);
> +}
> +
> /*
> * If this is not the largest possible page, check if the buddy
> * of the next-highest order is free. If it is, it's possible
>
> base-commit: 4018ab1f7cec061b8425737328edefebdc0ab832
> --
> 2.35.1
>

Good catch, I wonder if there are more functions like this that can be dropped
from headers?

Reviewed-by: Lorenzo Stoakes <[email protected]>

2023-03-19 14:16:24

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: [PATCH] mm: move get_page_from_free_area() to mm/page_alloc.c

On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> From: "Mike Rapoport (IBM)" <[email protected]>
>
> The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> move it there to reduce noise in include/linux/mmzone.h
>
> Signed-off-by: Mike Rapoport (IBM) <[email protected]>

Acked-by: Kirill A. Shutemov <[email protected]>

--
Kiryl Shutsemau / Kirill A. Shutemov

2023-03-19 20:22:31

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [PATCH] mm: move get_page_from_free_area() to mm/page_alloc.c

On Sun, Mar 19, 2023 at 12:07:43PM +0000, Lorenzo Stoakes wrote:
> On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <[email protected]>
> >
> > The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> > move it there to reduce noise in include/linux/mmzone.h

Reviewed-by: Matthew Wilcox (Oracle) <[email protected]>

> Good catch, I wonder if there are more functions like this that can be dropped
> from headers?

I don't think anything outside mm/ has any reason to see 'struct
free_area'. Unfortunately, it's a field in struct zone, so moving
it out of mmzone.h will be hard (unless we can move struct zone out of
mmzone.h?)

free_area_empty() can move to mm/internal.h though

2023-03-19 20:52:26

by Mike Rapoport

[permalink] [raw]
Subject: Re: [PATCH] mm: move get_page_from_free_area() to mm/page_alloc.c

On Sun, Mar 19, 2023 at 08:22:14PM +0000, Matthew Wilcox wrote:
> On Sun, Mar 19, 2023 at 12:07:43PM +0000, Lorenzo Stoakes wrote:
> > On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> > > From: "Mike Rapoport (IBM)" <[email protected]>
> > >
> > > The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> > > move it there to reduce noise in include/linux/mmzone.h
>
> Reviewed-by: Matthew Wilcox (Oracle) <[email protected]>
>
> > Good catch, I wonder if there are more functions like this that can be dropped
> > from headers?
>
> I don't think anything outside mm/ has any reason to see 'struct
> free_area'. Unfortunately, it's a field in struct zone, so moving
> it out of mmzone.h will be hard (unless we can move struct zone out of
> mmzone.h?)

Seems possible but not trivial.

> free_area_empty() can move to mm/internal.h though

Yes.

--
Sincerely yours,
Mike.