Re: [PATCH] kexec: keep the next kernel off hardware-poisoned pages

Breno Leitao <[email protected]> Wed, 29 Jul 2026 03:17:31 -0700
Newsgroups org.infradead.lists.kexec,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
On Wed, Jul 29, 2026 at 05:33:17PM +0800, Miaohe Lin wrote:

> > +		if (pfn_valid(pfn) && PageHWPoison(pfn_to_page(pfn)))
> 
> Should we use pfn_to_online_page here? I doubt we might meet the same problem
> in [1] if pfn_to_page is used here.

Good catch, thanks -- yes.  An offlined but not removed block is still
pfn_valid() while its struct page is uninitialized, so PageHWPoison()
on it hits VM_BUG_ON_PAGE(PagePoisoned(page)), the same failure as
commit d613f53c83ec ("mm/memory-failure: fix
VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory") fixes.

I'll switch to pfn_to_online_page() in v2:

      for (pfn = PHYS_PFN(start); pfn <= end_pfn; pfn++) {
              struct page *page = pfn_to_online_page(pfn);

              if (page && PageHWPoison(page))
                      return true;
      }

Thanks for the review.
--breno