--- /dev/null
+From b7a7723513dc89f83d6df13206df55d4dc26e825 Mon Sep 17 00:00:00 2001
+From: Sander Eikelenboom <linux@eikelenboom.it>
+Date: Fri, 2 May 2014 15:09:27 +0200
+Subject: ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined
+
+From: Sander Eikelenboom <linux@eikelenboom.it>
+
+commit b7a7723513dc89f83d6df13206df55d4dc26e825 upstream.
+
+This (widely used) construction:
+
+if(printk_ratelimit())
+ dev_dbg()
+
+Causes the ratelimiting to spam the kernel log with the "callbacks suppressed"
+message below, even while the dev_dbg it is supposed to rate limit wouldn't
+print anything because DEBUG is not defined for this device.
+
+[ 533.803964] retire_playback_urb: 852 callbacks suppressed
+[ 538.807930] retire_playback_urb: 852 callbacks suppressed
+[ 543.811897] retire_playback_urb: 852 callbacks suppressed
+[ 548.815745] retire_playback_urb: 852 callbacks suppressed
+[ 553.819826] retire_playback_urb: 852 callbacks suppressed
+
+So use dev_dbg_ratelimited() instead of this construction.
+
+Signed-off-by: Sander Eikelenboom <linux@eikelenboom.it>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/pcm.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/usb/pcm.c
++++ b/sound/usb/pcm.c
+@@ -1419,9 +1419,9 @@ static void retire_playback_urb(struct s
+ * The error should be lower than 2ms since the estimate relies
+ * on two reads of a counter updated every ms.
+ */
+- if (printk_ratelimit() &&
+- abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
+- snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n",
++ if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
++ dev_dbg_ratelimited(&subs->dev->dev,
++ "delay: estimated %d, actual %d\n",
+ est_delay, subs->last_delay);
+
+ if (!subs->running) {
--- /dev/null
+From a5065eb6da55b226661456e6a7435f605df98111 Mon Sep 17 00:00:00 2001
+From: Tim Gardner <tim.gardner@canonical.com>
+Date: Wed, 9 Apr 2014 11:30:44 -0600
+Subject: ALSA: usb-audio: Suppress repetitive debug messages from retire_playback_urb()
+
+From: Tim Gardner <tim.gardner@canonical.com>
+
+commit a5065eb6da55b226661456e6a7435f605df98111 upstream.
+
+BugLink: http://bugs.launchpad.net/bugs/1305133
+
+Malfunctioning or slow devices can cause a flood of dmesg SPAM.
+
+I've ignored checkpatch.pl complaints about the use of printk_ratelimit() in favour
+of prior art in sound/usb/pcm.c.
+
+WARNING: Prefer printk_ratelimited or pr_<level>_ratelimited to printk_ratelimit
++ if (printk_ratelimit() &&
+
+Cc: Jaroslav Kysela <perex@perex.cz>
+Cc: Takashi Iwai <tiwai@suse.de>
+Cc: Eldad Zack <eldad@fogrefinery.com>
+Cc: Daniel Mack <zonque@gmail.com>
+Cc: Clemens Ladisch <clemens@ladisch.de>
+Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/pcm.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/usb/pcm.c
++++ b/sound/usb/pcm.c
+@@ -1419,7 +1419,8 @@ static void retire_playback_urb(struct s
+ * The error should be lower than 2ms since the estimate relies
+ * on two reads of a counter updated every ms.
+ */
+- if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
++ if (printk_ratelimit() &&
++ abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
+ snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n",
+ est_delay, subs->last_delay);
+
--- /dev/null
+From 1ff38c56cbd095c4c0dfa581a859ba3557830f78 Mon Sep 17 00:00:00 2001
+From: Chen Gang <gang.chen.5i5j@gmail.com>
+Date: Mon, 24 Mar 2014 20:17:44 +0800
+Subject: arch/unicore32/mm/alignment.c: include "asm/pgtable.h" to avoid compiling error
+
+From: Chen Gang <gang.chen.5i5j@gmail.com>
+
+commit 1ff38c56cbd095c4c0dfa581a859ba3557830f78 upstream.
+
+Need include "asm/pgtable.h" to include "asm-generic/pgtable-nopmd.h",
+so can let 'pmd_t' defined. The related error with allmodconfig:
+
+ CC arch/unicore32/mm/alignment.o
+ In file included from arch/unicore32/mm/alignment.c:24:
+ arch/unicore32/include/asm/tlbflush.h:135: error: expected .). before .*. token
+ arch/unicore32/include/asm/tlbflush.h:154: error: expected .). before .*. token
+ In file included from arch/unicore32/mm/alignment.c:27:
+ arch/unicore32/mm/mm.h:15: error: expected .=., .,., .;., .sm. or ._attribute__. before .*. token
+ arch/unicore32/mm/mm.h:20: error: expected .=., .,., .;., .sm. or ._attribute__. before .*. token
+ arch/unicore32/mm/mm.h:25: error: expected .=., .,., .;., .sm. or ._attribute__. before .*. token
+ make[1]: *** [arch/unicore32/mm/alignment.o] Error 1
+ make: *** [arch/unicore32/mm] Error 2
+
+Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
+Acked-by: Xuetao Guan <gxt@mprc.pku.edu.cn>
+Signed-off-by: Xuetao Guan <gxt@mprc.pku.edu.cn>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/unicore32/mm/alignment.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/unicore32/mm/alignment.c
++++ b/arch/unicore32/mm/alignment.c
+@@ -21,6 +21,7 @@
+ #include <linux/sched.h>
+ #include <linux/uaccess.h>
+
++#include <asm/pgtable.h>
+ #include <asm/tlbflush.h>
+ #include <asm/unaligned.h>
+
--- /dev/null
+From fbc6c4a13bbfb420eedfdb26a0a859f9c07e8a7b Mon Sep 17 00:00:00 2001
+From: Zhichuang SUN <sunzc522@gmail.com>
+Date: Wed, 21 May 2014 14:13:30 +0800
+Subject: drivers/video/fbdev/fb-puv3.c: Add header files for function unifb_mmap
+
+From: Zhichuang SUN <sunzc522@gmail.com>
+
+commit fbc6c4a13bbfb420eedfdb26a0a859f9c07e8a7b upstream.
+
+Function unifb_mmap calls functions which are defined in linux/mm.h
+and asm/pgtable.h
+
+The related error (for unicore32 with unicore32_defconfig):
+ CC drivers/video/fbdev/fb-puv3.o
+ drivers/video/fbdev/fb-puv3.c: In function 'unifb_mmap':
+ drivers/video/fbdev/fb-puv3.c:646: error: implicit declaration of
+ function 'vm_iomap_memory'
+ drivers/video/fbdev/fb-puv3.c:646: error: implicit declaration of
+ function 'pgprot_noncached'
+
+Signed-off-by: Zhichuang Sun <sunzc522@gmail.com>
+Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
+Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
+Cc: Jingoo Han <jg1.han@samsung.com>
+Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
+Cc: Joe Perches <joe@perches.com>
+Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Cc: linux-fbdev@vger.kernel.org
+Acked-by: Xuetao Guan <gxt@mprc.pku.edu.cn>
+Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/video/fb-puv3.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/video/fb-puv3.c
++++ b/drivers/video/fb-puv3.c
+@@ -18,8 +18,10 @@
+ #include <linux/fb.h>
+ #include <linux/init.h>
+ #include <linux/console.h>
++#include <linux/mm.h>
+
+ #include <asm/sizes.h>
++#include <asm/pgtable.h>
+ #include <mach/hardware.h>
+
+ /* Platform_data reserved for unifb registers. */
+++ /dev/null
-From 9bd359203210efeb5d8f0d81c155079f34b47449 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb@suse.de>
-Date: Wed, 2 Jul 2014 11:35:06 +1000
-Subject: md: make sure GET_ARRAY_INFO ioctl reports correct "clean" status
-
-From: NeilBrown <neilb@suse.de>
-
-commit 9bd359203210efeb5d8f0d81c155079f34b47449 upstream.
-
-If an array has a bitmap, the when we set the "has bitmap" flag we
-incorrectly clear the "is clean" flag.
-
-"is clean" isn't really important when a bitmap is present, but it is
-best to get it right anyway.
-
-Reported-by: George Duffield <forumscollective@gmail.com>
-Link: http://lkml.kernel.org/CAG__1a4MRV6gJL38XLAurtoSiD3rLBTmWpcS5HYvPpSfPR88UQ@mail.gmail.com
-Fixes: 36fa30636fb84b209210299684e1be66d9e58217 (v2.6.14)
-Signed-off-by: NeilBrown <neilb@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/md/md.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -5606,7 +5606,7 @@ static int get_array_info(struct mddev *
- if (mddev->in_sync)
- info.state = (1<<MD_SB_CLEAN);
- if (mddev->bitmap && mddev->bitmap_info.offset)
-- info.state = (1<<MD_SB_BITMAP_PRESENT);
-+ info.state |= (1<<MD_SB_BITMAP_PRESENT);
- info.active_disks = insync;
- info.working_disks = working;
- info.failed_disks = failed;
--- /dev/null
+From 6979f8d28049879e6147767d93ba6732c8bd94f4 Mon Sep 17 00:00:00 2001
+From: James Hogan <james.hogan@imgtec.com>
+Date: Tue, 10 Dec 2013 22:28:04 +0000
+Subject: serial: 8250_dw: Fix LCR workaround regression
+
+From: James Hogan <james.hogan@imgtec.com>
+
+commit 6979f8d28049879e6147767d93ba6732c8bd94f4 upstream.
+
+Commit c49436b657d0 (serial: 8250_dw: Improve unwritable LCR workaround)
+caused a regression. It added a check that the LCR was written properly
+to detect and workaround the busy quirk, but the behaviour of bit 5
+(UART_LCR_SPAR) differs between IP versions 3.00a and 3.14c per the
+docs. On older versions this caused the check to fail and it would
+repeatedly force idle and rewrite the LCR register, causing delays and
+preventing any input from serial being received.
+
+This is fixed by masking out UART_LCR_SPAR before making the comparison.
+
+Signed-off-by: James Hogan <james.hogan@imgtec.com>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Jiri Slaby <jslaby@suse.cz>
+Cc: Tim Kryger <tim.kryger@linaro.org>
+Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
+Cc: Matt Porter <matt.porter@linaro.org>
+Cc: Markus Mayer <markus.mayer@linaro.org>
+Tested-by: Tim Kryger <tim.kryger@linaro.org>
+Tested-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
+Tested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+Cc: Wang Nan <wangnan0@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/serial/8250/8250_dw.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/tty/serial/8250/8250_dw.c
++++ b/drivers/tty/serial/8250/8250_dw.c
+@@ -92,7 +92,8 @@ static void dw8250_serial_out(struct uar
+ if (offset == UART_LCR) {
+ int tries = 1000;
+ while (tries--) {
+- if (value == p->serial_in(p, UART_LCR))
++ unsigned int lcr = p->serial_in(p, UART_LCR);
++ if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
+ return;
+ dw8250_force_idle(p);
+ writeb(value, p->membase + (UART_LCR << p->regshift));
+@@ -121,7 +122,8 @@ static void dw8250_serial_out32(struct u
+ if (offset == UART_LCR) {
+ int tries = 1000;
+ while (tries--) {
+- if (value == p->serial_in(p, UART_LCR))
++ unsigned int lcr = p->serial_in(p, UART_LCR);
++ if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
+ return;
+ dw8250_force_idle(p);
+ writel(value, p->membase + (UART_LCR << p->regshift));
--- /dev/null
+From c49436b657d0a56a6ad90d14a7c3041add7cf64d Mon Sep 17 00:00:00 2001
+From: Tim Kryger <tim.kryger@linaro.org>
+Date: Tue, 1 Oct 2013 10:18:08 -0700
+Subject: serial: 8250_dw: Improve unwritable LCR workaround
+
+From: Tim Kryger <tim.kryger@linaro.org>
+
+commit c49436b657d0a56a6ad90d14a7c3041add7cf64d upstream.
+
+When configured with UART_16550_COMPATIBLE=NO or in versions prior to
+the introduction of this option, the Designware UART will ignore writes
+to the LCR if the UART is busy. The current workaround saves a copy of
+the last written LCR and re-writes it in the ISR for a special interrupt
+that is raised when a write was ignored.
+
+Unfortunately, interrupts are typically disabled prior to performing a
+sequence of register writes that include the LCR so the point at which
+the retry occurs is too late. An example is serial8250_do_set_termios()
+where an ignored LCR write results in the baud divisor not being set and
+instead a garbage character is sent out the transmitter.
+
+Furthermore, since serial_port_out() offers no way to indicate failure,
+a serious effort must be made to ensure that the LCR is actually updated
+before returning back to the caller. This is difficult, however, as a
+UART that was busy during the first attempt is likely to still be busy
+when a subsequent attempt is made unless some extra action is taken.
+
+This updated workaround reads back the LCR after each write to confirm
+that the new value was accepted by the hardware. Should the hardware
+ignore a write, the TX/RX FIFOs are cleared and the receive buffer read
+before attempting to rewrite the LCR out of the hope that doing so will
+force the UART into an idle state. While this may seem unnecessarily
+aggressive, writes to the LCR are used to change the baud rate, parity,
+stop bit, or data length so the data that may be lost is likely not
+important. Admittedly, this is far from ideal but it seems to be the
+best that can be done given the hardware limitations.
+
+Lastly, the revised workaround doesn't touch the LCR in the ISR, so it
+avoids the possibility of a "serial8250: too much work for irq" lock up.
+This problem is rare in real situations but can be reproduced easily by
+wiring up two UARTs and running the following commands.
+
+ # stty -F /dev/ttyS1 echo
+ # stty -F /dev/ttyS2 echo
+ # cat /dev/ttyS1 &
+ [1] 375
+ # echo asdf > /dev/ttyS1
+ asdf
+
+ [ 27.700000] serial8250: too much work for irq96
+ [ 27.700000] serial8250: too much work for irq96
+ [ 27.710000] serial8250: too much work for irq96
+ [ 27.710000] serial8250: too much work for irq96
+ [ 27.720000] serial8250: too much work for irq96
+ [ 27.720000] serial8250: too much work for irq96
+ [ 27.730000] serial8250: too much work for irq96
+ [ 27.730000] serial8250: too much work for irq96
+ [ 27.740000] serial8250: too much work for irq96
+
+Signed-off-by: Tim Kryger <tim.kryger@linaro.org>
+Reviewed-by: Matt Porter <matt.porter@linaro.org>
+Reviewed-by: Markus Mayer <markus.mayer@linaro.org>
+Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+[wangnan: backport to 3.10.43:
+ - adjust context
+ - remove unneeded local var]
+Signed-off-by: Wang Nan <wangnan0@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/serial/8250/8250_dw.c | 42 ++++++++++++++++++++++++++++----------
+ 1 file changed, 32 insertions(+), 10 deletions(-)
+
+--- a/drivers/tty/serial/8250/8250_dw.c
++++ b/drivers/tty/serial/8250/8250_dw.c
+@@ -54,7 +54,6 @@
+
+
+ struct dw8250_data {
+- int last_lcr;
+ int last_mcr;
+ int line;
+ struct clk *clk;
+@@ -73,17 +72,33 @@ static inline int dw8250_modify_msr(stru
+ return value;
+ }
+
++static void dw8250_force_idle(struct uart_port *p)
++{
++ serial8250_clear_and_reinit_fifos(container_of
++ (p, struct uart_8250_port, port));
++ (void)p->serial_in(p, UART_RX);
++}
++
+ static void dw8250_serial_out(struct uart_port *p, int offset, int value)
+ {
+ struct dw8250_data *d = p->private_data;
+
+- if (offset == UART_LCR)
+- d->last_lcr = value;
+-
+ if (offset == UART_MCR)
+ d->last_mcr = value;
+
+ writeb(value, p->membase + (offset << p->regshift));
++
++ /* Make sure LCR write wasn't ignored */
++ if (offset == UART_LCR) {
++ int tries = 1000;
++ while (tries--) {
++ if (value == p->serial_in(p, UART_LCR))
++ return;
++ dw8250_force_idle(p);
++ writeb(value, p->membase + (UART_LCR << p->regshift));
++ }
++ dev_err(p->dev, "Couldn't set LCR to %d\n", value);
++ }
+ }
+
+ static unsigned int dw8250_serial_in(struct uart_port *p, int offset)
+@@ -97,13 +112,22 @@ static void dw8250_serial_out32(struct u
+ {
+ struct dw8250_data *d = p->private_data;
+
+- if (offset == UART_LCR)
+- d->last_lcr = value;
+-
+ if (offset == UART_MCR)
+ d->last_mcr = value;
+
+ writel(value, p->membase + (offset << p->regshift));
++
++ /* Make sure LCR write wasn't ignored */
++ if (offset == UART_LCR) {
++ int tries = 1000;
++ while (tries--) {
++ if (value == p->serial_in(p, UART_LCR))
++ return;
++ dw8250_force_idle(p);
++ writel(value, p->membase + (UART_LCR << p->regshift));
++ }
++ dev_err(p->dev, "Couldn't set LCR to %d\n", value);
++ }
+ }
+
+ static unsigned int dw8250_serial_in32(struct uart_port *p, int offset)
+@@ -115,15 +139,13 @@ static unsigned int dw8250_serial_in32(s
+
+ static int dw8250_handle_irq(struct uart_port *p)
+ {
+- struct dw8250_data *d = p->private_data;
+ unsigned int iir = p->serial_in(p, UART_IIR);
+
+ if (serial8250_handle_irq(p, iir)) {
+ return 1;
+ } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) {
+- /* Clear the USR and write the LCR again. */
++ /* Clear the USR */
+ (void)p->serial_in(p, DW_UART_USR);
+- p->serial_out(p, UART_LCR, d->last_lcr);
+
+ return 1;
+ }
tools-ffs-test-fix-header-values-endianess.patch
tracing-remove-ftrace_stop-start-from-reading-the-trace-file.patch
md-flush-writes-before-starting-a-recovery.patch
-md-make-sure-get_array_info-ioctl-reports-correct-clean-status.patch
irqchip-spear_shirq-fix-interrupt-offset.patch
mmc-rtsx-add-r1-no-crc-mmc-command-type-handle.patch
serial-8250_dw-report-cts-asserted-for-auto-flow.patch
+serial-8250_dw-improve-unwritable-lcr-workaround.patch
+serial-8250_dw-fix-lcr-workaround-regression.patch
+alsa-usb-audio-suppress-repetitive-debug-messages-from-retire_playback_urb.patch
+alsa-usb-audio-prevent-printk-ratelimiting-from-spamming-kernel-log-while-debug-not-defined.patch
+arch-unicore32-mm-alignment.c-include-asm-pgtable.h-to-avoid-compiling-error.patch
+drivers-video-fbdev-fb-puv3.c-add-header-files-for-function-unifb_mmap.patch