USB: Enable LPM after a failed probe.
Before a driver is probed, we want to disable USB 3.0 Link Power Management (LPM), in case the driver needs hub-initiated LPM disabled. After the probe finishes, we want to attempt to re-enable LPM, order to balance the LPM ref count. When a probe fails (such as when libusual doesn't want to bind to a USB 3.0 mass storage device), make sure to balance the LPM ref counts by re-enabling LPM. This patch should be backported to kernels as old as 3.5, that contain the commit 8306095fd2c1100e8244c09bf560f97aca5a311d "USB: Disable USB 3.0 LPM in critical sections." Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
ecefbd94b8
commit
d01f87c0ff
@ -367,6 +367,10 @@ static int usb_probe_interface(struct device *dev)
|
|||||||
intf->condition = USB_INTERFACE_UNBOUND;
|
intf->condition = USB_INTERFACE_UNBOUND;
|
||||||
usb_cancel_queued_reset(intf);
|
usb_cancel_queued_reset(intf);
|
||||||
|
|
||||||
|
/* If the LPM disable succeeded, balance the ref counts. */
|
||||||
|
if (!lpm_disable_error)
|
||||||
|
usb_unlocked_enable_lpm(udev);
|
||||||
|
|
||||||
/* Unbound interfaces are always runtime-PM-disabled and -suspended */
|
/* Unbound interfaces are always runtime-PM-disabled and -suspended */
|
||||||
if (driver->supports_autosuspend)
|
if (driver->supports_autosuspend)
|
||||||
pm_runtime_disable(dev);
|
pm_runtime_disable(dev);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user