From 95c33e2484deaa52e541623c6a30fe3558bc8890 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 23 Jun 2011 12:42:18 -0300 Subject: [RHEL6 qemu-kvm PATCH 102/115] usb-ehci: drop EXECUTING checks. RH-Author: Gerd Hoffmann Message-id: <1308832951-8995-103-git-send-email-kraxel@redhat.com> Patchwork-id: 28416 O-Subject: [RHEL-6.2 kvm PATCH 102/115] usb-ehci: drop EXECUTING checks. Bugzilla: 561414 632299 645351 711354 RH-Acked-by: Hans de Goede RH-Acked-by: Jes Sorensen The state machine doesn't stop in EXECUTING state any more when async packets are in flight, so the checks are not needed any more and can be dropped. Also kick out the check for the frame timer. As we don't stop & sleep any more on async packets this is obsolete. Signed-off-by: Gerd Hoffmann (cherry picked from commit d05393071ad4cb72ae69f77f9f61fc451251521f) Conflicts: hw/usb-ehci.c --- hw/usb-ehci.c | 32 ++------------------------------ 1 files changed, 2 insertions(+), 30 deletions(-) Signed-off-by: Eduardo Habkost --- hw/usb-ehci.c | 32 ++------------------------------ 1 files changed, 2 insertions(+), 30 deletions(-) diff --git a/hw/usb-ehci.c b/hw/usb-ehci.c index 7a1163c..11ddf91 100644 --- a/hw/usb-ehci.c +++ b/hw/usb-ehci.c @@ -1437,17 +1437,6 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async) int again = 0; uint32_t entry = ehci_get_fetch_addr(ehci, async); -#if EHCI_DEBUG == 0 - if (qemu_get_clock(vm_clock) / 1000 >= ehci->frame_end_usec) { - if (async) { - DPRINTF("FETCHENTRY: FRAME timer elapsed, exit state machine\n"); - goto out; - } else { - DPRINTF("FETCHENTRY: WARNING " - "- frame timer elapsed during periodic\n"); - } - } -#endif if (entry < 0x1000) { DPRINTF("fetchentry: entry invalid (0x%08x)\n", entry); ehci_set_state(ehci, async, EST_ACTIVE); @@ -1952,12 +1941,6 @@ static void ehci_advance_async_state(EHCIState *ehci) } ehci_set_state(ehci, async, EST_WAITLISTHEAD); - /* fall through */ - - case EST_FETCHENTRY: - /* fall through */ - - case EST_EXECUTING: ehci_advance_state(ehci, async); break; @@ -2010,11 +1993,6 @@ static void ehci_advance_periodic_state(EHCIState *ehci) ehci_advance_state(ehci, async); break; - case EST_EXECUTING: - DPRINTF("PERIODIC state adv for executing\n"); - ehci_advance_state(ehci, async); - break; - default: /* this should only be due to a developer mistake */ fprintf(stderr, "ehci: Bad periodic state %d. " @@ -2063,11 +2041,7 @@ static void ehci_frame_timer(void *opaque) if (frames - i > 10) { skipped_frames++; } else { - // TODO could this cause periodic frames to get skipped if async - // active? - if (ehci_get_state(ehci, 1) != EST_EXECUTING) { - ehci_advance_periodic_state(ehci); - } + ehci_advance_periodic_state(ehci); } ehci->last_run_usec += FRAME_TIMER_USEC; @@ -2082,9 +2056,7 @@ static void ehci_frame_timer(void *opaque) /* Async is not inside loop since it executes everything it can once * called */ - if (ehci_get_state(ehci, 0) != EST_EXECUTING) { - ehci_advance_async_state(ehci); - } + ehci_advance_async_state(ehci); qemu_mod_timer(ehci->frame_timer, expire_time); } -- 1.7.3.2