9ae3a8
From 0808f68d525eca6d44f2f4660c34d953a36ae486 Mon Sep 17 00:00:00 2001
9ae3a8
From: Gerd Hoffmann <kraxel@redhat.com>
9ae3a8
Date: Thu, 12 Sep 2013 09:39:32 +0200
9ae3a8
Subject: [PATCH 04/25] Revert "usb-hub: report status changes only once"
9ae3a8
9ae3a8
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
9ae3a8
Message-id: <1378978772-21612-5-git-send-email-kraxel@redhat.com>
9ae3a8
Patchwork-id: 54340
9ae3a8
O-Subject: [RHEL-7 qemu-kvm PATCH 4/4] Revert "usb-hub: report status changes only once"
9ae3a8
Bugzilla: 1001604
9ae3a8
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9ae3a8
RH-Acked-by: Hans de Goede <hdegoede@redhat.com>
9ae3a8
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
9ae3a8
9ae3a8
This reverts commit a309ee6e0a256f690760abfba44fceaa52a7c2f3.
9ae3a8
9ae3a8
This isn't in line with the usb specification and adds regressions,
9ae3a8
win7 fails to drive the usb hub for example.
9ae3a8
9ae3a8
Was added because it "solved" the issue of hubs interacting badly
9ae3a8
with the xhci host controller.  Now with the root cause being fixed
9ae3a8
in xhci (commit <fixme>) we can revert this one.
9ae3a8
9ae3a8
[ rhel7 note: Damn, forgot to fill in the final commit hash before
9ae3a8
              sending out the upstream pull request.  It's commit
9ae3a8
              4d7a81c06f5f17e019a2d3a18300500bd64f6f40 ]
9ae3a8
9ae3a8
Cc: qemu-stable@nongnu.org
9ae3a8
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
9ae3a8
(cherry picked from commit bdebd6ee81f4d849aa8541c289203e3992450db0)
9ae3a8
---
9ae3a8
 hw/usb/dev-hub.c | 6 +-----
9ae3a8
 1 file changed, 1 insertion(+), 5 deletions(-)
9ae3a8
9ae3a8
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
9ae3a8
---
9ae3a8
 hw/usb/dev-hub.c |    6 +-----
9ae3a8
 1 files changed, 1 insertions(+), 5 deletions(-)
9ae3a8
9ae3a8
diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c
9ae3a8
index 0b71abd..a5f092b 100644
9ae3a8
--- a/hw/usb/dev-hub.c
9ae3a8
+++ b/hw/usb/dev-hub.c
9ae3a8
@@ -33,7 +33,6 @@ typedef struct USBHubPort {
9ae3a8
     USBPort port;
9ae3a8
     uint16_t wPortStatus;
9ae3a8
     uint16_t wPortChange;
9ae3a8
-    uint16_t wPortChange_reported;
9ae3a8
 } USBHubPort;
9ae3a8
 
9ae3a8
 typedef struct USBHubState {
9ae3a8
@@ -468,11 +467,8 @@ static void usb_hub_handle_data(USBDevice *dev, USBPacket *p)
9ae3a8
             status = 0;
9ae3a8
             for(i = 0; i < NUM_PORTS; i++) {
9ae3a8
                 port = &s->ports[i];
9ae3a8
-                if (port->wPortChange &&
9ae3a8
-                    port->wPortChange_reported != port->wPortChange) {
9ae3a8
+                if (port->wPortChange)
9ae3a8
                     status |= (1 << (i + 1));
9ae3a8
-                }
9ae3a8
-                port->wPortChange_reported = port->wPortChange;
9ae3a8
             }
9ae3a8
             if (status != 0) {
9ae3a8
                 for(i = 0; i < n; i++) {
9ae3a8
-- 
9ae3a8
1.7.1
9ae3a8