]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.36 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Nov 2010 00:24:21 +0000 (16:24 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Nov 2010 00:24:21 +0000 (16:24 -0800)
queue-2.6.36/alsa-hda-add-some-workarounds-for-creative-ibg.patch [new file with mode: 0644]
queue-2.6.36/alsa-hda-add-workarounds-for-ct-ibg-controllers.patch [new file with mode: 0644]
queue-2.6.36/alsa-hda-disable-sticky-pcm-stream-assignment-for-ad-codecs.patch [new file with mode: 0644]
queue-2.6.36/alsa-hda-enable-internal-mic-on-dell-e6410-and-dell-e6510.patch [new file with mode: 0644]
queue-2.6.36/alsa-hda-fix-wrong-spdif-nid-assignment-for-ca0110.patch [new file with mode: 0644]
queue-2.6.36/alsa-oss-mixer-emulation-fix-locking.patch [new file with mode: 0644]
queue-2.6.36/microblaze-fix-build-with-make-3.82.patch [new file with mode: 0644]
queue-2.6.36/powerpc-fix-call-to-subpage_protection.patch [new file with mode: 0644]
queue-2.6.36/series
queue-2.6.36/sunrpc-after-calling-xprt_release-we-must-restart-from-call_reserve.patch [new file with mode: 0644]

diff --git a/queue-2.6.36/alsa-hda-add-some-workarounds-for-creative-ibg.patch b/queue-2.6.36/alsa-hda-add-some-workarounds-for-creative-ibg.patch
new file mode 100644 (file)
index 0000000..876b4a3
--- /dev/null
@@ -0,0 +1,80 @@
+From 14d34f166c57e77e3d7f9bc8b43d349186d922c1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 21 Oct 2010 09:03:25 +0200
+Subject: ALSA: hda - Add some workarounds for Creative IBG
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 14d34f166c57e77e3d7f9bc8b43d349186d922c1 upstream.
+
+Creative HD-audio controller chips require some workarounds:
+ - Additional delay before RIRB response
+ - Set the initial RIRB counter to 0xc0
+
+The latter seems to be done in general in Windows driver, so we may
+use this value later for all types if it's confirmed to work better.
+
+Reported-by: Wai Yew CHAY <wychay@ctl.creative.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |   16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -458,6 +458,7 @@ enum {
+       AZX_DRIVER_ULI,
+       AZX_DRIVER_NVIDIA,
+       AZX_DRIVER_TERA,
++      AZX_DRIVER_CTX,
+       AZX_DRIVER_GENERIC,
+       AZX_NUM_DRIVERS, /* keep this as last entry */
+ };
+@@ -473,6 +474,7 @@ static char *driver_short_names[] __devi
+       [AZX_DRIVER_ULI] = "HDA ULI M5461",
+       [AZX_DRIVER_NVIDIA] = "HDA NVidia",
+       [AZX_DRIVER_TERA] = "HDA Teradici", 
++      [AZX_DRIVER_CTX] = "HDA Creative",
+       [AZX_DRIVER_GENERIC] = "HD-Audio Generic",
+ };
+@@ -563,7 +565,10 @@ static void azx_init_cmd_io(struct azx *
+       /* reset the rirb hw write pointer */
+       azx_writew(chip, RIRBWP, ICH6_RIRBWP_RST);
+       /* set N=1, get RIRB response interrupt for new entry */
+-      azx_writew(chip, RINTCNT, 1);
++      if (chip->driver_type == AZX_DRIVER_CTX)
++              azx_writew(chip, RINTCNT, 0xc0);
++      else
++              azx_writew(chip, RINTCNT, 1);
+       /* enable rirb dma and response irq */
+       azx_writeb(chip, RIRBCTL, ICH6_RBCTL_DMA_EN | ICH6_RBCTL_IRQ_EN);
+       spin_unlock_irq(&chip->reg_lock);
+@@ -1136,8 +1141,11 @@ static irqreturn_t azx_interrupt(int irq
+       /* clear rirb int */
+       status = azx_readb(chip, RIRBSTS);
+       if (status & RIRB_INT_MASK) {
+-              if (status & RIRB_INT_RESPONSE)
++              if (status & RIRB_INT_RESPONSE) {
++                      if (chip->driver_type == AZX_DRIVER_CTX)
++                              udelay(80);
+                       azx_update_rirb(chip);
++              }
+               azx_writeb(chip, RIRBSTS, RIRB_INT_MASK);
+       }
+@@ -2799,10 +2807,10 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids)
+       { PCI_DEVICE(PCI_VENDOR_ID_CREATIVE, PCI_ANY_ID),
+         .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
+         .class_mask = 0xffffff,
+-        .driver_data = AZX_DRIVER_GENERIC },
++        .driver_data = AZX_DRIVER_CTX },
+ #else
+       /* this entry seems still valid -- i.e. without emu20kx chip */
+-      { PCI_DEVICE(0x1102, 0x0009), .driver_data = AZX_DRIVER_GENERIC },
++      { PCI_DEVICE(0x1102, 0x0009), .driver_data = AZX_DRIVER_CTX },
+ #endif
+       /* AMD/ATI Generic, PCI class code and Vendor ID for HD Audio */
+       { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_ANY_ID),
diff --git a/queue-2.6.36/alsa-hda-add-workarounds-for-ct-ibg-controllers.patch b/queue-2.6.36/alsa-hda-add-workarounds-for-ct-ibg-controllers.patch
new file mode 100644 (file)
index 0000000..ce9a3a5
--- /dev/null
@@ -0,0 +1,70 @@
+From 62b7e5e09bcb854ff05e6ee1aa161f8283dc36ee Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 22 Oct 2010 17:15:47 +0200
+Subject: ALSA: hda - Add workarounds for CT-IBG controllers
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 62b7e5e09bcb854ff05e6ee1aa161f8283dc36ee upstream.
+
+Creative IBG controllers require the playback stream-tags to be started
+from 1, instead of capture+1.  Otherwise the stream stalls.
+
+Reported-by: Wai Yew CHAY <wychay@ctl.creative.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_codec.c |    5 ++++-
+ sound/pci/hda/hda_intel.c |    9 +++++++--
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -1216,6 +1216,7 @@ void snd_hda_codec_setup_stream(struct h
+       struct hda_codec *c;
+       struct hda_cvt_setup *p;
+       unsigned int oldval, newval;
++      int type;
+       int i;
+       if (!nid)
+@@ -1254,10 +1255,12 @@ void snd_hda_codec_setup_stream(struct h
+       p->dirty = 0;
+       /* make other inactive cvts with the same stream-tag dirty */
++      type = get_wcaps_type(get_wcaps(codec, nid));
+       list_for_each_entry(c, &codec->bus->codec_list, list) {
+               for (i = 0; i < c->cvt_setups.used; i++) {
+                       p = snd_array_elem(&c->cvt_setups, i);
+-                      if (!p->active && p->stream_tag == stream_tag)
++                      if (!p->active && p->stream_tag == stream_tag &&
++                          get_wcaps_type(get_wcaps(codec, p->nid)) == type)
+                               p->dirty = 1;
+               }
+       }
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -1647,7 +1647,7 @@ static int azx_pcm_prepare(struct snd_pc
+       struct azx_dev *azx_dev = get_azx_dev(substream);
+       struct hda_pcm_stream *hinfo = apcm->hinfo[substream->stream];
+       struct snd_pcm_runtime *runtime = substream->runtime;
+-      unsigned int bufsize, period_bytes, format_val;
++      unsigned int bufsize, period_bytes, format_val, stream_tag;
+       int err;
+       azx_stream_reset(chip, azx_dev);
+@@ -1689,7 +1689,12 @@ static int azx_pcm_prepare(struct snd_pc
+       else
+               azx_dev->fifo_size = 0;
+-      return snd_hda_codec_prepare(apcm->codec, hinfo, azx_dev->stream_tag,
++      stream_tag = azx_dev->stream_tag;
++      /* CA-IBG chips need the playback stream starting from 1 */
++      if (chip->driver_type == AZX_DRIVER_CTX &&
++          stream_tag > chip->capture_streams)
++              stream_tag -= chip->capture_streams;
++      return snd_hda_codec_prepare(apcm->codec, hinfo, stream_tag,
+                                    azx_dev->format_val, substream);
+ }
diff --git a/queue-2.6.36/alsa-hda-disable-sticky-pcm-stream-assignment-for-ad-codecs.patch b/queue-2.6.36/alsa-hda-disable-sticky-pcm-stream-assignment-for-ad-codecs.patch
new file mode 100644 (file)
index 0000000..ddf4a15
--- /dev/null
@@ -0,0 +1,104 @@
+From 0e7adbe263f89ea2ef15b5af5e80a812b2a85025 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 25 Oct 2010 10:37:11 +0200
+Subject: ALSA: hda - Disable sticky PCM stream assignment for AD codecs
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 0e7adbe263f89ea2ef15b5af5e80a812b2a85025 upstream.
+
+The sticky PCM stream assignment introduced in 2.6.36 kernel seems
+causing problems on AD codecs.  At some time later, the streaming no
+longer works by unknown reason.  A simple workaround is to disable
+sticky-assignment for these codecs.
+
+Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_codec.c    |    3 +++
+ sound/pci/hda/hda_codec.h    |    1 +
+ sound/pci/hda/patch_analog.c |    7 +++++++
+ 3 files changed, 11 insertions(+)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -1281,6 +1281,9 @@ void __snd_hda_codec_cleanup_stream(stru
+       if (!nid)
+               return;
++      if (codec->no_sticky_stream)
++              do_now = 1;
++
+       snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid);
+       p = get_hda_cvt_setup(codec, nid);
+       if (p) {
+--- a/sound/pci/hda/hda_codec.h
++++ b/sound/pci/hda/hda_codec.h
+@@ -850,6 +850,7 @@ struct hda_codec {
+       unsigned int pin_amp_workaround:1; /* pin out-amp takes index
+                                           * (e.g. Conexant codecs)
+                                           */
++      unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
+       unsigned int pins_shutup:1;     /* pins are shut up */
+       unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+--- a/sound/pci/hda/patch_analog.c
++++ b/sound/pci/hda/patch_analog.c
+@@ -1276,6 +1276,7 @@ static int patch_ad1986a(struct hda_code
+       spec->multiout.no_share_stream = 1;
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -1463,6 +1464,7 @@ static int patch_ad1983(struct hda_codec
+       codec->patch_ops = ad198x_patch_ops;
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -1917,6 +1919,7 @@ static int patch_ad1981(struct hda_codec
+       }
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -3235,6 +3238,7 @@ static int patch_ad1988(struct hda_codec
+       spec->vmaster_nid = 0x04;
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -3449,6 +3453,7 @@ static int patch_ad1884(struct hda_codec
+       codec->patch_ops = ad198x_patch_ops;
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -4422,6 +4427,7 @@ static int patch_ad1884a(struct hda_code
+       }
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
+@@ -4761,6 +4767,7 @@ static int patch_ad1882(struct hda_codec
+       }
+       codec->no_trigger_sense = 1;
++      codec->no_sticky_stream = 1;
+       return 0;
+ }
diff --git a/queue-2.6.36/alsa-hda-enable-internal-mic-on-dell-e6410-and-dell-e6510.patch b/queue-2.6.36/alsa-hda-enable-internal-mic-on-dell-e6410-and-dell-e6510.patch
new file mode 100644 (file)
index 0000000..329eb48
--- /dev/null
@@ -0,0 +1,78 @@
+From flameeyes@gmail.com  Mon Nov 22 16:18:17 2010
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Mon, 25 Oct 2010 23:52:04 +0200
+Subject: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510
+To: stable@kernel.org
+Cc: Takashi Iwai <tiwai@suse.de>, David Henningsson <david.henningsson@canonical.com>
+Message-ID: <1288043524-31436-2-git-send-email-flameeyes@gmail.com>
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+[Not upstream as .37 fixes this differently in a much more complete way
+that is not able to be backported easily.]
+
+(Ported on top of 2.6.36)
+
+BugLink: http://launchpad.net/bugs/628961
+BugLink: http://launchpad.net/bugs/605047
+
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Diego Elio Pettenò <flameeyes@gmail.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_sigmatel.c |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -93,6 +93,7 @@ enum {
+       STAC_92HD83XXX_REF,
+       STAC_92HD83XXX_PWR_REF,
+       STAC_DELL_S14,
++      STAC_DELL_E6410,
+       STAC_92HD83XXX_HP,
+       STAC_HP_DV7_4000,
+       STAC_92HD83XXX_MODELS
+@@ -1633,6 +1634,13 @@ static unsigned int dell_s14_pin_configs
+       0x40f000f0, 0x40f000f0,
+ };
++/* Deliberately turn off 0x0f (Dock Mic) to make it choose Int Mic instead */
++static unsigned int dell_e6410_pin_configs[10] = {
++      0x04a11020, 0x0421101f, 0x400000f0, 0x90170110,
++      0x23011050, 0x40f000f0, 0x400000f0, 0x90a60130,
++      0x40f000f0, 0x40f000f0,
++};
++
+ static unsigned int hp_dv7_4000_pin_configs[10] = {
+       0x03a12050, 0x0321201f, 0x40f000f0, 0x90170110,
+       0x40f000f0, 0x40f000f0, 0x90170110, 0xd5a30140,
+@@ -1643,6 +1651,7 @@ static unsigned int *stac92hd83xxx_brd_t
+       [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
+       [STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs,
+       [STAC_DELL_S14] = dell_s14_pin_configs,
++      [STAC_DELL_E6410] = dell_e6410_pin_configs,
+       [STAC_HP_DV7_4000] = hp_dv7_4000_pin_configs,
+ };
+@@ -1651,6 +1660,7 @@ static const char *stac92hd83xxx_models[
+       [STAC_92HD83XXX_REF] = "ref",
+       [STAC_92HD83XXX_PWR_REF] = "mic-ref",
+       [STAC_DELL_S14] = "dell-s14",
++      [STAC_DELL_E6410] = "dell-e6410",
+       [STAC_92HD83XXX_HP] = "hp",
+       [STAC_HP_DV7_4000] = "hp-dv7-4000",
+ };
+@@ -1663,6 +1673,10 @@ static struct snd_pci_quirk stac92hd83xx
+                     "DFI LanParty", STAC_92HD83XXX_REF),
+       SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ba,
+                     "unknown Dell", STAC_DELL_S14),
++      SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x040a,
++                    "Dell E6410", STAC_DELL_E6410),
++      SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x040b,
++                    "Dell E6510", STAC_DELL_E6410),
+       SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xff00, 0x3600,
+                     "HP", STAC_92HD83XXX_HP),
+       {} /* terminator */
diff --git a/queue-2.6.36/alsa-hda-fix-wrong-spdif-nid-assignment-for-ca0110.patch b/queue-2.6.36/alsa-hda-fix-wrong-spdif-nid-assignment-for-ca0110.patch
new file mode 100644 (file)
index 0000000..bf329f7
--- /dev/null
@@ -0,0 +1,31 @@
+From 24b55c69b66eb2a122842820ec14ab215fc8572f Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 21 Oct 2010 08:55:13 +0200
+Subject: ALSA: hda - Fix wrong SPDIF NID assignment for CA0110
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 24b55c69b66eb2a122842820ec14ab215fc8572f upstream.
+
+The dig_out_nid field must take a digital-converter widget, but the current
+ca0110 parser passed the pin wrongly instead.
+
+Reported-by: Wai Yew CHAY <wychay@ctl.creative.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_ca0110.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_ca0110.c
++++ b/sound/pci/hda/patch_ca0110.c
+@@ -489,7 +489,7 @@ static void parse_digital(struct hda_cod
+       if (cfg->dig_outs &&
+           snd_hda_get_connections(codec, cfg->dig_out_pins[0],
+                                   &spec->dig_out, 1) == 1)
+-              spec->multiout.dig_out_nid = cfg->dig_out_pins[0];
++              spec->multiout.dig_out_nid = spec->dig_out;
+ }
+ static int ca0110_parse_auto_config(struct hda_codec *codec)
diff --git a/queue-2.6.36/alsa-oss-mixer-emulation-fix-locking.patch b/queue-2.6.36/alsa-oss-mixer-emulation-fix-locking.patch
new file mode 100644 (file)
index 0000000..0995eff
--- /dev/null
@@ -0,0 +1,75 @@
+From 838c364ff05c143fd1810e8ad1469935d6c23a7a Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Fri, 8 Oct 2010 10:48:50 +0200
+Subject: ALSA: OSS mixer emulation - fix locking
+
+From: Jaroslav Kysela <perex@perex.cz>
+
+commit 838c364ff05c143fd1810e8ad1469935d6c23a7a upstream.
+
+Fix mutex release and cleanup some locking code.
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/core/oss/mixer_oss.c |   12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+--- a/sound/core/oss/mixer_oss.c
++++ b/sound/core/oss/mixer_oss.c
+@@ -618,8 +618,10 @@ static void snd_mixer_oss_put_volume1_vo
+       if (numid == ID_UNKNOWN)
+               return;
+       down_read(&card->controls_rwsem);
+-      if ((kctl = snd_ctl_find_numid(card, numid)) == NULL)
++      if ((kctl = snd_ctl_find_numid(card, numid)) == NULL) {
++              up_read(&card->controls_rwsem);
+               return;
++      }
+       uinfo = kzalloc(sizeof(*uinfo), GFP_KERNEL);
+       uctl = kzalloc(sizeof(*uctl), GFP_KERNEL);
+       if (uinfo == NULL || uctl == NULL)
+@@ -658,7 +660,7 @@ static void snd_mixer_oss_put_volume1_sw
+               return;
+       down_read(&card->controls_rwsem);
+       if ((kctl = snd_ctl_find_numid(card, numid)) == NULL) {
+-              up_read(&fmixer->card->controls_rwsem);
++              up_read(&card->controls_rwsem);
+               return;
+       }
+       uinfo = kzalloc(sizeof(*uinfo), GFP_KERNEL);
+@@ -797,7 +799,7 @@ static int snd_mixer_oss_get_recsrc2(str
+       uctl = kzalloc(sizeof(*uctl), GFP_KERNEL);
+       if (uinfo == NULL || uctl == NULL) {
+               err = -ENOMEM;
+-              goto __unlock;
++              goto __free_only;
+       }
+       down_read(&card->controls_rwsem);
+       kctl = snd_mixer_oss_test_id(mixer, "Capture Source", 0);
+@@ -826,6 +828,7 @@ static int snd_mixer_oss_get_recsrc2(str
+       err = 0;
+       __unlock:
+       up_read(&card->controls_rwsem);
++      __free_only:
+               kfree(uctl);
+               kfree(uinfo);
+               return err;
+@@ -847,7 +850,7 @@ static int snd_mixer_oss_put_recsrc2(str
+       uctl = kzalloc(sizeof(*uctl), GFP_KERNEL);
+       if (uinfo == NULL || uctl == NULL) {
+               err = -ENOMEM;
+-              goto __unlock;
++              goto __free_only;
+       }
+       down_read(&card->controls_rwsem);
+       kctl = snd_mixer_oss_test_id(mixer, "Capture Source", 0);
+@@ -880,6 +883,7 @@ static int snd_mixer_oss_put_recsrc2(str
+       err = 0;
+       __unlock:
+       up_read(&card->controls_rwsem);
++      __free_only:
+       kfree(uctl);
+       kfree(uinfo);
+       return err;
diff --git a/queue-2.6.36/microblaze-fix-build-with-make-3.82.patch b/queue-2.6.36/microblaze-fix-build-with-make-3.82.patch
new file mode 100644 (file)
index 0000000..79431fd
--- /dev/null
@@ -0,0 +1,45 @@
+From b843e4ec01991a386a9e0e9030703524446e03da Mon Sep 17 00:00:00 2001
+From: Thomas Backlund <tmb@mandriva.org>
+Date: Thu, 21 Oct 2010 13:19:10 +0300
+Subject: microblaze: Fix build with make 3.82
+
+From: Thomas Backlund <tmb@mandriva.org>
+
+commit b843e4ec01991a386a9e0e9030703524446e03da upstream.
+
+When running make headers_install_all on x86_64 and make 3.82 I hit this:
+
+arch/microblaze/Makefile:80: *** mixed implicit and normal rules.  Stop.
+make: *** [headers_install_all] Error 2
+
+So split the rules to satisfy make 3.82.
+
+Signed-off-by: Thomas Backlund <tmb@mandriva.org>
+Signed-off-by: Michal Simek <monstr@monstr.eu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/microblaze/Makefile |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/microblaze/Makefile
++++ b/arch/microblaze/Makefile
+@@ -72,12 +72,16 @@ export MMU DTB
+ all: linux.bin
+-BOOT_TARGETS = linux.bin linux.bin.gz simpleImage.%
++# With make 3.82 we cannot mix normal and wildcard targets
++BOOT_TARGETS1 = linux.bin linux.bin.gz
++BOOT_TARGETS2 = simpleImage.%
+ archclean:
+       $(Q)$(MAKE) $(clean)=$(boot)
+-$(BOOT_TARGETS): vmlinux
++$(BOOT_TARGETS1): vmlinux
++      $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
++$(BOOT_TARGETS2): vmlinux
+       $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+ define archhelp
diff --git a/queue-2.6.36/powerpc-fix-call-to-subpage_protection.patch b/queue-2.6.36/powerpc-fix-call-to-subpage_protection.patch
new file mode 100644 (file)
index 0000000..745aaab
--- /dev/null
@@ -0,0 +1,63 @@
+From 1c2c25c78740b2796c7c06640784cb6732fa4907 Mon Sep 17 00:00:00 2001
+From: Michael Neuling <mikey@neuling.org>
+Date: Wed, 17 Nov 2010 16:32:59 +0000
+Subject: powerpc: Fix call to subpage_protection()
+
+From: Michael Neuling <mikey@neuling.org>
+
+commit 1c2c25c78740b2796c7c06640784cb6732fa4907 upstream.
+
+In:
+  powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT
+  commit d28513bc7f675d28b479db666d572e078ecf182d
+  Author: David Gibson <david@gibson.dropbear.id.au>
+
+subpage_protection() was changed to to take an mm rather a pgdir but it
+didn't change calling site in hashpage_preload().  The change wasn't
+noticed at compile time since hashpage_preload() used a void* as the
+parameter to subpage_protection().
+
+This is obviously wrong and can trigger the following crash when
+CONFIG_SLAB, CONFIG_DEBUG_SLAB, CONFIG_PPC_64K_PAGES
+CONFIG_PPC_SUBPAGE_PROT are enabled.
+
+Freeing unused kernel memory: 704k freed
+Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6c49b7
+Faulting instruction address: 0xc0000000000410f4
+cpu 0x2: Vector: 300 (Data Access) at [c00000004233f590]
+    pc: c0000000000410f4: .hash_preload+0x258/0x338
+    lr: c000000000041054: .hash_preload+0x1b8/0x338
+    sp: c00000004233f810
+   msr: 8000000000009032
+   dar: 6b6b6b6b6b6c49b7
+ dsisr: 40000000
+  current = 0xc00000007e2c0070
+  paca    = 0xc000000007fe0500
+    pid   = 1, comm = init
+enter ? for help
+[c00000004233f810] c000000000041020 .hash_preload+0x184/0x338 (unreliable)
+[c00000004233f8f0] c00000000003ed98 .update_mmu_cache+0xb0/0xd0
+[c00000004233f990] c000000000157754 .__do_fault+0x48c/0x5dc
+[c00000004233faa0] c000000000158fd0 .handle_mm_fault+0x508/0xa8c
+[c00000004233fb90] c0000000006acdd4 .do_page_fault+0x428/0x6ac
+[c00000004233fe30] c000000000005260 handle_page_fault+0x20/0x74
+
+Reported-by: Jim Keniston <jkenisto@linux.vnet.ibm.com>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Michael Neuling <mikey@neuling.org>
+cc: David Gibson <david@gibson.dropbear.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
+index 83f534d..5e95844 100644
+--- a/arch/powerpc/mm/hash_utils_64.c
++++ b/arch/powerpc/mm/hash_utils_64.c
+@@ -1123,7 +1123,7 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
+       else
+ #endif /* CONFIG_PPC_HAS_HASH_64K */
+               rc = __hash_page_4K(ea, access, vsid, ptep, trap, local, ssize,
+-                                  subpage_protection(pgdir, ea));
++                                  subpage_protection(mm, ea));
+       /* Dump some info in case of hash insertion failure, they should
+        * never happen so it is really useful to know if/when they do
index bf80a2a3cca1395d288811944982bf85acda7973..6983c80010182083729940ede2110ea3048cd88e 100644 (file)
@@ -65,3 +65,12 @@ isdn-gigaset-bas_gigaset-locking-fix.patch
 i2c-pca-platform-change-device-name-of-request_irq.patch
 viafb-fix-i2c_transfer-error-handling.patch
 drm-radeon-kms-register-an-i2c-adapter-name-for-the-dp-aux-bus.patch
+alsa-hda-disable-sticky-pcm-stream-assignment-for-ad-codecs.patch
+alsa-hda-add-workarounds-for-ct-ibg-controllers.patch
+alsa-hda-fix-wrong-spdif-nid-assignment-for-ca0110.patch
+alsa-hda-add-some-workarounds-for-creative-ibg.patch
+alsa-oss-mixer-emulation-fix-locking.patch
+alsa-hda-enable-internal-mic-on-dell-e6410-and-dell-e6510.patch
+powerpc-fix-call-to-subpage_protection.patch
+sunrpc-after-calling-xprt_release-we-must-restart-from-call_reserve.patch
+microblaze-fix-build-with-make-3.82.patch
diff --git a/queue-2.6.36/sunrpc-after-calling-xprt_release-we-must-restart-from-call_reserve.patch b/queue-2.6.36/sunrpc-after-calling-xprt_release-we-must-restart-from-call_reserve.patch
new file mode 100644 (file)
index 0000000..99b5be3
--- /dev/null
@@ -0,0 +1,77 @@
+From 118df3d17f11733b294ea2cd988d56ee376ef9fd Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <Trond.Myklebust@netapp.com>
+Date: Sun, 24 Oct 2010 17:17:31 -0400
+Subject: SUNRPC: After calling xprt_release(), we must restart from call_reserve
+
+From: Trond Myklebust <Trond.Myklebust@netapp.com>
+
+commit 118df3d17f11733b294ea2cd988d56ee376ef9fd upstream.
+
+Rob Leslie reports seeing the following Oops after his Kerberos session
+expired.
+
+BUG: unable to handle kernel NULL pointer dereference at 00000058
+IP: [<e186ed94>] rpcauth_refreshcred+0x11/0x12c [sunrpc]
+*pde = 00000000
+Oops: 0000 [#1]
+last sysfs file: /sys/devices/platform/pc87360.26144/temp3_input
+Modules linked in: autofs4 authenc esp4 xfrm4_mode_transport ipt_LOG ipt_REJECT xt_limit xt_state ipt_REDIRECT xt_owner xt_HL xt_hl xt_tcpudp xt_mark cls_u32 cls_tcindex sch_sfq sch_htb sch_dsmark geodewdt deflate ctr twofish_generic twofish_i586 twofish_common camellia serpent blowfish cast5 cbc xcbc rmd160 sha512_generic sha1_generic hmac crypto_null af_key rpcsec_gss_krb5 nfsd exportfs nfs lockd fscache nfs_acl auth_rpcgss sunrpc ip_gre sit tunnel4 dummy ext3 jbd nf_nat_irc nf_conntrack_irc nf_nat_ftp nf_conntrack_ftp iptable_mangle iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 iptable_filter ip_tables x_tables pc8736x_gpio nsc_gpio pc87360 hwmon_vid loop aes_i586 aes_generic sha256_generic dm_crypt cs5535_gpio serio_raw cs5535_mfgpt hifn_795x des_generic geode_rng rng_core led_class ext4 mbcache jbd2 crc16 dm_mirror dm_region_hash dm_log dm_snapshot dm_mod sd_mod crc_t10dif ide_pci_generic cs5536 amd74xx ide_core pata_cs5536 ata_generic libata usb_storage via_rhine mii scsi_mod btrfs zlib_deflate crc32c libcrc32c [last unloaded: scsi_wait_scan]
+
+Pid: 12875, comm: sudo Not tainted 2.6.36-net5501 #1 /
+EIP: 0060:[<e186ed94>] EFLAGS: 00010292 CPU: 0
+EIP is at rpcauth_refreshcred+0x11/0x12c [sunrpc]
+EAX: 00000000 EBX: defb13a0 ECX: 00000006 EDX: e18683b8
+ESI: defb13a0 EDI: 00000000 EBP: 00000000 ESP: de571d58
+ DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
+Process sudo (pid: 12875, ti=de570000 task=decd1430 task.ti=de570000)
+Stack:
+ e186e008 00000000 defb13a0 0000000d deda6000 e1868f22 e196f12b defb13a0
+<0> defb13d8 00000000 00000000 e186e0aa 00000000 defb13a0 de571dac 00000000
+<0> e186956c de571e34 debea5c0 de571dc8 e186967a 00000000 debea5c0 de571e34
+Call Trace:
+ [<e186e008>] ? rpc_wake_up_next+0x114/0x11b [sunrpc]
+ [<e1868f22>] ? call_decode+0x24a/0x5af [sunrpc]
+ [<e196f12b>] ? nfs4_xdr_dec_access+0x0/0xa2 [nfs]
+ [<e186e0aa>] ? __rpc_execute+0x62/0x17b [sunrpc]
+ [<e186956c>] ? rpc_run_task+0x91/0x97 [sunrpc]
+ [<e186967a>] ? rpc_call_sync+0x40/0x5b [sunrpc]
+ [<e1969ca2>] ? nfs4_proc_access+0x10a/0x176 [nfs]
+ [<e19572fa>] ? nfs_do_access+0x2b1/0x2c0 [nfs]
+ [<e186ed61>] ? rpcauth_lookupcred+0x62/0x84 [sunrpc]
+ [<e19573b6>] ? nfs_permission+0xad/0x13b [nfs]
+ [<c0177824>] ? exec_permission+0x15/0x4b
+ [<c0177fbd>] ? link_path_walk+0x4f/0x456
+ [<c017867d>] ? path_walk+0x4c/0xa8
+ [<c0179678>] ? do_path_lookup+0x1f/0x68
+ [<c017a3fb>] ? user_path_at+0x37/0x5f
+ [<c016359c>] ? handle_mm_fault+0x229/0x55b
+ [<c0170a2d>] ? sys_faccessat+0x93/0x146
+ [<c0170aef>] ? sys_access+0xf/0x13
+ [<c02cf615>] ? syscall_call+0x7/0xb
+Code: 0f 94 c2 84 d2 74 09 8b 44 24 0c e8 6a e9 8b de 83 c4 14 89 d8 5b 5e 5f 5d c3 55 57 56 53 83 ec 1c fc 89 c6 8b 40 10 89 44 24 04 <8b> 58 58 85 db 0f 85 d4 00 00 00 0f b7 46 70 8b 56 20 89 c5 83
+EIP: [<e186ed94>] rpcauth_refreshcred+0x11/0x12c [sunrpc] SS:ESP 0068:de571d58
+CR2: 0000000000000058
+
+This appears to be caused by the function rpc_verify_header() first
+calling xprt_release(), then doing a call_refresh. If we release the
+transport slot, we should _always_ jump back to call_reserve before
+calling anything else.
+
+Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sunrpc/clnt.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/sunrpc/clnt.c
++++ b/net/sunrpc/clnt.c
+@@ -1675,7 +1675,7 @@ rpc_verify_header(struct rpc_task *task)
+                       rpcauth_invalcred(task);
+                       /* Ensure we obtain a new XID! */
+                       xprt_release(task);
+-                      task->tk_action = call_refresh;
++                      task->tk_action = call_reserve;
+                       goto out_retry;
+               case RPC_AUTH_BADCRED:
+               case RPC_AUTH_BADVERF: