]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Oct 2014 19:10:03 +0000 (12:10 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Oct 2014 19:10:03 +0000 (12:10 -0700)
added patches:
usb-dwc3-core-fix-order-of-pm-runtime-calls.patch
usb-dwc3-core-fix-ordering-for-phy-suspend.patch

queue-3.14/series
queue-3.14/usb-dwc3-core-fix-order-of-pm-runtime-calls.patch [new file with mode: 0644]
queue-3.14/usb-dwc3-core-fix-ordering-for-phy-suspend.patch [new file with mode: 0644]

index a3c04affbcce57265847478ce5945215a0d80fc4..f789108aaf181ab5858bdcdcde7d7c26b3bacc1d 100644 (file)
@@ -175,3 +175,5 @@ lockd-fix-rpcbind-crash-on-lockd-startup-failure.patch
 lockdep-revert-lockdep-check-in-raw_seqcount_begin.patch
 genhd-fix-leftover-might_sleep-in-blk_free_devt.patch
 usb-dwc3-fix-trb-completion-when-multiple-trbs-are-started.patch
+usb-dwc3-core-fix-order-of-pm-runtime-calls.patch
+usb-dwc3-core-fix-ordering-for-phy-suspend.patch
diff --git a/queue-3.14/usb-dwc3-core-fix-order-of-pm-runtime-calls.patch b/queue-3.14/usb-dwc3-core-fix-order-of-pm-runtime-calls.patch
new file mode 100644 (file)
index 0000000..899ecae
--- /dev/null
@@ -0,0 +1,50 @@
+From fed33afce0eda44a46ae24d93aec1b5198c0bac4 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Tue, 2 Sep 2014 14:57:20 -0500
+Subject: usb: dwc3: core: fix order of PM runtime calls
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit fed33afce0eda44a46ae24d93aec1b5198c0bac4 upstream.
+
+Currently, we disable pm_runtime before all register
+accesses are done, this is dangerous and might lead
+to abort exceptions due to the driver trying to access
+a register which is clocked by a clock which was long
+gated.
+
+Fix that by moving pm_runtime_put_sync() and pm_runtime_disable()
+as the last thing we do before returning from our ->remove()
+method.
+
+Fixes: 72246da (usb: Introduce DesignWare USB3 DRD Driver)
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/usb/dwc3/core.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -586,9 +586,6 @@ static int dwc3_remove(struct platform_d
+       usb_phy_set_suspend(dwc->usb2_phy, 1);
+       usb_phy_set_suspend(dwc->usb3_phy, 1);
+-      pm_runtime_put_sync(&pdev->dev);
+-      pm_runtime_disable(&pdev->dev);
+-
+       dwc3_debugfs_exit(dwc);
+       switch (dwc->dr_mode) {
+@@ -611,6 +608,9 @@ static int dwc3_remove(struct platform_d
+       dwc3_free_event_buffers(dwc);
+       dwc3_core_exit(dwc);
++      pm_runtime_put_sync(&pdev->dev);
++      pm_runtime_disable(&pdev->dev);
++
+       return 0;
+ }
diff --git a/queue-3.14/usb-dwc3-core-fix-ordering-for-phy-suspend.patch b/queue-3.14/usb-dwc3-core-fix-ordering-for-phy-suspend.patch
new file mode 100644 (file)
index 0000000..7b601d9
--- /dev/null
@@ -0,0 +1,47 @@
+From dc99f16f076559235c92d3eb66d03d1310faea08 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Wed, 3 Sep 2014 16:13:37 -0500
+Subject: usb: dwc3: core: fix ordering for PHY suspend
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit dc99f16f076559235c92d3eb66d03d1310faea08 upstream.
+
+We can't suspend the PHYs before dwc3_core_exit_mode()
+has been called, that's because the host and/or device
+sides might still need to communicate with the far end
+link partner.
+
+Fixes: 8ba007a (usb: dwc3: core: enable the USB2 and USB3 phy in probe)
+Suggested-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/usb/dwc3/core.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -583,9 +583,6 @@ static int dwc3_remove(struct platform_d
+ {
+       struct dwc3     *dwc = platform_get_drvdata(pdev);
+-      usb_phy_set_suspend(dwc->usb2_phy, 1);
+-      usb_phy_set_suspend(dwc->usb3_phy, 1);
+-
+       dwc3_debugfs_exit(dwc);
+       switch (dwc->dr_mode) {
+@@ -606,6 +603,10 @@ static int dwc3_remove(struct platform_d
+       dwc3_event_buffers_cleanup(dwc);
+       dwc3_free_event_buffers(dwc);
++
++      usb_phy_set_suspend(dwc->usb2_phy, 1);
++      usb_phy_set_suspend(dwc->usb3_phy, 1);
++
+       dwc3_core_exit(dwc);
+       pm_runtime_put_sync(&pdev->dev);