Re: 2.6.27-rc4: 90% system time because of khubd, unable to reboot

From: Andrey Borzenkov
Date: Fri Aug 22 2008 - 13:57:50 EST


On Friday 22 August 2008, Alan Stern wrote:
> On Fri, 22 Aug 2008, Andrey Borzenkov wrote:
>
> > > > reverting 38b375d9610e2467cb793a84d17c6f65e44cdb39 fixed it
> > > >
> > >
> > > ... that is:
> > >
> > > commit 38b375d9610e2467cb793a84d17c6f65e44cdb39
> > > Author: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> > > Date: Mon Jul 21 09:56:26 2008 -0400
> > >
> > > USB: OHCI: fix system hang caused by earlier patch
> > >
> > > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> > > Tested by: Andrey Borzenkov <arvidjaar@xxxxxxx>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
> > >
> > > so it apparently used to work for you at that time. What gives?
> > >
> >
> > Well, you should not commit a fix without commiting code that has been
> > fixed first :)
>
> Actually the code to be fixed _was_ committed first -- but then it was
> reverted before the fix was accepted, so the fix was merged without it.
>
> My advice is not to worry about it. That code has been sent once again
> to Linus -- it's not merged yet but presumably it will be soon.
> Certainly before 2.6.27-rc5 appears.
>
> On the other hand, I still have to wonder how the fix could have caused
> your problem without the original patch in place. The fix itself
> should have been totally innocuous.
>

It looks even funnier. Right now I am running with commits
38b375d9610e2467cb793a84d17c6f65e44cdb39 *and*
e872154921a6b5256a3c412dd69158ac0b135176 reverted. I.e. this should be
the state which hopelessly failed in 2.6.26-rc. It seems to be doing
quite well now in 2.6.27-rc.

"git revert e872154921a6b5256a3c412dd69158ac0b135176" gives me this
one liner patch:

commit f3cf9ad86ee76077d1c6be9af7d197aa13ccdff9
Author: Andrey Borzenkov <arvidjaar@xxxxxxx>
Date: Fri Aug 22 21:15:26 2008 +0400

Revert "USB: don't explicitly reenable root-hub status interrupts"

This reverts commit e872154921a6b5256a3c412dd69158ac0b135176.

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 107e1d2..d30f822 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3086,6 +3086,11 @@ static void hub_events(void)
if (!hdev->parent && !hub->busy_bits[0])
usb_enable_root_hub_irq(hdev->bus);

+ /* If this is a root hub, tell the HCD it's okay to
+ * re-enable port-change interrupts now. */
+ if (!hdev->parent && !hub->busy_bits[0])
+ usb_enable_root_hub_irq(hdev->bus);
+
loop_autopm:
/* Allow autosuspend if we're not going to run again */
if (list_empty(&hub->event_list))

Either my git tree is completely botched or most parts were already reverted
before.

So the problem seems to have cured by itself between 2.6.26 and 2.6.27?

Attachment: signature.asc
Description: This is a digitally signed message part.