As of today when a guest is assigned with a host PCI device and
an SMMUv3, VFIO calls memory_region_iommu_replay() default
implementation. This translates the whole address range and
completely stalls the execution. As VFIO/SMMUv3 integration
is not supported yet (it requires SMMUv3 HW nested paging), let's
recognize this situation and fail.
Best Regards
Eric
This series can be found at:
https://github.com/eauger/qemu/tree/v4.1.0_smmu_vfio_fail_v5
History:
v4 -> v5:
- v4 patches: 1, 4, 5 were upstreamed separately
- IOMMU_ATTR_HW_NESTED_PAGING renamed into
IOMMU_ATTR_NEED_HW_NESTED_PAGING
v3 -> v4:
- see individual patches
v2 -> v3:
- squash IOMMU_ATTR_VFIO_NESTED introduction and SMMUv3 usage
- assert when recognizing VFIO/NESTED case
- collect R-bs
v1 -> v2:
- Added "memory: Remove unused memory_region_iommu_replay_all()" &
"hw/arm/smmuv3: Log a guest error when decoding an invalid STE"
- do not attempt to implement replay Cb but rather remove the call
in case it is not needed
- explain why we do not remove other log messages on config decoding
Eric Auger (2):
memory: Add IOMMU_ATTR_NEED_HW_NESTED_PAGING IOMMU memory region
attribute
hw/vfio/common: Fail on VFIO/HW nested paging detection
hw/arm/smmuv3.c | 12 ++++++++++++
hw/vfio/common.c | 10 ++++++++++
include/exec/memory.h | 8 +++++++-
3 files changed, 29 insertions(+), 1 deletion(-)
--
2.20.1