Hi Shenming, On Wed, 2 Jun 2021 12:50:26 +0800, Shenming Lu <lushenming@xxxxxxxxxx> wrote: > On 2021/6/2 1:33, Jason Gunthorpe wrote: > > On Tue, Jun 01, 2021 at 08:30:35PM +0800, Lu Baolu wrote: > > > >> The drivers register per page table fault handlers to /dev/ioasid which > >> will then register itself to iommu core to listen and route the per- > >> device I/O page faults. > > > > I'm still confused why drivers need fault handlers at all? > > Essentially it is the userspace that needs the fault handlers, > one case is to deliver the faults to the vIOMMU, and another > case is to enable IOPF on the GPA address space for on-demand > paging, it seems that both could be specified in/through the > IOASID_ALLOC ioctl? > I would think IOASID_BIND_PGTABLE is where fault handler should be registered. There wouldn't be any IO page fault without the binding anyway. I also don't understand why device drivers should register the fault handler, the fault is detected by the pIOMMU and injected to the vIOMMU. So I think it should be the IOASID itself register the handler. > Thanks, > Shenming > Thanks, Jacob