From 0a1ae4abbbbe00de30660df48a8a126f0ab25866 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 20 Mar 2013 15:24:28 -0700 Subject: [PATCH] 3.4-stable patches added patches: revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch --- ...on-t-check-dma-values-in-qh-overlays.patch | 55 +++++++++++++++++++ queue-3.4/series | 1 + 2 files changed, 56 insertions(+) create mode 100644 queue-3.4/revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch create mode 100644 queue-3.4/series diff --git a/queue-3.4/revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch b/queue-3.4/revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch new file mode 100644 index 00000000000..d9f0b0efd4d --- /dev/null +++ b/queue-3.4/revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch @@ -0,0 +1,55 @@ +From foo@baz Wed Mar 20 14:16:12 PDT 2013 +Date: Wed, 20 Mar 2013 14:16:12 -0700 +To: Greg KH +From: Greg Kroah-Hartman +Subject: Revert "USB: EHCI: don't check DMA values in QH overlays" + +This reverts commit 0319f9909ce68a7516dfc8d53400e07168d281a8, which is commit +feca7746d5d9e84b105a613b7f3b6ad00d327372 upstream. + +It shouldn't have gone into this stable release. + +Cc: Alan Stern +Cc: Joseph Salisbury +Cc: Stephen Thirlwall +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-q.c | 18 +++++------------- + 1 file changed, 5 insertions(+), 13 deletions(-) + +--- a/drivers/usb/host/ehci-q.c ++++ b/drivers/usb/host/ehci-q.c +@@ -135,7 +135,7 @@ qh_refresh (struct ehci_hcd *ehci, struc + * qtd is updated in qh_completions(). Update the QH + * overlay here. + */ +- if (qh->hw->hw_token & ACTIVE_BIT(ehci)) { ++ if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) { + qh->hw->hw_qtd_next = qtd->hw_next; + qtd = NULL; + } +@@ -459,19 +459,11 @@ qh_completions (struct ehci_hcd *ehci, s + else if (last_status == -EINPROGRESS && !urb->unlinked) + continue; + +- /* +- * If this was the active qtd when the qh was unlinked +- * and the overlay's token is active, then the overlay +- * hasn't been written back to the qtd yet so use its +- * token instead of the qtd's. After the qtd is +- * processed and removed, the overlay won't be valid +- * any more. +- */ +- if (state == QH_STATE_IDLE && +- qh->qtd_list.next == &qtd->qtd_list && +- (hw->hw_token & ACTIVE_BIT(ehci))) { ++ /* qh unlinked; token in overlay may be most current */ ++ if (state == QH_STATE_IDLE ++ && cpu_to_hc32(ehci, qtd->qtd_dma) ++ == hw->hw_current) { + token = hc32_to_cpu(ehci, hw->hw_token); +- hw->hw_token &= ~ACTIVE_BIT(ehci); + + /* An unlink may leave an incomplete + * async transaction in the TT buffer. diff --git a/queue-3.4/series b/queue-3.4/series new file mode 100644 index 00000000000..d7691f3d817 --- /dev/null +++ b/queue-3.4/series @@ -0,0 +1 @@ +revert-usb-ehci-don-t-check-dma-values-in-qh-overlays.patch -- 2.47.3