Re: [PATCH mmotm v1] mm/hwpoison: disable pcp for page_handle_poison()
From: David Hildenbrand
Date: Thu Jun 17 2021 - 05:28:55 EST
On 17.06.21 11:26, Naoya Horiguchi wrote:
From: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>
Recent changes by patch "mm/page_alloc: allow high-order pages to be
stored on the per-cpu lists" makes kernels determine whether to use pcp
by pcp_allowed_order(), which breaks soft-offline for hugetlb pages.
Soft-offline dissolves a migration source page, then removes it from
buddy free list, so it's assumed that any subpage of the soft-offlined
hugepage are recognized as a buddy page just after returning from
dissolve_free_huge_page(). pcp_allowed_order() returns true for
hugetlb, so this assumption is no longer true.
So disable pcp during dissolve_free_huge_page() and
take_page_off_buddy() to prevent soft-offlined hugepages from linking to
pcp lists. Soft-offline should not be common events so the impact on
performance should be minimal. And I think that the optimization of
Mel's patch could benefit to hugetlb so zone_pcp_disable() is called
only in hwpoison context.
Mel, Oscar, does alloc_contig_range() now have similar issues or is it
avoided because the pageblock(s) are set MIGRATE_ISOLATE?
--
Thanks,
David / dhildenb