On 11/13/12 16:48, Gabriel L. Somlo wrote:
> Gerd,
> 
> On Tue, Nov 13, 2012 at 09:48:10AM +0100, Gerd Hoffmann wrote:
>>> below is what I got running the "-usb -device usb-kbd -device usb-mouse"
>>> command line with EHCI_DEBUG set to 1.
>>
>> This isn't what I ment.  See docs/tracing.txt for how tracepoint work.
>> Wildcards (i.e. 'ehci_*') work on tracepoints.
> 
> Below are the first 100 (of 6516784) ascii lines from the ehci_* trace
> file I collected in the cca. 30 seconds it took to get to the point
> where it's clear OS X boot is stuck and won't be making any further
> progress.
>
> In case you need it, the full (11M xz-compressed) trace file is at
> http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/ehci_trace.xz

The last lines of the log are more useful, which is more than 6500000
lines like this:

usb_ehci_opreg_read 4.767 addr=0x2c str=FRINDEX val=0x0

So macos seems to expect the frame index updating, and probably frame
list rollover interrupts too.  ehci doesn't do that of there is nothing
else to do, to keep the wakeup rate down.

Does the attached patch change anything?

In case it doesn't:  Any change in behavior if you add a usb-storage device?

cheers,
  Gerd
>From 822934d5118c18707a6781e006c35482186f2b12 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kra...@redhat.com>
Date: Tue, 13 Nov 2012 17:20:05 +0100
Subject: [PATCH] ehci: keep the frame timer running in case the guest asked for 
frame list rollover interrupts

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

diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index ee6c9ae..20766d8 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -2209,6 +2209,10 @@ static void ehci_frame_timer(void *opaque)
         ehci->async_stepdown = 0;
     }
 
+    if (ehci->usbintr & USBSTS_FLR) {
+        need_timer++;
+    }
+
     if (need_timer) {
         /* If we've raised int, we speed up the timer, so that we quickly
          * notice any new packets queued up in response */
-- 
1.7.1

Reply via email to