On 06/06/2011 08:25 AM, Gerd Hoffmann wrote: > > Hi, > >>>> -#if EHCI_DEBUG == 0 >>>> - if (qemu_get_clock_ns(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 >> >> This check was added to per Section 4 of the EHCI spec -- the HC should >> not start transactions that will not be completed before the end of the >> micro-frame. If you remove this what causes the EHCI model to take a >> breather? > > Look at patch #8. That brings a number of state machine changes. One > of them is that the async schedule stops as soon as it notices it walks > in circles (i.e. sees a QH the second time). > >>>> - case EST_FETCHENTRY: >>>> - /* fall through */ >>> >>> Why drop this case too? As I recall that is needed for proper execution. > > The async schedule doesn't pause in fetchentry state any more (also done > by patch #8).
Ok. see that now. David > > cheers, > Gerd >