> @@ -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.