@@ -1047,6 +1047,8 @@ static VFIOLegacyContainer *vfio_eeh_as_container(AddressSpace *as)
{
VFIOAddressSpace *space = vfio_get_address_space(as);
VFIOContainer *bcontainer = NULL;
+ const VFIOIOMMUBackendOpsClass *ops = VFIO_IOMMU_BACKEND_OPS_CLASS(
+ object_class_by_name(TYPE_VFIO_IOMMU_BACKEND_LEGACY_OPS));
if (QLIST_EMPTY(&space->containers)) {
/* No containers to act on */
@@ -1055,7 +1057,7 @@ static VFIOLegacyContainer *vfio_eeh_as_container(AddressSpace *as)
bcontainer = QLIST_FIRST(&space->containers);
- if (QLIST_NEXT(bcontainer, next)) {
+ if (QLIST_NEXT(bcontainer, next) || bcontainer->ops != ops) {
/*
* We don't yet have logic to synchronize EEH state across
* multiple containers
IBM EEH is only supported by legacy backend currently, bypass it for IOMMUFD backend. Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> --- hw/vfio/container.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)