On Thu, May 23, 2024 at 05:08:29AM +0200, Oscar Salvador wrote: > On Wed, May 22, 2024 at 05:46:09PM -0400, Peter Xu wrote: > > > Now, ProcessB still has the page mapped, so upon re-accessing it, > > > it will trigger a new MCE event. memory-failure code will see that this > > > > The question is why accessing that hwpoison entry from ProcB triggers an > > MCE. Logically that's a swap entry and it should generate a page fault > > rather than MCE. Then in the pgfault hanlder we don't need that encoded > > pfn as we have vmf->address. > > It would be a swap entry if we reach try_to_umap_one() without trouble. > Then we have the code that converts it: > > ... > if (PageHWPoison(p)) > pteval = swp_entry_to_pte(make_hwpoison_entry(subpage)); > set_{huge_}pte_at > ... > > But maybe we could only do that for ProcA, while ProcB failed to do that, > which means that for ProcA that is a hwpoisoned-swap-entry, but ProcB still > has this page mapped as usual, so if ProcB re-access it, that will not > trigger a fault (because the page is still mapped in its pagetables). But in that case "whether encode pfn in hwpoison swap entry" doesn't matter either.. as it's not yet converted to a swap entry, so the pfn is there. Thanks, -- Peter Xu