On Wed, Aug 28, 2024 at 09:10:34AM -0700, Jiaqi Yan wrote: > On Wed, Aug 28, 2024 at 7:24 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > On Tue, Aug 27, 2024 at 05:42:21PM -0700, Jiaqi Yan wrote: > > > > > Instead of removing the whole pud, can driver or memory_failure do > > > something similar to non-struct-page-version of split_huge_page? So > > > driver doesn't need to re-fault good pages back? > > > > It would be far nicer if we didn't have to poke a hole in a 1G mapping > > just for memory failure reporting. > > If I follow this, which of the following sounds better? 1. remove pud > and rely on the driver to re-fault PFNs that it knows are not poisoned > (what Peter suggested), or 2. keep the pud and allow access to both > good and bad PFNs. In practice I think people will need 2, as breaking up a 1G mapping just because a few bits are bad will destroy the VM performance. For this the expectation would be for the VM to co-operate and not keep causing memory failures, or perhaps for the platform to spare in good memory somehow. > Or provide some knob (configured by ?) so that kernel + driver can > switch between the two? This is also sounding reasonable, especially if we need some alternative protocol to signal userspace about the failed memory besides fault and SIGBUS. Jason