On Wed, Sep 4, 2024 at 10:00 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > On Wed, Sep 04, 2024 at 09:58:54AM -0700, Jiaqi Yan wrote: > > On Wed, Sep 4, 2024 at 9:43 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > > > On Wed, Sep 04, 2024 at 09:38:22AM -0700, Jiaqi Yan wrote: > > > > On Wed, Sep 4, 2024 at 8:52 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > > > > > > > On Thu, Aug 29, 2024 at 12:21:39PM -0700, Jiaqi Yan wrote: > > > > > > > > > > > I think we still want to attempt to SIGBUS userspace, regardless of > > > > > > doing unmap_mapping_range or not. > > > > > > > > > > IMHO we need to eliminate this path if we actually want to keep things > > > > > mapped. > > > > > > > > > > There is no way to generate the SIGBUS without poking a 4k hole in the > > > > > 1G page, as only that 4k should get SIGBUS, every other byte of the 1G > > > > > is clean. > > > > > > > > Ah, sorry I wasn't clear. The SIGBUS will be only for poisoned PFN; > > > > clean PFNs under the same PUD/PMD for sure don't need any SIGBUS, > > > > which is the whole purpose of not unmapping. > > > > > > You can't get a SIGBUS if the things are still mapped. This is why the > > > SIGBUS flow requires poking a non-present hole around the poisoned > > > memory. > > > > > > So keeping things mapped at 1G also means giving up on SIGBUS. > > > > SIGBUS during page fault is definitely impossible when memory is still > > mapped, but the platform still MCE or SEA in case of poison > > consumption, right? So I wanted to propose new code to SIGBUS (either > > BUS_MCEERR_AR or BUS_OBJERR) as long as the platform notifies the > > kernel in the synchronous poison consumption context, e.g. MCE on X86 > > and SEA on ARM64. > > So you want a SIGBUS that is delivered asynchronously instead of via > the page fault handler? Something like that is sort of what I ment by > "eliminate this path", though I didn't think keeping an async SIGBUS > was an option? Not really, I don't think an SIGBUS *async* to the poison consuming thread is critical, at least not as useful as SIGBUS *sync* to the poison consuming thread. > > Jason