--- /dev/null
+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 */
--- /dev/null
+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
+@@ -269,6 +269,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);
+ }
--- /dev/null
+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
+@@ -1733,9 +1733,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
+ */
+@@ -1755,6 +1765,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);
+ }
+
usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch
qcaux-add-more-pantech-uml190-and-uml290-ports.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
+vmwgfx-fix-assignment-in-vmw_framebuffer_create_handle.patch
+usb-usbsevseg-fix-max-length.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
--- /dev/null
+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;
--- /dev/null
+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[] = {
--- /dev/null
+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
+@@ -313,7 +313,7 @@ int vmw_framebuffer_create_handle(struct
+ unsigned int *handle)
+ {
+ if (handle)
+- handle = 0;
++ *handle = 0;
+
+ return 0;
+ }
--- /dev/null
+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
+@@ -3382,7 +3382,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;
+ }
+ }
+
--- /dev/null
+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
+@@ -1218,6 +1218,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)
+@@ -1340,7 +1341,7 @@ static void handle_port_status(struct xh
+ temp |= PORT_LINK_STROBE | XDEV_U0;
+ xhci_writel(xhci, temp, port_array[faked_port_index]);
+ 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;