From a2729a240bd67b7b26b9413a43787dab389e578e Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Mon, 10 Oct 2016 10:50:30 +0200 Subject: [PATCH] Fix interrupt endpoints not working with network/spice USB redirection on guest with an emulated xhci controller (rhbz#1382331) --- qemu-2.7.0-usb-redirect-wakeup.patch | 29 ++++++++++++++++++++++++++++ qemu.spec | 8 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 qemu-2.7.0-usb-redirect-wakeup.patch diff --git a/qemu-2.7.0-usb-redirect-wakeup.patch b/qemu-2.7.0-usb-redirect-wakeup.patch new file mode 100644 index 0000000..e8e4a47 --- /dev/null +++ b/qemu-2.7.0-usb-redirect-wakeup.patch @@ -0,0 +1,29 @@ +diff -up qemu-2.7.0/hw/usb/redirect.c~ qemu-2.7.0/hw/usb/redirect.c +--- qemu-2.7.0/hw/usb/redirect.c~ 2016-09-02 17:34:20.000000000 +0200 ++++ qemu-2.7.0/hw/usb/redirect.c 2016-10-10 09:18:35.319562664 +0200 +@@ -2036,18 +2036,22 @@ static void usbredir_interrupt_packet(vo + } + + if (ep & USB_DIR_IN) { ++ bool q_was_empty; ++ + if (dev->endpoint[EP2I(ep)].interrupt_started == 0) { + DPRINTF("received int packet while not started ep %02X\n", ep); + free(data); + return; + } + +- if (QTAILQ_EMPTY(&dev->endpoint[EP2I(ep)].bufpq)) { +- usb_wakeup(usb_ep_get(&dev->dev, USB_TOKEN_IN, ep & 0x0f), 0); +- } ++ q_was_empty = QTAILQ_EMPTY(&dev->endpoint[EP2I(ep)].bufpq); + + /* bufp_alloc also adds the packet to the ep queue */ + bufp_alloc(dev, data, data_len, interrupt_packet->status, ep, data); ++ ++ if (q_was_empty) { ++ usb_wakeup(usb_ep_get(&dev->dev, USB_TOKEN_IN, ep & 0x0f), 0); ++ } + } else { + /* + * We report output interrupt packets as completed directly upon diff --git a/qemu.spec b/qemu.spec index 32cf404..db22bae 100644 --- a/qemu.spec +++ b/qemu.spec @@ -68,7 +68,7 @@ Summary: QEMU is a FAST! processor emulator Name: qemu Version: 2.7.0 -Release: 2%{?rcrel}%{?dist} +Release: 3%{?rcrel}%{?dist} Epoch: 2 License: GPLv2+ and LGPLv2+ and BSD Group: Development/Tools @@ -100,6 +100,8 @@ Source20: kvm.conf # /etc/sysctl.d/50-kvm-s390x.conf Source21: 50-kvm-s390x.conf +Patch1: qemu-2.7.0-usb-redirect-wakeup.patch + # documentation deps BuildRequires: texi2html BuildRequires: texinfo @@ -1563,6 +1565,10 @@ getent passwd qemu >/dev/null || \ %changelog +* Mon Oct 10 2016 Hans de Goede - 2:2.7.0-3 +- Fix interrupt endpoints not working with network/spice USB redirection + on guest with an emulated xhci controller (rhbz#1382331) + * Tue Sep 20 2016 Michal Toman - 2:2.7.0-2 - Fix build on MIPS