Re: [PATCH 1/5] mm: Add support for unaccepted memory

From: Dave Hansen
Date: Tue Aug 10 2021 - 14:13:24 EST


> @@ -1001,6 +1004,9 @@ static inline void del_page_from_free_list(struct page *page, struct zone *zone,
> if (page_reported(page))
> __ClearPageReported(page);
>
> + if (PageOffline(page))
> + clear_page_offline(page, order);
> +
> list_del(&page->lru);
> __ClearPageBuddy(page);
> set_page_private(page, 0);

So, this is right in the fast path of the page allocator. It's a
one-time thing per 2M page, so it's not permanent.

*But* there's both a global spinlock and a firmware call hidden in
clear_page_offline(). That's *GOT* to hurt if you were, for instance,
running a benchmark while this code path is being tickled. Not just to

That could be just downright catastrophic for scalability, albeit
temporarily.