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