]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Oct 2015 19:19:20 +0000 (12:19 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Oct 2015 19:19:20 +0000 (12:19 -0700)
added patches:
alsa-synth-fix-conflicting-oss-device-registration-on-awe32.patch
asoc-dwc-correct-irq-clear-method.patch
asoc-fix-broken-pxa-soc-support.patch
btrfs-skip-waiting-on-ordered-range-for-special-files.patch
staging-comedi-adl_pci7x3x-fix-digital-output-on-pci-7230.patch

queue-3.10/alsa-synth-fix-conflicting-oss-device-registration-on-awe32.patch [new file with mode: 0644]
queue-3.10/asoc-dwc-correct-irq-clear-method.patch [new file with mode: 0644]
queue-3.10/asoc-fix-broken-pxa-soc-support.patch [new file with mode: 0644]
queue-3.10/btrfs-skip-waiting-on-ordered-range-for-special-files.patch [new file with mode: 0644]
queue-3.10/series
queue-3.10/staging-comedi-adl_pci7x3x-fix-digital-output-on-pci-7230.patch [new file with mode: 0644]

diff --git a/queue-3.10/alsa-synth-fix-conflicting-oss-device-registration-on-awe32.patch b/queue-3.10/alsa-synth-fix-conflicting-oss-device-registration-on-awe32.patch
new file mode 100644 (file)
index 0000000..7dbf8ad
--- /dev/null
@@ -0,0 +1,43 @@
+From 225db5762dc1a35b26850477ffa06e5cd0097243 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 5 Oct 2015 16:55:09 +0200
+Subject: ALSA: synth: Fix conflicting OSS device registration on AWE32
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 225db5762dc1a35b26850477ffa06e5cd0097243 upstream.
+
+When OSS emulation is loaded on ISA SB AWE32 chip, we get now kernel
+warnings like:
+  WARNING: CPU: 0 PID: 2791 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x51/0x80()
+  sysfs: cannot create duplicate filename '/devices/isa/sbawe.0/sound/card0/seq-oss-0-0'
+
+It's because both emux synth and opl3 drivers try to register their
+OSS device object with the same static index number 0.  This hasn't
+been a big problem until the recent rewrite of device management code
+(that exposes sysfs at the same time), but it's been an obvious bug.
+
+This patch works around it just by using a different index number of
+emux synth object.  There can be a more elegant way to fix, but it's
+enough for now, as this code won't be touched so often, in anyway.
+
+Reported-and-tested-by: Michael Shell <list1@michaelshell.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/synth/emux/emux_oss.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/synth/emux/emux_oss.c
++++ b/sound/synth/emux/emux_oss.c
+@@ -69,7 +69,8 @@ snd_emux_init_seq_oss(struct snd_emux *e
+       struct snd_seq_oss_reg *arg;
+       struct snd_seq_device *dev;
+-      if (snd_seq_device_new(emu->card, 0, SNDRV_SEQ_DEV_ID_OSS,
++      /* using device#1 here for avoiding conflicts with OPL3 */
++      if (snd_seq_device_new(emu->card, 1, SNDRV_SEQ_DEV_ID_OSS,
+                              sizeof(struct snd_seq_oss_reg), &dev) < 0)
+               return;
diff --git a/queue-3.10/asoc-dwc-correct-irq-clear-method.patch b/queue-3.10/asoc-dwc-correct-irq-clear-method.patch
new file mode 100644 (file)
index 0000000..6311c28
--- /dev/null
@@ -0,0 +1,35 @@
+From 4873867e5f2bd90faad861dd94865099fc3140f3 Mon Sep 17 00:00:00 2001
+From: Yitian Bu <buyitian@gmail.com>
+Date: Fri, 2 Oct 2015 15:18:41 +0800
+Subject: ASoC: dwc: correct irq clear method
+
+From: Yitian Bu <buyitian@gmail.com>
+
+commit 4873867e5f2bd90faad861dd94865099fc3140f3 upstream.
+
+from Designware I2S datasheet, tx/rx XRUN irq is cleared by
+reading register TOR/ROR, rather than by writing into them.
+
+Signed-off-by: Yitian Bu <yitian.bu@tangramtek.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/dwc/designware_i2s.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/soc/dwc/designware_i2s.c
++++ b/sound/soc/dwc/designware_i2s.c
+@@ -100,10 +100,10 @@ static inline void i2s_clear_irqs(struct
+       if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
+               for (i = 0; i < 4; i++)
+-                      i2s_write_reg(dev->i2s_base, TOR(i), 0);
++                      i2s_read_reg(dev->i2s_base, TOR(i));
+       } else {
+               for (i = 0; i < 4; i++)
+-                      i2s_write_reg(dev->i2s_base, ROR(i), 0);
++                      i2s_read_reg(dev->i2s_base, ROR(i));
+       }
+ }
diff --git a/queue-3.10/asoc-fix-broken-pxa-soc-support.patch b/queue-3.10/asoc-fix-broken-pxa-soc-support.patch
new file mode 100644 (file)
index 0000000..db18929
--- /dev/null
@@ -0,0 +1,82 @@
+From 3c8f7710c1c44fb650bc29b6ef78ed8b60cfaa28 Mon Sep 17 00:00:00 2001
+From: Robert Jarzmik <robert.jarzmik@free.fr>
+Date: Tue, 15 Sep 2015 20:51:31 +0200
+Subject: ASoC: fix broken pxa SoC support
+
+From: Robert Jarzmik <robert.jarzmik@free.fr>
+
+commit 3c8f7710c1c44fb650bc29b6ef78ed8b60cfaa28 upstream.
+
+The previous fix of pxa library support, which was introduced to fix the
+library dependency, broke the previous SoC behavior, where a machine
+code binding pxa2xx-ac97 with a coded relied on :
+ - sound/soc/pxa/pxa2xx-ac97.c
+ - sound/soc/codecs/XXX.c
+
+For example, the mioa701_wm9713.c machine code is currently broken. The
+"select ARM" statement wrongly selects the soc/arm/pxa2xx-ac97 for
+compilation, as per an unfortunate fate SND_PXA2XX_AC97 is both declared
+in sound/arm/Kconfig and sound/soc/pxa/Kconfig.
+
+Fix this by ensuring that SND_PXA2XX_SOC correctly triggers the correct
+pxa2xx-ac97 compilation.
+
+Fixes: 846172dfe33c ("ASoC: fix SND_PXA2XX_LIB Kconfig warning")
+Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/arm/Kconfig     |   15 ++++++++-------
+ sound/soc/pxa/Kconfig |    2 --
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+--- a/sound/arm/Kconfig
++++ b/sound/arm/Kconfig
+@@ -9,6 +9,14 @@ menuconfig SND_ARM
+         Drivers that are implemented on ASoC can be found in
+         "ALSA for SoC audio support" section.
++config SND_PXA2XX_LIB
++      tristate
++      select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97
++      select SND_DMAENGINE_PCM
++
++config SND_PXA2XX_LIB_AC97
++      bool
++
+ if SND_ARM
+ config SND_ARMAACI
+@@ -21,13 +29,6 @@ config SND_PXA2XX_PCM
+       tristate
+       select SND_PCM
+-config SND_PXA2XX_LIB
+-      tristate
+-      select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97
+-
+-config SND_PXA2XX_LIB_AC97
+-      bool
+-
+ config SND_PXA2XX_AC97
+       tristate "AC97 driver for the Intel PXA2xx chip"
+       depends on ARCH_PXA
+--- a/sound/soc/pxa/Kconfig
++++ b/sound/soc/pxa/Kconfig
+@@ -1,7 +1,6 @@
+ config SND_PXA2XX_SOC
+       tristate "SoC Audio for the Intel PXA2xx chip"
+       depends on ARCH_PXA
+-      select SND_ARM
+       select SND_PXA2XX_LIB
+       help
+         Say Y or M if you want to add support for codecs attached to
+@@ -24,7 +23,6 @@ config SND_PXA2XX_AC97
+ config SND_PXA2XX_SOC_AC97
+       tristate
+       select AC97_BUS
+-      select SND_ARM
+       select SND_PXA2XX_LIB_AC97
+       select SND_SOC_AC97_BUS
diff --git a/queue-3.10/btrfs-skip-waiting-on-ordered-range-for-special-files.patch b/queue-3.10/btrfs-skip-waiting-on-ordered-range-for-special-files.patch
new file mode 100644 (file)
index 0000000..e28fe98
--- /dev/null
@@ -0,0 +1,49 @@
+From a30e577c96f59b1e1678ea5462432b09bf7d5cbc Mon Sep 17 00:00:00 2001
+From: Jeff Mahoney <jeffm@suse.com>
+Date: Fri, 11 Sep 2015 21:44:17 -0400
+Subject: btrfs: skip waiting on ordered range for special files
+
+From: Jeff Mahoney <jeffm@suse.com>
+
+commit a30e577c96f59b1e1678ea5462432b09bf7d5cbc upstream.
+
+In btrfs_evict_inode, we properly truncate the page cache for evicted
+inodes but then we call btrfs_wait_ordered_range for every inode as well.
+It's the right thing to do for regular files but results in incorrect
+behavior for device inodes for block devices.
+
+filemap_fdatawrite_range gets called with inode->i_mapping which gets
+resolved to the block device inode before getting passed to
+wbc_attach_fdatawrite_inode and ultimately to inode_to_bdi.  What happens
+next depends on whether there's an open file handle associated with the
+inode.  If there is, we write to the block device, which is unexpected
+behavior.  If there isn't, we through normally and inode->i_data is used.
+We can also end up racing against open/close which can result in crashes
+when i_mapping points to a block device inode that has been closed.
+
+Since there can't be any page cache associated with special file inodes,
+it's safe to skip the btrfs_wait_ordered_range call entirely and avoid
+the problem.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=100911
+Tested-by: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
+Signed-off-by: Jeff Mahoney <jeffm@suse.com>
+Reviewed-by: Filipe Manana <fdmanana@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/btrfs/inode.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -4650,7 +4650,8 @@ void btrfs_evict_inode(struct inode *ino
+               goto no_delete;
+       }
+       /* do we really want it for ->i_nlink > 0 and zero btrfs_root_refs? */
+-      btrfs_wait_ordered_range(inode, 0, (u64)-1);
++      if (!special_file(inode->i_mode))
++              btrfs_wait_ordered_range(inode, 0, (u64)-1);
+       if (root->fs_info->log_root_recovering) {
+               BUG_ON(test_bit(BTRFS_INODE_HAS_ORPHAN_ITEM,
index de5e7077b526a3cc4ff54e95faf34708c0eb4130..a7755c88f3cd3ded2f9cf0fcf0f04a63dc10b482 100644 (file)
@@ -10,3 +10,8 @@ x86-xen-support-kexec-kdump-in-hvm-guests-by-doing-a-soft-reset.patch
 spi-fix-documentation-of-spi_alloc_master.patch
 spi-spi-pxa2xx-check-status-register-to-determine-if-sssr_tint-is-disabled.patch
 mm-hugetlbfs-skip-shared-vmas-when-unmapping-private-pages-to-satisfy-a-fault.patch
+alsa-synth-fix-conflicting-oss-device-registration-on-awe32.patch
+asoc-fix-broken-pxa-soc-support.patch
+asoc-dwc-correct-irq-clear-method.patch
+btrfs-skip-waiting-on-ordered-range-for-special-files.patch
+staging-comedi-adl_pci7x3x-fix-digital-output-on-pci-7230.patch
diff --git a/queue-3.10/staging-comedi-adl_pci7x3x-fix-digital-output-on-pci-7230.patch b/queue-3.10/staging-comedi-adl_pci7x3x-fix-digital-output-on-pci-7230.patch
new file mode 100644 (file)
index 0000000..40c9dc4
--- /dev/null
@@ -0,0 +1,58 @@
+From ad83dbd974feb2e2a8cc071a1d28782bd4d2c70e Mon Sep 17 00:00:00 2001
+From: Ian Abbott <abbotti@mev.co.uk>
+Date: Tue, 11 Aug 2015 13:05:10 +0100
+Subject: staging: comedi: adl_pci7x3x: fix digital output on PCI-7230
+
+From: Ian Abbott <abbotti@mev.co.uk>
+
+commit ad83dbd974feb2e2a8cc071a1d28782bd4d2c70e upstream.
+
+The "adl_pci7x3x" driver replaced the "adl_pci7230" and "adl_pci7432"
+drivers in commits 8f567c373c4b ("staging: comedi: new adl_pci7x3x
+driver") and 657f77d173d3 ("staging: comedi: remove adl_pci7230 and
+adl_pci7432 drivers").  Although the new driver code agrees with the
+user manuals for the respective boards, digital outputs stopped working
+on the PCI-7230.  This has 16 digital output channels and the previous
+adl_pci7230 driver shifted the 16 bit output state left by 16 bits
+before writing to the hardware register.  The new adl_pci7x3x driver
+doesn't do that.  Fix it in `adl_pci7x3x_do_insn_bits()` by checking
+for the special case of the subdevice having only 16 channels and
+duplicating the 16 bit output state into both halves of the 32-bit
+register.  That should work both for what the board actually does and
+for what the user manual says it should do.
+
+Fixes: 8f567c373c4b ("staging: comedi: new adl_pci7x3x driver")
+Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/staging/comedi/drivers/adl_pci7x3x.c |   15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/comedi/drivers/adl_pci7x3x.c
++++ b/drivers/staging/comedi/drivers/adl_pci7x3x.c
+@@ -119,10 +119,21 @@ static int adl_pci7x3x_do_insn_bits(stru
+       unsigned int bits = data[1];
+       if (mask) {
++              unsigned int val;
++
+               s->state &= ~mask;
+               s->state |= (bits & mask);
+-
+-              outl(s->state, dev->iobase + reg);
++              val = s->state;
++              if (s->n_chan == 16) {
++                      /*
++                       * It seems the PCI-7230 needs the 16-bit DO state
++                       * to be shifted left by 16 bits before being written
++                       * to the 32-bit register.  Set the value in both
++                       * halves of the register to be sure.
++                       */
++                      val |= val << 16;
++              }
++              outl(val, dev->iobase + reg);
+       }
+       /*