From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46669) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RDx0y-0003XU-Q5 for qemu-devel@nongnu.org; Wed, 12 Oct 2011 07:30:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RDx0u-0001Q0-R6 for qemu-devel@nongnu.org; Wed, 12 Oct 2011 07:30:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:14142) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RDx0u-0001Pr-HV for qemu-devel@nongnu.org; Wed, 12 Oct 2011 07:30:20 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p9CBUJWx029857 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 Oct 2011 07:30:19 -0400 From: Gerd Hoffmann Date: Wed, 12 Oct 2011 13:30:34 +0200 Message-Id: <1318419034-15287-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH] usb-hid: activate usb tablet / mouse after migration. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann 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. 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 --- 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