This series allows the memory_region_register_iommu_notifier() to fail. As of now, when a MAP notifier is attempted to be registered along with SMMUv3, Intel iommu without caching mode or AMD IOMMU, we exit in the IOMMU MR notify_flag_changed() callback. In case of VFIO assigned device hotplug, this could be handled more nicely directly within the VFIO code, simply rejecting the hotplug without exiting. This is what the series achieves by handling the memory_region_register_iommu_notifier() returned value.
Best Regards Eric This series can be found at: https://github.com/eauger/qemu/tree/v4.1.0_register_iommu_notifier_fail_v2 History: v1 -> v2: - Intel IOMMU now handles the problem differently with machine init done notifier and machine hotplug allowed hook. - use assert(!ret) - message rewording in SMMUv3 Follow-up of "VFIO/SMMUv3: Fail on VFIO/HW nested paging detection" https://patchew.org/QEMU/[email protected]/ Eric Auger (5): memory: allow memory_region_register_iommu_notifier() to fail vfio/common: Handle memory_region_register_iommu_notifier() failure exec: assert on memory_region_register_iommu_notifier() failure vhost: assert on memory_region_register_iommu_notifier() failure amd_iommu: Let amdvi_iommu_notify_flag_changed() fail exec.c | 6 ++++-- hw/arm/smmuv3.c | 12 +++++++----- hw/i386/amd_iommu.c | 9 +++++---- hw/i386/intel_iommu.c | 7 ++++--- hw/ppc/spapr_iommu.c | 7 ++++--- hw/vfio/common.c | 8 ++++++-- hw/virtio/vhost.c | 5 +++-- include/exec/memory.h | 18 +++++++++++++----- memory.c | 28 ++++++++++++++++++---------- 9 files changed, 64 insertions(+), 36 deletions(-) -- 2.20.1
