diff mbox series

[29/50] pckbd: more vmstate_register() from i8042_mm_init() to i8042_mmio_realize()

Message ID 20220522181836.864-30-mark.cave-ayland@ilande.co.uk
State New
Headers show
Series PS2 device QOMification - part 1 | expand

Commit Message

Mark Cave-Ayland May 22, 2022, 6:18 p.m. UTC
Note in this case it is not possible to register a (new) VMStateDescription in
the DeviceClass without breaking migration compatibility for the MIPS magnum
machine.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/input/pckbd.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Hervé Poussineau May 23, 2022, 6:34 a.m. UTC | #1
Hello,

If you want, you can break migration compatibility. I don't see it as a problem.

Hervé

Le 22/05/2022 à 20:18, Mark Cave-Ayland a écrit :
> Note in this case it is not possible to register a (new) VMStateDescription in
> the DeviceClass without breaking migration compatibility for the MIPS magnum
> machine.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>   hw/input/pckbd.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
> index eb77ad193e..7f3578aa4d 100644
> --- a/hw/input/pckbd.c
> +++ b/hw/input/pckbd.c
> @@ -681,6 +681,9 @@ static void i8042_mmio_realize(DeviceState *dev, Error **errp)
>   
>       memory_region_init_io(&s->region, OBJECT(dev), &i8042_mmio_ops, ks,
>                             "i8042", s->size);
> +
> +    /* Note we can't use dc->vmsd without breaking migration compatibility */
> +    vmstate_register(NULL, 0, &vmstate_kbd, ks);
>   }
>   
>   static void i8042_mmio_init(Object *obj)
> @@ -721,8 +724,6 @@ MMIOKBDState *i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
>       s->irq_kbd = kbd_irq;
>       s->irq_mouse = mouse_irq;
>   
> -    vmstate_register(NULL, 0, &vmstate_kbd, s);
> -
>       s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
>       s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
>
Mark Cave-Ayland May 24, 2022, 5:24 p.m. UTC | #2
On 23/05/2022 07:34, Hervé Poussineau wrote:

> Hello,
> 
> If you want, you can break migration compatibility. I don't see it as a problem.
> 
> Hervé

Thanks for suggesting this. Given that migration of the magnum machine was broken for 
a long time until I fixed it recently, I don't think it would be a problem either.

I was considering a similar proposal for lasips2 but was planning to do the migration 
break in the part 2 series as part of the QOM modelling improvements rather than in 
this initial series. I'll update the I8042_MMIO accordingly when my current working 
branch for part 2.

> Le 22/05/2022 à 20:18, Mark Cave-Ayland a écrit :
>> Note in this case it is not possible to register a (new) VMStateDescription in
>> the DeviceClass without breaking migration compatibility for the MIPS magnum
>> machine.
>>
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> ---
>>   hw/input/pckbd.c | 5 +++--
>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
>> index eb77ad193e..7f3578aa4d 100644
>> --- a/hw/input/pckbd.c
>> +++ b/hw/input/pckbd.c
>> @@ -681,6 +681,9 @@ static void i8042_mmio_realize(DeviceState *dev, Error **errp)
>>       memory_region_init_io(&s->region, OBJECT(dev), &i8042_mmio_ops, ks,
>>                             "i8042", s->size);
>> +
>> +    /* Note we can't use dc->vmsd without breaking migration compatibility */
>> +    vmstate_register(NULL, 0, &vmstate_kbd, ks);
>>   }
>>   static void i8042_mmio_init(Object *obj)
>> @@ -721,8 +724,6 @@ MMIOKBDState *i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
>>       s->irq_kbd = kbd_irq;
>>       s->irq_mouse = mouse_irq;
>> -    vmstate_register(NULL, 0, &vmstate_kbd, s);
>> -
>>       s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
>>       s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);


ATB,

Mark.
diff mbox series

Patch

diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index eb77ad193e..7f3578aa4d 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -681,6 +681,9 @@  static void i8042_mmio_realize(DeviceState *dev, Error **errp)
 
     memory_region_init_io(&s->region, OBJECT(dev), &i8042_mmio_ops, ks,
                           "i8042", s->size);
+
+    /* Note we can't use dc->vmsd without breaking migration compatibility */
+    vmstate_register(NULL, 0, &vmstate_kbd, ks);
 }
 
 static void i8042_mmio_init(Object *obj)
@@ -721,8 +724,6 @@  MMIOKBDState *i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
     s->irq_kbd = kbd_irq;
     s->irq_mouse = mouse_irq;
 
-    vmstate_register(NULL, 0, &vmstate_kbd, s);
-
     s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
     s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);