aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/remoteproc/remoteproc.c7
-rw-r--r--drivers/usb/host/ehci-q.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/remoteproc/remoteproc.c b/drivers/remoteproc/remoteproc.c
index 680a701..907fc01 100644
--- a/drivers/remoteproc/remoteproc.c
+++ b/drivers/remoteproc/remoteproc.c
@@ -675,7 +675,8 @@ static void rproc_start(struct rproc *rproc, u64 bootaddr)
pm_runtime_set_autosuspend_delay(dev, rproc->sus_timeout);
pm_runtime_get_noresume(rproc->dev);
pm_runtime_set_active(rproc->dev);
- pm_runtime_enable(rproc->dev);
+ if (!rproc->secure_mode)
+ pm_runtime_enable(rproc->dev);
pm_runtime_mark_last_busy(rproc->dev);
pm_runtime_put_autosuspend(rproc->dev);
#endif
@@ -1340,7 +1341,9 @@ void rproc_put(struct rproc *rproc)
*/
pm_runtime_get_sync(rproc->dev);
pm_runtime_put_noidle(rproc->dev);
- pm_runtime_disable(rproc->dev);
+ if (!rproc->secure_reset)
+ pm_runtime_disable(rproc->dev);
+
pm_runtime_set_suspended(rproc->dev);
#endif
ret = rproc->ops->stop(rproc);
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 2719879..6c6013c 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -498,6 +498,11 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
last = list_entry (qtd->qtd_list.prev,
struct ehci_qtd, qtd_list);
last->hw_next = qtd->hw_next;
+ /*
+ * Make sure the new hw_next pointer is visible
+ * to the HW before freeing the old one
+ */
+ wmb();
}
/* remove qtd; it's recycled after possible urb completion */