qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] ehci: remove hack


From: Hans de Goede
Subject: Re: [Qemu-devel] [PATCH v2] ehci: remove hack
Date: Tue, 17 Apr 2012 15:34:03 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1

Looks good now:

Acked-by: Hans de Goede <address@hidden>

On 04/17/2012 03:16 PM, Gerd Hoffmann wrote:
To answer the question in the comment removed by this patch:  I think
this was needed because several places in the ehci emulation did not
check the T bit of link entries correctly and thus might have followed
invalid references.  See commit 2a5ff735dc1074171a0cbb1dc228d6d6e907f571

Signed-off-by: Gerd Hoffmann<address@hidden>
---
  hw/usb/hcd-ehci.c |   18 ------------------
  1 files changed, 0 insertions(+), 18 deletions(-)

diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 23631a4..10a5b15 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -133,7 +133,6 @@
  #define NB_MAXINTRATE    8        // Max rate at which controller issues ints
  #define NB_PORTS         6        // Number of downstream ports
  #define BUFF_SIZE        5*4096   // Max bytes to transfer per transaction
-#define MAX_ITERATIONS   20       // Max number of QH before we break the loop
  #define MAX_QH           100      // Max allowable queue heads in a chain

  /*  Internal periodic / asynchronous schedule state machine states
@@ -1931,24 +1930,8 @@ static void ehci_advance_state(EHCIState *ehci,
  {
      EHCIQueue *q = NULL;
      int again;
-    int iter = 0;

      do {
-        if (ehci_get_state(ehci, async) == EST_FETCHQH) {
-            iter++;
-            /* if we are roaming a lot of QH without executing a qTD
-             * something is wrong with the linked list. TO-DO: why is
-             * this hack needed?
-             */
-            assert(iter<  MAX_ITERATIONS);
-#if 0
-            if (iter>  MAX_ITERATIONS) {
-                DPRINTF("\n*** advance_state: bailing on MAX ITERATIONS***\n");
-                ehci_set_state(ehci, async, EST_ACTIVE);
-                break;
-            }
-#endif
-        }
          switch(ehci_get_state(ehci, async)) {
          case EST_WAITLISTHEAD:
              again = ehci_state_waitlisthead(ehci, async);
@@ -1984,7 +1967,6 @@ static void ehci_advance_state(EHCIState *ehci,
              break;

          case EST_EXECUTE:
-            iter = 0;
              again = ehci_state_execute(q, async);
              break;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]