Re: [PATCH v8 08/15] hugetlb: Use the has_hwpoisoned flag
Gregory Price <[email protected]> Tue, 4 Aug 2026 12:28:06 -0400
| Newsgroups | gmane.linux.file-systems,gmane.linux.kernel.mm |
|---|---|
| Message-ID | <anISVv340bo1l9as@gourry-fedora-PF4VCD3F> |
On Fri, Jul 31, 2026 at 09:07:53PM +0100, Matthew Wilcox (Oracle) wrote: > Other large folios use the has_hwpoisoned flag. Convert hugetlb to match. > This will help us use the per-page hwpoison flag in the future. > > Also introduce a folio_test_huge_poison(). This has exactly the same > meaning as folio_test_has_hwpoisoned() but can be used when we don't have > a reference to the folio containing the page. folio_test_has_hwpoisoned() > can race with folio splitting / reallocation and trip the assertions > in const_folio_flags(). > > This closes a gap where a page in a previously-poisoned hugetlb folio > could be observed to not have the hwpoison bit set. > > Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> one question inline, but this seems straightforward. Reviewed-by: Gregory Price (Meta) <[email protected]> > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 4185a03a45cf..4fab3fbfd430 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -893,14 +893,19 @@ static inline int PageTransCompound(const struct page *page) > TESTPAGEFLAG_FALSE(TransCompound, transcompound) > #endif > > -#if defined(CONFIG_MEMORY_FAILURE) && defined(CONFIG_TRANSPARENT_HUGEPAGE) > +#if defined(CONFIG_MEMORY_FAILURE) && defined(CONFIG_LARGE_FOLIO) > /* > - * PageHasHWPoisoned indicates that at least one subpage is hwpoisoned in the > - * compound page. > + * folio_has_hwpoisoned indicates that at least one page is hwpoisoned in the > + * folio. That page will usually also have the HWPoison flag set, but this > + * is not possible for folios which have HVO (see memory-failure for the > + * scheme used in that case). You probably don't want to call this directly; > + * use folio_has_hwpoisoned_page() instead. > * > * This flag is set by hwpoison handler. Cleared by THP split or free page. > */ Had to google HVO, and didn't see HVO directly mentioned in memory-failure. Maybe worth expanding HVO to its actual definition and a sentence on the quirk. Does "Hugepage Vmapmem Optimization" just report poison for the head and we lose the sub-page poison information in general? ~Gregory