diff --git a/hw/intc/arm_gicv3_its_kvm.c b/hw/intc/arm_gicv3_its_kvm.c index 39903d5..db93558 --- a/hw/intc/arm_gicv3_its_kvm.c +++ b/hw/intc/arm_gicv3_its_kvm.c @@ -84,6 +84,7 @@ static void kvm_arm_its_realize(DeviceState *dev, Error **errp) { GICv3ITSState *s = ARM_GICV3_ITS_COMMON(dev); Error *local_err = NULL; + bool migration_supported = true; s->dev_fd = kvm_create_device(kvm_state, KVM_DEV_TYPE_ARM_VGIC_ITS, false); if (s->dev_fd < 0) { @@ -105,6 +106,7 @@ static void kvm_arm_its_realize(DeviceState *dev, Error **errp) GITS_CTLR)) { error_setg(&s->migration_blocker, "This operating system kernel " "does not support vITS migration"); + migration_supported = false; migrate_add_blocker(s->migration_blocker, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -117,7 +119,8 @@ static void kvm_arm_its_realize(DeviceState *dev, Error **errp) kvm_gsi_direct_mapping = false; kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled(); - qemu_add_vm_change_state_handler(vm_change_state_handler, s); + if (migration_supported) + qemu_add_vm_change_state_handler(vm_change_state_handler, s); }