Commit 3b8d7321 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Revert "USB: EHCI: support running URB giveback in tasklet context"

This reverts commit 428aac8a.

This isn't quite ready for 3.12, we need some more EHCI driver changes
that are just now showing up.  So revert this for now, and queue it up
later for 3.13.
Reported-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Cc: Ming Lei <ming.lei@canonical.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 272b98c6
...@@ -669,7 +669,7 @@ static const struct hc_driver ehci_fsl_hc_driver = { ...@@ -669,7 +669,7 @@ static const struct hc_driver ehci_fsl_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_USB2 | HCD_MEMORY | HCD_BH, .flags = HCD_USB2 | HCD_MEMORY,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -43,7 +43,7 @@ static const struct hc_driver ehci_grlib_hc_driver = { ...@@ -43,7 +43,7 @@ static const struct hc_driver ehci_grlib_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -1158,7 +1158,7 @@ static const struct hc_driver ehci_hc_driver = { ...@@ -1158,7 +1158,7 @@ static const struct hc_driver ehci_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -96,7 +96,7 @@ static const struct hc_driver mv_ehci_hc_driver = { ...@@ -96,7 +96,7 @@ static const struct hc_driver mv_ehci_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -51,7 +51,7 @@ static const struct hc_driver ehci_octeon_hc_driver = { ...@@ -51,7 +51,7 @@ static const struct hc_driver ehci_octeon_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -286,7 +286,7 @@ static const struct hc_driver ehci_msp_hc_driver = { ...@@ -286,7 +286,7 @@ static const struct hc_driver ehci_msp_hc_driver = {
#else #else
.irq = ehci_irq, .irq = ehci_irq,
#endif #endif
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -28,7 +28,7 @@ static const struct hc_driver ehci_ppc_of_hc_driver = { ...@@ -28,7 +28,7 @@ static const struct hc_driver ehci_ppc_of_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -71,7 +71,7 @@ static const struct hc_driver ps3_ehci_hc_driver = { ...@@ -71,7 +71,7 @@ static const struct hc_driver ps3_ehci_hc_driver = {
.product_desc = "PS3 EHCI Host Controller", .product_desc = "PS3 EHCI Host Controller",
.hcd_priv_size = sizeof(struct ehci_hcd), .hcd_priv_size = sizeof(struct ehci_hcd),
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
.reset = ps3_ehci_hc_reset, .reset = ps3_ehci_hc_reset,
.start = ehci_run, .start = ehci_run,
.stop = ehci_stop, .stop = ehci_stop,
......
...@@ -247,6 +247,8 @@ static int qtd_copy_status ( ...@@ -247,6 +247,8 @@ static int qtd_copy_status (
static void static void
ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status) ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status)
__releases(ehci->lock)
__acquires(ehci->lock)
{ {
if (usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { if (usb_pipetype(urb->pipe) == PIPE_INTERRUPT) {
/* ... update hc-wide periodic stats */ /* ... update hc-wide periodic stats */
...@@ -272,8 +274,11 @@ ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status) ...@@ -272,8 +274,11 @@ ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status)
urb->actual_length, urb->transfer_buffer_length); urb->actual_length, urb->transfer_buffer_length);
#endif #endif
/* complete() can reenter this HCD */
usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb); usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
spin_unlock (&ehci->lock);
usb_hcd_giveback_urb(ehci_to_hcd(ehci), urb, status); usb_hcd_giveback_urb(ehci_to_hcd(ehci), urb, status);
spin_lock (&ehci->lock);
} }
static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh); static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh);
......
...@@ -55,7 +55,7 @@ const struct hc_driver ehci_sead3_hc_driver = { ...@@ -55,7 +55,7 @@ const struct hc_driver ehci_sead3_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -36,7 +36,7 @@ static const struct hc_driver ehci_sh_hc_driver = { ...@@ -36,7 +36,7 @@ static const struct hc_driver ehci_sh_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_USB2 | HCD_MEMORY | HCD_BH, .flags = HCD_USB2 | HCD_MEMORY,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -61,7 +61,7 @@ static const struct hc_driver ehci_tilegx_hc_driver = { ...@@ -61,7 +61,7 @@ static const struct hc_driver ehci_tilegx_hc_driver = {
* Generic hardware linkage. * Generic hardware linkage.
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* Basic lifecycle operations. * Basic lifecycle operations.
......
...@@ -108,7 +108,7 @@ static const struct hc_driver ehci_w90x900_hc_driver = { ...@@ -108,7 +108,7 @@ static const struct hc_driver ehci_w90x900_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_USB2|HCD_MEMORY|HCD_BH, .flags = HCD_USB2|HCD_MEMORY,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
...@@ -79,7 +79,7 @@ static const struct hc_driver ehci_xilinx_of_hc_driver = { ...@@ -79,7 +79,7 @@ static const struct hc_driver ehci_xilinx_of_hc_driver = {
* generic hardware linkage * generic hardware linkage
*/ */
.irq = ehci_irq, .irq = ehci_irq,
.flags = HCD_MEMORY | HCD_USB2 | HCD_BH, .flags = HCD_MEMORY | HCD_USB2,
/* /*
* basic lifecycle operations * basic lifecycle operations
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment