[PATCH v9 06/10] iommu: Add a page fault handler
Jean-Philippe Brucker
jean-philippe at linaro.org
Wed Jan 20 12:43:55 EST 2021
On Tue, Jan 19, 2021 at 01:38:19PM +0000, Jonathan Cameron wrote:
> On Fri, 8 Jan 2021 15:52:14 +0100
> Jean-Philippe Brucker <jean-philippe at linaro.org> wrote:
>
> > Some systems allow devices to handle I/O Page Faults in the core mm. For
> > example systems implementing the PCIe PRI extension or Arm SMMU stall
> > model. Infrastructure for reporting these recoverable page faults was
> > added to the IOMMU core by commit 0c830e6b3282 ("iommu: Introduce device
> > fault report API"). Add a page fault handler for host SVA.
> >
> > IOMMU driver can now instantiate several fault workqueues and link them
> > to IOPF-capable devices. Drivers can choose between a single global
> > workqueue, one per IOMMU device, one per low-level fault queue, one per
> > domain, etc.
> >
> > When it receives a fault event, supposedly in an IRQ handler, the IOMMU
>
> Why "supposedly"? Do you mean "most commonly"
>
> > driver reports the fault using iommu_report_device_fault(), which calls
> > the registered handler. The page fault handler then calls the mm fault
> > handler, and reports either success or failure with iommu_page_response().
> > When the handler succeeds, the IOMMU retries the access.
>
> For PRI that description is perhaps a bit missleading. IIRC the IOMMU
> will only retry when it gets a new ATS query.
>
> >
> > The iopf_param pointer could be embedded into iommu_fault_param. But
> > putting iopf_param into the iommu_param structure allows us not to care
> > about ordering between calls to iopf_queue_add_device() and
> > iommu_register_device_fault_handler().
> >
> > Signed-off-by: Jean-Philippe Brucker <jean-philippe at linaro.org>
>
> One really minor inconsistency inline that made me look twice..
> With or without that tided up FWIW.
>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron at huawei.com>
Thanks! I'll fix these up and resend
Jean
More information about the linux-arm-kernel
mailing list