Live migration is not supported when the SMMUv3 accelerator mode is enabled. Add a migration blocker to prevent migration in this configuration.
Reviewed-by: Nicolin Chen <[email protected]> Reviewed-by: Eric Auger <[email protected]> Tested-by: Zhangfei Gao <[email protected]> Reviewed-by: Jonathan Cameron <[email protected]> Tested-by: Eric Auger <[email protected]> Signed-off-by: Shameer Kolothum <[email protected]> --- hw/arm/smmuv3.c | 6 ++++++ include/hw/arm/smmuv3.h | 1 + 2 files changed, 7 insertions(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e301bb467d..2be056d792 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -20,6 +20,7 @@ #include "qemu/bitops.h" #include "hw/core/irq.h" #include "hw/core/sysbus.h" +#include "migration/blocker.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev.h" @@ -1925,6 +1926,11 @@ static void smmu_realize(DeviceState *d, Error **errp) if (s->accel) { smmuv3_accel_init(s); + error_setg(&s->migration_blocker, "Migration not supported with SMMUv3 " + "accelerator mode enabled"); + if (migrate_add_blocker(&s->migration_blocker, errp) < 0) { + return; + } } c->parent_realize(d, &local_err); diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index 5616a8a2be..9c39acd5ca 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -68,6 +68,7 @@ struct SMMUv3State { bool accel; struct SMMUv3AccelState *s_accel; uint64_t msi_gpa; + Error *migration_blocker; }; typedef enum { -- 2.43.0
