• J
    iommu: Add a page fault handler · 33850544
    Jean-Philippe Brucker 提交于
    hulk inclusion
    category: feature
    bugzilla: 14369
    CVE: NA
    -------------------
    
    Some systems allow devices to handle I/O Page Faults in the core mm. For
    example systems implementing the PCI PRI extension or Arm SMMU stall
    model. Infrastructure for reporting these recoverable page faults was
    recently added to the IOMMU core for SVA virtualisation. 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
    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 succeeded, the IOMMU retries the access.
    
    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: NJean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Signed-off-by: NFang Lijun <fanglijun3@huawei.com>
    Reviewed-by: NHanjun Guo <guohanjun@huawei.com>
    Reviewed-by: NZhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    33850544
iommu.h 33.9 KB