USB: another ehci_iaa_watchdog fix
This patch, suggested by Alan Stern, fixes the hung USB issues on my notebook from suspend/resume cycles. It does so by eliminating some confusion about the internal state machine associated with unlinking from the EHCI async schedule ring, which caused a recent regression: http://bugzilla.kernel.org/show_bug.cgi?id=10345 Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
49115b7cb1
commit
cdc647a9b7
1 changed files with 3 additions and 2 deletions
|
@ -135,8 +135,6 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
|
||||||
hcd->state = HC_STATE_QUIESCING;
|
hcd->state = HC_STATE_QUIESCING;
|
||||||
}
|
}
|
||||||
ehci->command = ehci_readl(ehci, &ehci->regs->command);
|
ehci->command = ehci_readl(ehci, &ehci->regs->command);
|
||||||
if (ehci->reclaim)
|
|
||||||
end_unlink_async(ehci);
|
|
||||||
ehci_work(ehci);
|
ehci_work(ehci);
|
||||||
|
|
||||||
/* Unlike other USB host controller types, EHCI doesn't have
|
/* Unlike other USB host controller types, EHCI doesn't have
|
||||||
|
@ -180,6 +178,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
|
||||||
ehci_halt (ehci);
|
ehci_halt (ehci);
|
||||||
hcd->state = HC_STATE_SUSPENDED;
|
hcd->state = HC_STATE_SUSPENDED;
|
||||||
|
|
||||||
|
if (ehci->reclaim)
|
||||||
|
end_unlink_async(ehci);
|
||||||
|
|
||||||
/* allow remote wakeup */
|
/* allow remote wakeup */
|
||||||
mask = INTR_MASK;
|
mask = INTR_MASK;
|
||||||
if (!device_may_wakeup(&hcd->self.root_hub->dev))
|
if (!device_may_wakeup(&hcd->self.root_hub->dev))
|
||||||
|
|
Loading…
Reference in a new issue