[PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt

Eric Auger posted 5 patches 5 months, 1 week ago
Maintainers: Peter Maydell <peter.maydell@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>
[PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt
Posted by Eric Auger 5 months, 1 week ago
We may be miss some NV related GIC register save/restore. Until
we complete the study, let's add a migration blocker when the
maintenance IRQ is set.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/intc/arm_gicv3_kvm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
index b30aac7aee..fccb3886bf 100644
--- a/hw/intc/arm_gicv3_kvm.c
+++ b/hw/intc/arm_gicv3_kvm.c
@@ -827,8 +827,16 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp)
     }
 
     if (s->maint_irq) {
+        Error *kvm_nv_migration_blocker = NULL;
         int ret;
 
+        error_setg(&kvm_nv_migration_blocker,
+                       "Live migration disabled due to KVM nested virt enabled");
+        if (migrate_add_blocker(&kvm_nv_migration_blocker, errp)) {
+            error_free(kvm_nv_migration_blocker);
+            return;
+        }
+
         ret = kvm_device_check_attr(s->dev_fd,
                                     KVM_DEV_ARM_VGIC_GRP_MAINT_IRQ, 0);
         if (!ret) {
-- 
2.49.0
Re: [PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt
Posted by Philippe Mathieu-Daudé 5 months, 1 week ago
On 7/7/25 18:40, Eric Auger wrote:
> We may be miss some NV related GIC register save/restore. Until
> we complete the study, let's add a migration blocker when the
> maintenance IRQ is set.
> 
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>   hw/intc/arm_gicv3_kvm.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
> index b30aac7aee..fccb3886bf 100644
> --- a/hw/intc/arm_gicv3_kvm.c
> +++ b/hw/intc/arm_gicv3_kvm.c
> @@ -827,8 +827,16 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp)
>       }
>   
>       if (s->maint_irq) {
> +        Error *kvm_nv_migration_blocker = NULL;
>           int ret;
>   
> +        error_setg(&kvm_nv_migration_blocker,
> +                       "Live migration disabled due to KVM nested virt enabled");

(mis-indentation)

> +        if (migrate_add_blocker(&kvm_nv_migration_blocker, errp)) {
> +            error_free(kvm_nv_migration_blocker);
> +            return;
> +        }
> +
>           ret = kvm_device_check_attr(s->dev_fd,
>                                       KVM_DEV_ARM_VGIC_GRP_MAINT_IRQ, 0);
>           if (!ret) {
Re: [PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt
Posted by Eric Auger 5 months, 1 week ago

On 7/10/25 4:04 PM, Philippe Mathieu-Daudé wrote:
> On 7/7/25 18:40, Eric Auger wrote:
>> We may be miss some NV related GIC register save/restore. Until
>> we complete the study, let's add a migration blocker when the
>> maintenance IRQ is set.
>>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>>   hw/intc/arm_gicv3_kvm.c | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
>> index b30aac7aee..fccb3886bf 100644
>> --- a/hw/intc/arm_gicv3_kvm.c
>> +++ b/hw/intc/arm_gicv3_kvm.c
>> @@ -827,8 +827,16 @@ static void kvm_arm_gicv3_realize(DeviceState
>> *dev, Error **errp)
>>       }
>>         if (s->maint_irq) {
>> +        Error *kvm_nv_migration_blocker = NULL;
>>           int ret;
>>   +        error_setg(&kvm_nv_migration_blocker,
>> +                       "Live migration disabled due to KVM nested
>> virt enabled");
>
> (mis-indentation)
Did not notice as checkpatch does not complain.

Eric
>
>> +        if (migrate_add_blocker(&kvm_nv_migration_blocker, errp)) {
>> +            error_free(kvm_nv_migration_blocker);
>> +            return;
>> +        }
>> +
>>           ret = kvm_device_check_attr(s->dev_fd,
>>                                       KVM_DEV_ARM_VGIC_GRP_MAINT_IRQ,
>> 0);
>>           if (!ret) {
>


Re: [PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt
Posted by Philippe Mathieu-Daudé 5 months, 1 week ago
On 10/7/25 16:10, Eric Auger wrote:
> 
> 
> On 7/10/25 4:04 PM, Philippe Mathieu-Daudé wrote:
>> On 7/7/25 18:40, Eric Auger wrote:
>>> We may be miss some NV related GIC register save/restore. Until
>>> we complete the study, let's add a migration blocker when the
>>> maintenance IRQ is set.
>>>
>>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>>> ---
>>>    hw/intc/arm_gicv3_kvm.c | 8 ++++++++
>>>    1 file changed, 8 insertions(+)
>>>
>>> diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
>>> index b30aac7aee..fccb3886bf 100644
>>> --- a/hw/intc/arm_gicv3_kvm.c
>>> +++ b/hw/intc/arm_gicv3_kvm.c
>>> @@ -827,8 +827,16 @@ static void kvm_arm_gicv3_realize(DeviceState
>>> *dev, Error **errp)
>>>        }
>>>          if (s->maint_irq) {
>>> +        Error *kvm_nv_migration_blocker = NULL;
>>>            int ret;
>>>    +        error_setg(&kvm_nv_migration_blocker,
>>> +                       "Live migration disabled due to KVM nested
>>> virt enabled");
>>
>> (mis-indentation)
> Did not notice as checkpatch does not complain.

No worry, it is a simple nudge to Peter for possible maintainer fixup.


Re: [PATCH v9 4/5] hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt
Posted by Peter Maydell 5 months, 1 week ago
On Thu, 10 Jul 2025 at 15:10, Eric Auger <eric.auger@redhat.com> wrote:
>
>
>
> On 7/10/25 4:04 PM, Philippe Mathieu-Daudé wrote:
> > On 7/7/25 18:40, Eric Auger wrote:
> >> We may be miss some NV related GIC register save/restore. Until
> >> we complete the study, let's add a migration blocker when the
> >> maintenance IRQ is set.
> >>
> >> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> >> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> >> ---
> >>   hw/intc/arm_gicv3_kvm.c | 8 ++++++++
> >>   1 file changed, 8 insertions(+)
> >>
> >> diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
> >> index b30aac7aee..fccb3886bf 100644
> >> --- a/hw/intc/arm_gicv3_kvm.c
> >> +++ b/hw/intc/arm_gicv3_kvm.c
> >> @@ -827,8 +827,16 @@ static void kvm_arm_gicv3_realize(DeviceState
> >> *dev, Error **errp)
> >>       }
> >>         if (s->maint_irq) {
> >> +        Error *kvm_nv_migration_blocker = NULL;
> >>           int ret;
> >>   +        error_setg(&kvm_nv_migration_blocker,
> >> +                       "Live migration disabled due to KVM nested
> >> virt enabled");
> >
> > (mis-indentation)
> Did not notice as checkpatch does not complain.

I'll fix the indent in target-arm.next.

thanks
-- PMM