On Tue, Sep 06, 2022 at 08:44:56PM +0800, Lu Baolu wrote: > This adds some mechanisms around the iommu_domain so that the I/O page > fault handling framework could route a page fault to the domain and > call the fault handler from it. > > Add pointers to the page fault handler and its private data in struct > iommu_domain. The fault handler will be called with the private data > as a parameter once a page fault is routed to the domain. Any kernel > component which owns an iommu domain could install handler and its > private parameter so that the page fault could be further routed and > handled. > > This also prepares the SVA implementation to be the first consumer of > the per-domain page fault handling model. The I/O page fault handler > for SVA is copied to the SVA file with mmget_not_zero() added before > mmap_read_lock(). > > Suggested-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Reviewed-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> > Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx> > Tested-by: Zhangfei Gao <zhangfei.gao@xxxxxxxxxx> > Tested-by: Tony Zhu <tony.zhu@xxxxxxxxx> > --- > include/linux/iommu.h | 3 ++ > drivers/iommu/iommu-sva-lib.h | 8 +++++ > drivers/iommu/io-pgfault.c | 7 +++++ > drivers/iommu/iommu-sva-lib.c | 58 +++++++++++++++++++++++++++++++++++ > drivers/iommu/iommu.c | 4 +++ > 5 files changed, 80 insertions(+) Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx> Jason