]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/arm-smmu-v3: Add stall support for platform devices
authorJean-Philippe Brucker <jean-philippe@linaro.org>
Wed, 26 May 2021 16:19:28 +0000 (18:19 +0200)
committerWill Deacon <will@kernel.org>
Tue, 8 Jun 2021 11:35:55 +0000 (12:35 +0100)
commit534b91658da07e67004013403f3229a00cdd245f
treef232a941d223e69724440f0da405ba95cec020f4
parentb242c5b5773cbf939386e666556f997a32158d5b
iommu/arm-smmu-v3: Add stall support for platform devices

The SMMU provides a Stall model for handling page faults in platform
devices. It is similar to PCIe PRI, but doesn't require devices to have
their own translation cache. Instead, faulting transactions are parked
and the OS is given a chance to fix the page tables and retry the
transaction.

Enable stall for devices that support it (opt-in by firmware). When an
event corresponds to a translation error, call the IOMMU fault handler.
If the fault is recoverable, it will call us back to terminate or
continue the stall.

To use stall device drivers need to enable IOMMU_DEV_FEAT_IOPF, which
initializes the fault queue for the device.

Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Link: https://lore.kernel.org/r/20210526161927.24268-4-jean-philippe@linaro.org
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h