2023-08-26 08:12:12

by Kemeng Shi

[permalink] [raw]
Subject: [PATCH v2 2/3] mm/page_alloc: remove unnecessary check in break_down_buddy_pages

1. We always have target in range started with next_page and full free
range started with current_buddy.
2. The last splited range size is 1 << low and low should be >= 0, then
size >= 1, then page + size and page will not interleave.
As summary, current_page will not equal to target page.

Signed-off-by: Kemeng Shi <[email protected]>
---
mm/page_alloc.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 88c5f5aea9b0..bb74b40dc195 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -6510,10 +6510,8 @@ static void break_down_buddy_pages(struct zone *zone, struct page *page,
if (set_page_guard(zone, current_buddy, high, migratetype))
continue;

- if (current_buddy != target) {
- add_to_free_list(current_buddy, zone, high, migratetype);
- set_buddy_order(current_buddy, high);
- }
+ add_to_free_list(current_buddy, zone, high, migratetype);
+ set_buddy_order(current_buddy, high);
}
}

--
2.30.0



2023-09-26 17:41:55

by Naoya Horiguchi

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] mm/page_alloc: remove unnecessary check in break_down_buddy_pages

On Sat, Aug 26, 2023 at 11:47:44PM +0800, Kemeng Shi wrote:
> 1. We always have target in range started with next_page and full free
> range started with current_buddy.
> 2. The last splited range size is 1 << low and low should be >= 0, then

s/splited/split/

> size >= 1, then page + size and page will not interleave.

I'm not sure the meaning of "interleave" here, maybe simply meaning
"page + size != page is always true (because size > 0)".

> As summary, current_page will not equal to target page.
>
> Signed-off-by: Kemeng Shi <[email protected]>

But I agree with the summary. So with updating description...

Acked-by: Naoya Horiguchi <[email protected]>

> ---
> mm/page_alloc.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 88c5f5aea9b0..bb74b40dc195 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -6510,10 +6510,8 @@ static void break_down_buddy_pages(struct zone *zone, struct page *page,
> if (set_page_guard(zone, current_buddy, high, migratetype))
> continue;
>
> - if (current_buddy != target) {
> - add_to_free_list(current_buddy, zone, high, migratetype);
> - set_buddy_order(current_buddy, high);
> - }
> + add_to_free_list(current_buddy, zone, high, migratetype);
> + set_buddy_order(current_buddy, high);
> }
> }
>
> --
> 2.30.0
>
>
>