]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.2-stable patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 31 Jan 2012 18:36:21 +0000 (10:36 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 31 Jan 2012 18:36:21 +0000 (10:36 -0800)
added patches:
drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
iwlwifi-fix-pci-e-transport-inta-race.patch
jsm-fixed-eeh-recovery-error.patch
serial-amba-pl011-lock-console-writes-against-interrupts.patch
tty-fix-uv-serial-console-regression.patch
usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
usb-gadget-storage-endian-fix.patch
usb-musb-davinci-fix-build-breakage.patch
usb-realtek-cr-fix-autopm-scheduling-while-atomic.patch
usb-usbsevseg-fix-max-length.patch
vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch
xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch
xhci-fix-usb-3.0-device-restart-on-resume.patch

14 files changed:
queue-3.2/drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch [new file with mode: 0644]
queue-3.2/iwlwifi-fix-pci-e-transport-inta-race.patch [new file with mode: 0644]
queue-3.2/jsm-fixed-eeh-recovery-error.patch [new file with mode: 0644]
queue-3.2/serial-amba-pl011-lock-console-writes-against-interrupts.patch [new file with mode: 0644]
queue-3.2/series
queue-3.2/tty-fix-uv-serial-console-regression.patch [new file with mode: 0644]
queue-3.2/usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch [new file with mode: 0644]
queue-3.2/usb-gadget-storage-endian-fix.patch [new file with mode: 0644]
queue-3.2/usb-musb-davinci-fix-build-breakage.patch [new file with mode: 0644]
queue-3.2/usb-realtek-cr-fix-autopm-scheduling-while-atomic.patch [new file with mode: 0644]
queue-3.2/usb-usbsevseg-fix-max-length.patch [new file with mode: 0644]
queue-3.2/vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch [new file with mode: 0644]
queue-3.2/xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch [new file with mode: 0644]
queue-3.2/xhci-fix-usb-3.0-device-restart-on-resume.patch [new file with mode: 0644]

diff --git a/queue-3.2/drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch b/queue-3.2/drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
new file mode 100644 (file)
index 0000000..fa26939
--- /dev/null
@@ -0,0 +1,52 @@
+From 2492c6e6454ff3edb11e273b071a6ea80a199c71 Mon Sep 17 00:00:00 2001
+From: Julia Lawall <Julia.Lawall@lip6.fr>
+Date: Thu, 12 Jan 2012 10:55:13 +0100
+Subject: drivers/usb/host/ehci-fsl.c: add missing iounmap
+
+From: Julia Lawall <Julia.Lawall@lip6.fr>
+
+commit 2492c6e6454ff3edb11e273b071a6ea80a199c71 upstream.
+
+Add missing iounmap in error handling code, in a case where the function
+already preforms iounmap on some other execution path.
+
+A simplified version of the semantic match that finds this problem is as
+follows: (http://coccinelle.lip6.fr/)
+
+// <smpl>
+@@
+expression e;
+statement S,S1;
+int ret;
+@@
+e = \(ioremap\|ioremap_nocache\)(...)
+... when != iounmap(e)
+if (<+...e...+>) S
+... when any
+    when != iounmap(e)
+*if (...)
+   { ... when != iounmap(e)
+     return ...; }
+... when any
+iounmap(e);
+// </smpl>
+
+Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-fsl.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/ehci-fsl.c
++++ b/drivers/usb/host/ehci-fsl.c
+@@ -125,7 +125,7 @@ static int usb_hcd_fsl_probe(const struc
+        */
+       if (pdata->init && pdata->init(pdev)) {
+               retval = -ENODEV;
+-              goto err3;
++              goto err4;
+       }
+       /* Enable USB controller, 83xx or 8536 */
diff --git a/queue-3.2/iwlwifi-fix-pci-e-transport-inta-race.patch b/queue-3.2/iwlwifi-fix-pci-e-transport-inta-race.patch
new file mode 100644 (file)
index 0000000..980de01
--- /dev/null
@@ -0,0 +1,51 @@
+From b49ba04a3a0382e7314d990707c21094c410425a Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Thu, 19 Jan 2012 08:20:57 -0800
+Subject: iwlwifi: fix PCI-E transport "inta" race
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit b49ba04a3a0382e7314d990707c21094c410425a upstream.
+
+When an interrupt comes in, we read the reason
+bits and collect them into "trans_pcie->inta".
+This happens with the spinlock held. However,
+there's a bug resetting this variable -- that
+happens after the spinlock has been released.
+This means that it is possible for interrupts
+to be missed if the reset happens after some
+other interrupt reasons were already added to
+the variable.
+
+I found this by code inspection, looking for a
+reason that we sometimes see random commands
+time out. It seems possible that this causes
+such behaviour, but I can't say for sure right
+now since it happens extremely infrequently on
+my test systems.
+
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
++++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
+@@ -957,11 +957,11 @@ void iwl_irq_tasklet(struct iwl_trans *t
+       }
+ #endif
+-      spin_unlock_irqrestore(&trans->shrd->lock, flags);
+-
+       /* saved interrupt in inta variable now we can reset trans_pcie->inta */
+       trans_pcie->inta = 0;
++      spin_unlock_irqrestore(&trans->shrd->lock, flags);
++
+       /* Now service all interrupt bits discovered above. */
+       if (inta & CSR_INT_BIT_HW_ERR) {
+               IWL_ERR(trans, "Hardware error detected.  Restarting.\n");
diff --git a/queue-3.2/jsm-fixed-eeh-recovery-error.patch b/queue-3.2/jsm-fixed-eeh-recovery-error.patch
new file mode 100644 (file)
index 0000000..a7d0135
--- /dev/null
@@ -0,0 +1,51 @@
+From 26aa38cafae0dbef3b2fe75ea487c83313c36d45 Mon Sep 17 00:00:00 2001
+From: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com>
+Date: Mon, 9 Jan 2012 10:58:06 -0200
+Subject: jsm: Fixed EEH recovery error
+
+From: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com>
+
+commit 26aa38cafae0dbef3b2fe75ea487c83313c36d45 upstream.
+
+There was an error on the jsm driver that would cause it to be unable to
+recover after a second error is detected.
+
+At the first error, the device recovers properly:
+
+[72521.485691] EEH: Detected PCI bus error on device 0003:02:00.0
+[72521.485695] EEH: This PCI device has failed 1 times in the last hour:
+...
+[72532.035693] ttyn3 at MMIO 0x0 (irq = 49) is a jsm
+[72532.105689] jsm: Port 3 added
+
+However, at the second error, it cascades until EEH disables the device:
+
+[72631.229549] Call Trace:
+...
+[72641.725687] jsm: Port 3 added
+[72641.725695] EEH: Detected PCI bus error on device 0003:02:00.0
+[72641.725698] EEH: This PCI device has failed 3 times in the last hour:
+
+It was caused because the PCI state was not being saved after the first
+restore. Therefore, at the second recovery the PCI state would not be
+restored.
+
+Signed-off-by: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com>
+Signed-off-by: Breno Leitao <brenohl@br.ibm.com>
+Acked-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/jsm/jsm_driver.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/tty/serial/jsm/jsm_driver.c
++++ b/drivers/tty/serial/jsm/jsm_driver.c
+@@ -251,6 +251,7 @@ static void jsm_io_resume(struct pci_dev
+       struct jsm_board *brd = pci_get_drvdata(pdev);
+       pci_restore_state(pdev);
++      pci_save_state(pdev);
+       jsm_uart_port_init(brd);
+ }
diff --git a/queue-3.2/serial-amba-pl011-lock-console-writes-against-interrupts.patch b/queue-3.2/serial-amba-pl011-lock-console-writes-against-interrupts.patch
new file mode 100644 (file)
index 0000000..56103c9
--- /dev/null
@@ -0,0 +1,64 @@
+From ef605fdb33883d687cff5ba75095a91b313b4966 Mon Sep 17 00:00:00 2001
+From: Rabin Vincent <rabin.vincent@stericsson.com>
+Date: Tue, 17 Jan 2012 11:52:28 +0100
+Subject: serial: amba-pl011: lock console writes against interrupts
+
+From: Rabin Vincent <rabin.vincent@stericsson.com>
+
+commit ef605fdb33883d687cff5ba75095a91b313b4966 upstream.
+
+Protect against pl011_console_write() and the interrupt for
+the console UART running concurrently on different CPUs.
+
+Otherwise the console_write could spin for a long time
+waiting for the UART to become not busy, while the other
+CPU continuously services UART interrupts and keeps the
+UART busy.
+
+The checks for sysrq and oops_in_progress are taken
+from 8250.c.
+
+Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
+Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
+Reviewed-by: Bibek Basu <bibek.basu@stericsson.com>
+Reviewed-by: Shreshtha Kumar Sahu <shreshthakumar.sahu@stericsson.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/serial/amba-pl011.c |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/drivers/tty/serial/amba-pl011.c
++++ b/drivers/tty/serial/amba-pl011.c
+@@ -1740,9 +1740,19 @@ pl011_console_write(struct console *co,
+ {
+       struct uart_amba_port *uap = amba_ports[co->index];
+       unsigned int status, old_cr, new_cr;
++      unsigned long flags;
++      int locked = 1;
+       clk_enable(uap->clk);
++      local_irq_save(flags);
++      if (uap->port.sysrq)
++              locked = 0;
++      else if (oops_in_progress)
++              locked = spin_trylock(&uap->port.lock);
++      else
++              spin_lock(&uap->port.lock);
++
+       /*
+        *      First save the CR then disable the interrupts
+        */
+@@ -1762,6 +1772,10 @@ pl011_console_write(struct console *co,
+       } while (status & UART01x_FR_BUSY);
+       writew(old_cr, uap->port.membase + UART011_CR);
++      if (locked)
++              spin_unlock(&uap->port.lock);
++      local_irq_restore(flags);
++
+       clk_disable(uap->clk);
+ }
index 4f890cb1d64fbb54901f5b77bbb278c2a3f62142..3a40e9f0490332f08cfa8b48eb81164dbd80f07a 100644 (file)
@@ -47,3 +47,16 @@ usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch
 qcaux-add-more-pantech-uml190-and-uml290-ports.patch
 usb-dwc3-ep0-tidy-up-pending-request-handling.patch
 usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch
+tty-fix-uv-serial-console-regression.patch
+serial-amba-pl011-lock-console-writes-against-interrupts.patch
+jsm-fixed-eeh-recovery-error.patch
+iwlwifi-fix-pci-e-transport-inta-race.patch
+vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch
+usb-realtek-cr-fix-autopm-scheduling-while-atomic.patch
+usb-usbsevseg-fix-max-length.patch
+usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
+usb-gadget-storage-endian-fix.patch
+drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch
+xhci-fix-usb-3.0-device-restart-on-resume.patch
+xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch
+usb-musb-davinci-fix-build-breakage.patch
diff --git a/queue-3.2/tty-fix-uv-serial-console-regression.patch b/queue-3.2/tty-fix-uv-serial-console-regression.patch
new file mode 100644 (file)
index 0000000..da485c5
--- /dev/null
@@ -0,0 +1,70 @@
+From 0eee50af5b13e00b3fb7a5fe8480419a71b8235d Mon Sep 17 00:00:00 2001
+From: Jiri Slaby <jslaby@suse.cz>
+Date: Thu, 12 Jan 2012 22:55:15 +0100
+Subject: TTY: fix UV serial console regression
+
+From: Jiri Slaby <jslaby@suse.cz>
+
+commit 0eee50af5b13e00b3fb7a5fe8480419a71b8235d upstream.
+
+Commit 74c2107759d (serial: Use block_til_ready helper) and its fixup
+3f582b8c110 (serial: fix termios settings in open) introduced a
+regression on UV systems. The serial eventually freezes while being
+used. It's completely unpredictable and sometimes needs a heap of
+traffic to happen first.
+
+To reproduce this, yast installation was used as it turned out to be
+pretty reliable in reproducing. Especially during installation process
+where one doesn't have an SSH daemon running. And no monitor as the HW
+is completely headless. So this was fun to find. Given the machine
+doesn't boot on vanilla before 2.6.36 final. (And the commits above
+are older.)
+
+Unless there is some bad race in the code, the hardware seems to be
+pretty broken. Otherwise pure MSR read should not cause such a bug,
+or?
+
+So to prevent the bug, revert to the old behavior. I.e. read modem
+status only if we really have to -- for non-CLOCAL set serials.
+Non-CLOCAL works on this hardware OK, I tried. See? I don't.
+
+And document that shit.
+
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+References: https://lkml.org/lkml/2011/12/6/573
+References: https://bugzilla.novell.com/show_bug.cgi?id=718518
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/tty/tty_port.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/tty/tty_port.c
++++ b/drivers/tty/tty_port.c
+@@ -227,7 +227,6 @@ int tty_port_block_til_ready(struct tty_
+       int do_clocal = 0, retval;
+       unsigned long flags;
+       DEFINE_WAIT(wait);
+-      int cd;
+       /* block if port is in the process of being closed */
+       if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) {
+@@ -284,11 +283,14 @@ int tty_port_block_til_ready(struct tty_
+                               retval = -ERESTARTSYS;
+                       break;
+               }
+-              /* Probe the carrier. For devices with no carrier detect this
+-                 will always return true */
+-              cd = tty_port_carrier_raised(port);
++              /*
++               * Probe the carrier. For devices with no carrier detect
++               * tty_port_carrier_raised will always return true.
++               * Never ask drivers if CLOCAL is set, this causes troubles
++               * on some hardware.
++               */
+               if (!(port->flags & ASYNC_CLOSING) &&
+-                              (do_clocal || cd))
++                              (do_clocal || tty_port_carrier_raised(port)))
+                       break;
+               if (signal_pending(current)) {
+                       retval = -ERESTARTSYS;
diff --git a/queue-3.2/usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch b/queue-3.2/usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch
new file mode 100644 (file)
index 0000000..ce097e6
--- /dev/null
@@ -0,0 +1,91 @@
+From 37fd37108449d574da11aa9055c5c8afb39ff226 Mon Sep 17 00:00:00 2001
+From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Date: Wed, 21 Dec 2011 10:19:40 +0200
+Subject: usb: gadget: langwell: don't call gadget's disconnect()
+
+From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+
+commit 37fd37108449d574da11aa9055c5c8afb39ff226 upstream.
+
+UDC core will call disconnect() and unbind() for us upon the gadget
+removal, so we should not do it ourselves. Otherwise, a composite
+gadget will explode, for example. Others might too.
+
+This was introduced during conversion to new style gadget in 2c7f0989
+(usb: gadget: langwell: convert to new style).
+
+Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+Cc: linux-usb@vger.kernel.org
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/langwell_udc.c |   18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+--- a/drivers/usb/gadget/langwell_udc.c
++++ b/drivers/usb/gadget/langwell_udc.c
+@@ -1522,8 +1522,7 @@ static void langwell_udc_stop(struct lan
+ /* stop all USB activities */
+-static void stop_activity(struct langwell_udc *dev,
+-              struct usb_gadget_driver *driver)
++static void stop_activity(struct langwell_udc *dev)
+ {
+       struct langwell_ep      *ep;
+       dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
+@@ -1535,9 +1534,9 @@ static void stop_activity(struct langwel
+       }
+       /* report disconnect; the driver is already quiesced */
+-      if (driver) {
++      if (dev->driver) {
+               spin_unlock(&dev->lock);
+-              driver->disconnect(&dev->gadget);
++              dev->driver->disconnect(&dev->gadget);
+               spin_lock(&dev->lock);
+       }
+@@ -1925,11 +1924,10 @@ static int langwell_stop(struct usb_gadg
+       /* stop all usb activities */
+       dev->gadget.speed = USB_SPEED_UNKNOWN;
+-      stop_activity(dev, driver);
+-      spin_unlock_irqrestore(&dev->lock, flags);
+-
+       dev->gadget.dev.driver = NULL;
+       dev->driver = NULL;
++      stop_activity(dev);
++      spin_unlock_irqrestore(&dev->lock, flags);
+       device_remove_file(&dev->pdev->dev, &dev_attr_function);
+@@ -2733,7 +2731,7 @@ static void handle_usb_reset(struct lang
+               dev->bus_reset = 1;
+               /* reset all the queues, stop all USB activities */
+-              stop_activity(dev, dev->driver);
++              stop_activity(dev);
+               dev->usb_state = USB_STATE_DEFAULT;
+       } else {
+               dev_vdbg(&dev->pdev->dev, "device controller reset\n");
+@@ -2741,7 +2739,7 @@ static void handle_usb_reset(struct lang
+               langwell_udc_reset(dev);
+               /* reset all the queues, stop all USB activities */
+-              stop_activity(dev, dev->driver);
++              stop_activity(dev);
+               /* reset ep0 dQH and endptctrl */
+               ep0_reset(dev);
+@@ -3367,7 +3365,7 @@ static int langwell_udc_suspend(struct p
+       spin_lock_irq(&dev->lock);
+       /* stop all usb activities */
+-      stop_activity(dev, dev->driver);
++      stop_activity(dev);
+       spin_unlock_irq(&dev->lock);
+       /* free dTD dma_pool and dQH */
diff --git a/queue-3.2/usb-gadget-storage-endian-fix.patch b/queue-3.2/usb-gadget-storage-endian-fix.patch
new file mode 100644 (file)
index 0000000..14054db
--- /dev/null
@@ -0,0 +1,41 @@
+From a85016390135d577c457876d0e905095600751de Mon Sep 17 00:00:00 2001
+From: Andiry Xu <andiry.xu@amd.com>
+Date: Wed, 4 Jan 2012 15:18:27 +0800
+Subject: usb: gadget: storage: endian fix
+
+From: Andiry Xu <andiry.xu@amd.com>
+
+commit a85016390135d577c457876d0e905095600751de upstream.
+
+Fix some endian issues for storage gadgets.
+
+Signed-off-by: Andiry Xu <andiry.xu@amd.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/storage_common.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/gadget/storage_common.c
++++ b/drivers/usb/gadget/storage_common.c
+@@ -598,16 +598,16 @@ static __maybe_unused struct usb_ss_cap_
+               | USB_5GBPS_OPERATION),
+       .bFunctionalitySupport = USB_LOW_SPEED_OPERATION,
+       .bU1devExitLat =        USB_DEFAULT_U1_DEV_EXIT_LAT,
+-      .bU2DevExitLat =        USB_DEFAULT_U2_DEV_EXIT_LAT,
++      .bU2DevExitLat =        cpu_to_le16(USB_DEFAULT_U2_DEV_EXIT_LAT),
+ };
+ static __maybe_unused struct usb_bos_descriptor fsg_bos_desc = {
+       .bLength =              USB_DT_BOS_SIZE,
+       .bDescriptorType =      USB_DT_BOS,
+-      .wTotalLength =         USB_DT_BOS_SIZE
++      .wTotalLength =         cpu_to_le16(USB_DT_BOS_SIZE
+                               + USB_DT_USB_EXT_CAP_SIZE
+-                              + USB_DT_USB_SS_CAP_SIZE,
++                              + USB_DT_USB_SS_CAP_SIZE),
+       .bNumDeviceCaps =       2,
+ };
diff --git a/queue-3.2/usb-musb-davinci-fix-build-breakage.patch b/queue-3.2/usb-musb-davinci-fix-build-breakage.patch
new file mode 100644 (file)
index 0000000..484b6a9
--- /dev/null
@@ -0,0 +1,39 @@
+From 006896fc612f11bf0624db7814a75d0d5410855f Mon Sep 17 00:00:00 2001
+From: Sekhar Nori <nsekhar@ti.com>
+Date: Wed, 28 Dec 2011 12:02:57 +0530
+Subject: usb: musb: davinci: fix build breakage
+
+From: Sekhar Nori <nsekhar@ti.com>
+
+commit 006896fc612f11bf0624db7814a75d0d5410855f upstream.
+
+Commit 0020afb369859472a461ef4af6410732e929d402 (ARM: mach-davinci:
+remove mach/memory.h) removed mach/memory.h for DaVinci which broke
+DaVinci MUSB build.
+
+mach/memory.h is not actually needed in davinci.c, so remove it.
+While at it, also remove some more machine specific inclulde
+files which are not needed for build.
+
+Tested on DM644x EVM using USB card reader.
+
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/davinci.c |    3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/usb/musb/davinci.c
++++ b/drivers/usb/musb/davinci.c
+@@ -33,9 +33,6 @@
+ #include <linux/platform_device.h>
+ #include <linux/dma-mapping.h>
+-#include <mach/hardware.h>
+-#include <mach/memory.h>
+-#include <asm/gpio.h>
+ #include <mach/cputype.h>
+ #include <asm/mach-types.h>
diff --git a/queue-3.2/usb-realtek-cr-fix-autopm-scheduling-while-atomic.patch b/queue-3.2/usb-realtek-cr-fix-autopm-scheduling-while-atomic.patch
new file mode 100644 (file)
index 0000000..310951f
--- /dev/null
@@ -0,0 +1,34 @@
+From b3ef051db763b640d1ff724b616ffba940896b44 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Thu, 26 Jan 2012 12:29:42 +0100
+Subject: USB: Realtek cr: fix autopm scheduling while atomic
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit b3ef051db763b640d1ff724b616ffba940896b44 upstream.
+
+Resolves:
+https://bugzilla.redhat.com/show_bug.cgi?id=784345
+
+Reported-by: Francis Moreau <francis.moro@gmail.com>
+Reported-and-tested-by: Christian D <chrisudeussen@gmail.com>
+Reported-and-tested-by: Jimmy Dorff <jdorff@phy.duke.edu>
+Reported-and-tested-by: collura@ieee.org
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/realtek_cr.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/storage/realtek_cr.c
++++ b/drivers/usb/storage/realtek_cr.c
+@@ -791,7 +791,7 @@ static void rts51x_suspend_timer_fn(unsi
+                       rts51x_set_stat(chip, RTS51X_STAT_SS);
+                       /* ignore mass storage interface's children */
+                       pm_suspend_ignore_children(&us->pusb_intf->dev, true);
+-                      usb_autopm_put_interface(us->pusb_intf);
++                      usb_autopm_put_interface_async(us->pusb_intf);
+                       US_DEBUGP("%s: RTS51X_STAT_SS 01,"
+                               "intf->pm_usage_cnt:%d, power.usage:%d\n",
+                               __func__,
diff --git a/queue-3.2/usb-usbsevseg-fix-max-length.patch b/queue-3.2/usb-usbsevseg-fix-max-length.patch
new file mode 100644 (file)
index 0000000..e0789af
--- /dev/null
@@ -0,0 +1,32 @@
+From 1097ccebe630170080c41df0edcf88e0626e9c75 Mon Sep 17 00:00:00 2001
+From: Harrison Metzger <harrisonmetz@gmail.com>
+Date: Sun, 15 Jan 2012 08:43:24 -0600
+Subject: USB: usbsevseg: fix max length
+
+From: Harrison Metzger <harrisonmetz@gmail.com>
+
+commit 1097ccebe630170080c41df0edcf88e0626e9c75 upstream.
+
+This changes the max length for the usb seven segment delcom device to 8
+from 6. Delcom has both 6 and 8 variants and having 8 works fine with
+devices which are only 6.
+
+Signed-off-by: Harrison Metzger <harrisonmetz@gmail.com>
+Signed-off-by: Stuart Pook <stuart@acm.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/misc/usbsevseg.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/misc/usbsevseg.c
++++ b/drivers/usb/misc/usbsevseg.c
+@@ -24,7 +24,7 @@
+ #define VENDOR_ID     0x0fc5
+ #define PRODUCT_ID    0x1227
+-#define MAXLEN                6
++#define MAXLEN                8
+ /* table of devices that work with this driver */
+ static const struct usb_device_id id_table[] = {
diff --git a/queue-3.2/vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch b/queue-3.2/vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch
new file mode 100644 (file)
index 0000000..14ac217
--- /dev/null
@@ -0,0 +1,31 @@
+From bf9c05d5b6d19b3e4c9fe21047694e94f48db89b Mon Sep 17 00:00:00 2001
+From: Ryan Mallon <rmallon@gmail.com>
+Date: Sat, 28 Jan 2012 08:51:40 +1100
+Subject: vmwgfx: Fix assignment in vmw_framebuffer_create_handle
+
+From: Ryan Mallon <rmallon@gmail.com>
+
+commit bf9c05d5b6d19b3e4c9fe21047694e94f48db89b upstream.
+
+The assignment of handle in vmw_framebuffer_create_handle doesn't actually do anything useful and is incorrectly assigning an integer value to a pointer argument. It appears that this is a typo and should be dereferencing handle rather than assigning to it directly. This fixes a bug where an undefined handle value is potentially returned to user-space.
+
+Signed-off-by: Ryan Mallon <rmallon@gmail.com>
+Reviewed-by: Jakob Bornecrantz<jakob@vmware.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/vmwgfx/vmwgfx_kms.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+@@ -378,7 +378,7 @@ int vmw_framebuffer_create_handle(struct
+                                 unsigned int *handle)
+ {
+       if (handle)
+-              handle = 0;
++              *handle = 0;
+       return 0;
+ }
diff --git a/queue-3.2/xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch b/queue-3.2/xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch
new file mode 100644 (file)
index 0000000..c16ef0f
--- /dev/null
@@ -0,0 +1,37 @@
+From cf840551a884360841bd3d3ce1ad0868ff0b759a Mon Sep 17 00:00:00 2001
+From: Andiry Xu <andiry.xu@amd.com>
+Date: Wed, 18 Jan 2012 17:47:12 +0800
+Subject: xHCI: Cleanup isoc transfer ring when TD length mismatch found
+
+From: Andiry Xu <andiry.xu@amd.com>
+
+commit cf840551a884360841bd3d3ce1ad0868ff0b759a upstream.
+
+When a TD length mismatch is found during isoc TRB enqueue, it directly
+returns -EINVAL. However, isoc transfer is partially enqueued at this time,
+and the ring should be cleared.
+
+This should be backported to kernels as old as 2.6.36, which contain the
+commit 522989a27c7badb608155b1f1dea3487ed431f74 "xhci: Fix failed
+enqueue in the middle of isoch TD."
+
+Signed-off-by: Andiry Xu <andiry.xu@amd.com>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci-ring.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -3373,7 +3373,8 @@ static int xhci_queue_isoc_tx(struct xhc
+               /* Check TD length */
+               if (running_total != td_len) {
+                       xhci_err(xhci, "ISOC TD length unmatch\n");
+-                      return -EINVAL;
++                      ret = -EINVAL;
++                      goto cleanup;
+               }
+       }
diff --git a/queue-3.2/xhci-fix-usb-3.0-device-restart-on-resume.patch b/queue-3.2/xhci-fix-usb-3.0-device-restart-on-resume.patch
new file mode 100644 (file)
index 0000000..35e2590
--- /dev/null
@@ -0,0 +1,49 @@
+From d0cd5d482b8a6dc92c6c69a5387baf72ea84f23a Mon Sep 17 00:00:00 2001
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Mon, 14 Nov 2011 17:51:39 -0800
+Subject: xhci: Fix USB 3.0 device restart on resume.
+
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+
+commit d0cd5d482b8a6dc92c6c69a5387baf72ea84f23a upstream.
+
+The xHCI hub port code gets passed a zero-based port number by the USB
+core.  It then adds one to in order to find a device slot by port number
+and device speed by calling xhci_find_slot_id_by_port.  That function
+clearly states it requires a one-based port number.  The xHCI port
+status change event handler was using a zero-based port number that it
+got from find_faked_portnum_from_hw_portnum, not a one-based port
+number.  This lead to the doorbells never being rung for a device after
+a resume, or worse, a different device with the same speed having its
+doorbell rung (which could lead to bad power management in the xHCI host
+controller).
+
+This patch should be backported to kernels as old as 2.6.39.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Acked-by: Andiry Xu <andiry.xu@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci-ring.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -1215,6 +1215,7 @@ static void handle_vendor_event(struct x
+  *
+  * Returns a zero-based port number, which is suitable for indexing into each of
+  * the split roothubs' port arrays and bus state arrays.
++ * Add one to it in order to call xhci_find_slot_id_by_port.
+  */
+ static unsigned int find_faked_portnum_from_hw_portnum(struct usb_hcd *hcd,
+               struct xhci_hcd *xhci, u32 port_id)
+@@ -1335,7 +1336,7 @@ static void handle_port_status(struct xh
+                       xhci_set_link_state(xhci, port_array, faked_port_index,
+                                               XDEV_U0);
+                       slot_id = xhci_find_slot_id_by_port(hcd, xhci,
+-                                      faked_port_index);
++                                      faked_port_index + 1);
+                       if (!slot_id) {
+                               xhci_dbg(xhci, "slot_id is zero\n");
+                               goto cleanup;