Re: 2.6.39-rcX: ehci HC died during resume

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

 



On Thu, May 5, 2011 at 10:52 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 5 May 2011, Manuel Lauss wrote:
>
>> > The only way usb_hc_died() gets called is if hcd->state is
>> > HC_STATE_HALT, and it gets set to that value when ehci_reset() is
>> > called.  At the end of ehci_hcd_au1xxx_drv_resume(), hcd->state is set
>> > to HC_STATE_SUSPENDED.  Is it possible that an interrupt arrives
>> > between those two assignments?  (But I don't see how the commit would
>> > have affected that...)
>>
>> The EHCI and OHCI controller share an interrupt.  As a test I disabled
>> the OHCI driver, and voila, resume works.  Logs both with and
>> without built-in OHCI below.
>
> Aha -- it does indeed look like a shared interrupt causing problems.
>
> And I see why this didn't show up earlier.  Prior to the commit you
> found, if hcd->state was set to HC_STATE_HALT when an interrupt
> occurred, the interrupt would be ignored.
>
> It looks like the only solution is to remove the test for HC_STATE_HALT
> in usb_hcd_irq(), which means each driver has to call usb_hc_died() at
> the appropriate times.  This patch should do that.  Let's see how it
> works (this is with that as1451 commit in place).

Patch works, suspended/resumed a few times without any problems.
Another issue I noticed up during testing was an oops, usually
in softirq code, right after resume.  With this patch applied or
as1451 reverted it's also gone.

Thanks a lot!
      Manuel Lauss
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux