Il 13/06/2013 06:19, Andreas Färber ha scritto: > Am 31.05.2013 14:31, schrieb Amos Kong: >> diff --git a/hw/input/ps2.c b/hw/input/ps2.c >> index cdb18e6..fdb9912 100644 >> --- a/hw/input/ps2.c >> +++ b/hw/input/ps2.c >> @@ -615,7 +615,17 @@ static bool ps2_keyboard_repeatstate_needed(void >> *opaque) >> { >> PS2KbdState *s = opaque; >> >> - return s->repeat_period || s->repeat_delay; >> + return s->repeat_period || s->repeat_delay || s->repeat_key || >> s->repeat_timer; >> +} >> + >> +static int ps2_kbd_repeatstate_load(QEMUFile *f, void *opaque, int >> version_id) >> +{ >> + PS2KbdState *s = opaque; >> + qemu_get_timer(f, s->repeat_timer); >> + qemu_mod_timer(s->repeat_timer, qemu_get_clock_ns(vm_clock) + >> + muldiv64(get_ticks_per_sec(), s->repeat_period, >> 1000)); >> + >> + return 0; >> } >> >> static bool ps2_keyboard_ledstate_needed(void *opaque) >> @@ -638,9 +648,12 @@ static const VMStateDescription >> vmstate_ps2_keyboard_repeatstate = { >> .version_id = 3, >> .minimum_version_id = 2, >> .minimum_version_id_old = 2, >> + .load_state_old = ps2_kbd_repeatstate_load, >> .fields = (VMStateField[]) { >> VMSTATE_INT32(repeat_period, PS2KbdState), >> VMSTATE_INT32(repeat_delay, PS2KbdState), >> + VMSTATE_INT32(repeat_key, PS2KbdState), >> + VMSTATE_TIMER(repeat_timer, PS2KbdState), > > You can't just add fields here, they'd need to be specific to a new > version 4. Requested was to make it a subsection instead.
This is already a subsection, and this patch is just a proposal to be squashed in this series (which adds the subsection). But I think Amos is right and only the period/delay need to be migrated. Otherwise, you'll get an endless stream of repeats on the destination. Paolo