On Wed, Oct 12, 2011 at 19:30, Gerd Hoffmann <kra...@redhat.com> wrote: > qemu uses the ps/2 mouse by default. The usb tablet (or mouse) is > activated as soon as qemu sees some guest activity on the device, > i.e. polling for HID events. That used to work fine for both fresh > boot and migration. It does not fix usb tablet/mouse when starting vm directly from snapshot.
> Remote wakeup support changed the picture though: There will be no > polling after migration in case the guest suspended the usb bus, > waiting for wakeup events. Result is that the ps/2 mouse stays > active. > > Fix this by activating the usb tablet / mouse in post_load() in case > the guest enabled remote wakeup. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > hw/usb-hid.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/hw/usb-hid.c b/hw/usb-hid.c > index 7c564b6..997f828 100644 > --- a/hw/usb-hid.c > +++ b/hw/usb-hid.c > @@ -520,10 +520,21 @@ static int usb_keyboard_initfn(USBDevice *dev) > return usb_hid_initfn(dev, HID_KEYBOARD); > } > > +static int usb_ptr_post_load(void *opaque, int version_id) > +{ > + USBHIDState *s = opaque; > + > + if (s->dev.remote_wakeup) { > + hid_pointer_activate(&s->hid); > + } > + return 0; > +} > + > static const VMStateDescription vmstate_usb_ptr = { > .name = "usb-ptr", > .version_id = 1, > .minimum_version_id = 1, > + .post_load = usb_ptr_post_load, > .fields = (VMStateField []) { > VMSTATE_USB_DEVICE(dev, USBHIDState), > VMSTATE_HID_POINTER_DEVICE(hid, USBHIDState), > -- > 1.7.1 > > >