Re: [PATCH v2 6/6] efi: respect the poisoned pages coming from previous kernel

Breno Leitao <[email protected]>
Newsgroups org.infradead.lists.kexec,org.kernel.vger.linux-efi,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
On Mon, Aug 24, 2026 at 11:32:35AM +0100, Kiryl Shutsemau wrote:
> I wounder if the fix would be to make page allocator consume the table
> and not do memblock_reserve() here? So we would allocate struct pages
> for the memory and poison them on init. And your fix by the link below
> would do the rest.

Makes sense. Probably dropping memblock_reserve() altogether, for the
units and the table, and poisoning the recorded frames at
mm_core_init(), right after memblock_free_all().

Roughly what I have in mind:

        memblock_free_all();
        hwpoison_init_boot();
        mem_init();

and hwpoison_init_boot() drives it from the table, walking the bitmap on
the EFI side where the geometry lives:

        for_each_set_bit(bit, map, nbits) {
                u64 unit = off * BITS_PER_BYTE + bit;
                unsigned long pfn, i;

                pfn = PHYS_PFN(phys_base + unit * unit_size);
                for (i = 0; i < unit_size >> PAGE_SHIFT; i++)
                        hwpoison_boot_pfn(pfn + i);
        }

mm/memory-failure.c gets the per page primitive:

        bool __init hwpoison_boot_pfn(unsigned long pfn)
        {
                struct page *page = pfn_to_online_page(pfn);

                if (!page || PageHWPoison(page))
                        return false;

                if (!is_free_buddy_page(page) || !take_page_off_buddy(page))
                        return false;

                SetPageHWPoison(page);
                page_ref_inc(page);
                atomic_long_inc(&num_poisoned_pages);

                return true;
        }

Yea, this seems better in fact. Let me know if that matches what you
had in mind.

Thanks!
--breno
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.