From: Greg Kroah-Hartman Date: Mon, 2 Jul 2012 15:12:42 +0000 (-0400) Subject: 3.4-stable patches X-Git-Tag: v3.0.37~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40700b031687c6c342a70f9d01cd7e9efab653e0;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: alsa-hda-add-realtek-alc280-codec-support.patch alsa-hda-fix-memory-leaks-at-module-unload.patch alsa-hda-fix-power-map-regression-for-hp-dv6-co.patch powerpc-check_and_cede_processor-never-cedes.patch powerpc-fix-uninitialised-error-in-numa.c.patch powerpc-ftrace-do-not-trace-restore_interrupts.patch powerpc-pseries-fix-software-invalidate-tce.patch --- diff --git a/queue-3.4/alsa-hda-add-realtek-alc280-codec-support.patch b/queue-3.4/alsa-hda-add-realtek-alc280-codec-support.patch new file mode 100644 index 00000000000..05e158b0298 --- /dev/null +++ b/queue-3.4/alsa-hda-add-realtek-alc280-codec-support.patch @@ -0,0 +1,32 @@ +From befae82e2906cb7155020876a531b0b8c6c8d8c8 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 25 Jun 2012 19:49:28 +0200 +Subject: ALSA: hda - Add Realtek ALC280 codec support + +From: David Henningsson + +commit befae82e2906cb7155020876a531b0b8c6c8d8c8 upstream. + +This chip looks very similar to ALC269 and ALC27* variants. The bug reporter +has verified that sound was working after this patch had been applied. + +BugLink: https://bugs.launchpad.net/bugs/1017017 +Tested-by: Richard Crossley +Signed-off-by: David Henningsson +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6976,6 +6976,7 @@ static const struct hda_codec_preset snd + { .id = 0x10ec0272, .name = "ALC272", .patch = patch_alc662 }, + { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 }, + { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 }, ++ { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 }, + { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", + .patch = patch_alc861 }, + { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd }, diff --git a/queue-3.4/alsa-hda-fix-memory-leaks-at-module-unload.patch b/queue-3.4/alsa-hda-fix-memory-leaks-at-module-unload.patch new file mode 100644 index 00000000000..fb41d7e2a38 --- /dev/null +++ b/queue-3.4/alsa-hda-fix-memory-leaks-at-module-unload.patch @@ -0,0 +1,36 @@ +From 59cad16bc6deb85bd2a464da92bbaae289f0286f Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 26 Jun 2012 15:00:20 +0200 +Subject: ALSA: hda - Fix memory leaks at module unload + +From: Takashi Iwai + +commit 59cad16bc6deb85bd2a464da92bbaae289f0286f upstream. + +Some caches aren't released properly at module unloading time. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_codec.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/pci/hda/hda_codec.c ++++ b/sound/pci/hda/hda_codec.c +@@ -1192,6 +1192,7 @@ static void snd_hda_codec_free(struct hd + { + if (!codec) + return; ++ snd_hda_jack_tbl_clear(codec); + restore_init_pincfgs(codec); + #ifdef CONFIG_SND_HDA_POWER_SAVE + cancel_delayed_work(&codec->power_work); +@@ -1200,6 +1201,7 @@ static void snd_hda_codec_free(struct hd + list_del(&codec->list); + snd_array_free(&codec->mixers); + snd_array_free(&codec->nids); ++ snd_array_free(&codec->cvt_setups); + snd_array_free(&codec->conn_lists); + snd_array_free(&codec->spdif_out); + codec->bus->caddr_tbl[codec->addr] = NULL; diff --git a/queue-3.4/alsa-hda-fix-power-map-regression-for-hp-dv6-co.patch b/queue-3.4/alsa-hda-fix-power-map-regression-for-hp-dv6-co.patch new file mode 100644 index 00000000000..426920a304b --- /dev/null +++ b/queue-3.4/alsa-hda-fix-power-map-regression-for-hp-dv6-co.patch @@ -0,0 +1,53 @@ +From tiwai@suse.de Fri Jun 29 23:44:27 2012 +From: Takashi Iwai +Date: Thu, 28 Jun 2012 07:30:39 +0200 +Subject: ALSA: hda - Fix power-map regression for HP dv6 & co +To: stable@vger.kernel.org +Cc: Luis Henriques +Message-ID: + +From: Takashi Iwai + +commit 6e1c39c6b00d9141a82c231ba7c5e5b1716974b2 upstream. + +The recent fix for power-map controls (commit b0791dda813) caused +regressions on some other HP laptops. They have fixed pins but these +pins are exposed as jack-detectable. Thus the driver tries to control +the power-map dynamically per jack detection where it never gets on. + +This patch corrects the condition check for fixed pins so that the +power-map is set always for these pins. + +NOTE: this is no simple backport from 3.5 kernel. Since 3.5 kernel +had significant code change in the relevant part, I fixed this +differently. + +BugLink: http://bugs.launchpad.net/bugs/1013183 +Reported-by: Luis Henriques +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_sigmatel.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/pci/hda/patch_sigmatel.c ++++ b/sound/pci/hda/patch_sigmatel.c +@@ -4388,7 +4388,7 @@ static int stac92xx_init(struct hda_code + AC_PINCTL_IN_EN); + for (i = 0; i < spec->num_pwrs; i++) { + hda_nid_t nid = spec->pwr_nids[i]; +- int pinctl, def_conf; ++ unsigned int pinctl, def_conf; + + /* power on when no jack detection is available */ + /* or when the VREF is used for controlling LED */ +@@ -4415,7 +4415,7 @@ static int stac92xx_init(struct hda_code + def_conf = get_defcfg_connect(def_conf); + /* skip any ports that don't have jacks since presence + * detection is useless */ +- if (def_conf != AC_JACK_PORT_NONE && ++ if (def_conf != AC_JACK_PORT_COMPLEX || + !is_jack_detectable(codec, nid)) { + stac_toggle_power_map(codec, nid, 1); + continue; diff --git a/queue-3.4/powerpc-check_and_cede_processor-never-cedes.patch b/queue-3.4/powerpc-check_and_cede_processor-never-cedes.patch new file mode 100644 index 00000000000..d70dcac168c --- /dev/null +++ b/queue-3.4/powerpc-check_and_cede_processor-never-cedes.patch @@ -0,0 +1,56 @@ +From 0b17ba7258db83cd02da560884e053b85de371f2 Mon Sep 17 00:00:00 2001 +From: Anton Blanchard +Date: Wed, 27 Jun 2012 13:13:52 +0000 +Subject: powerpc: check_and_cede_processor() never cedes + +From: Anton Blanchard + +commit 0b17ba7258db83cd02da560884e053b85de371f2 upstream. + +Commit f948501b36c6 ("Make hard_irq_disable() actually hard-disable +interrupts") caused check_and_cede_processor to stop working. +->irq_happened will never be zero right after a hard_irq_disable +so the compiler removes the call to cede_processor completely. + +The bug was introduced back in the lazy interrupt handling rework +of 3.4 but was hidden until recently because hard_irq_disable did +nothing. + +This issue will eventually appear in 3.4 stable since the +hard_irq_disable fix is marked stable, so mark this one for stable +too. + +Signed-off-by: Anton Blanchard +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/include/asm/hw_irq.h | 5 +++++ + arch/powerpc/platforms/pseries/processor_idle.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/include/asm/hw_irq.h ++++ b/arch/powerpc/include/asm/hw_irq.h +@@ -102,6 +102,11 @@ static inline void hard_irq_disable(void + /* include/linux/interrupt.h needs hard_irq_disable to be a macro */ + #define hard_irq_disable hard_irq_disable + ++static inline bool lazy_irq_pending(void) ++{ ++ return !!(get_paca()->irq_happened & ~PACA_IRQ_HARD_DIS); ++} ++ + /* + * This is called by asynchronous interrupts to conditionally + * re-enable hard interrupts when soft-disabled after having +--- a/arch/powerpc/platforms/pseries/processor_idle.c ++++ b/arch/powerpc/platforms/pseries/processor_idle.c +@@ -106,7 +106,7 @@ static void check_and_cede_processor(voi + * we first hard disable then check. + */ + hard_irq_disable(); +- if (get_paca()->irq_happened == 0) ++ if (!lazy_irq_pending()) + cede_processor(); + } + diff --git a/queue-3.4/powerpc-fix-uninitialised-error-in-numa.c.patch b/queue-3.4/powerpc-fix-uninitialised-error-in-numa.c.patch new file mode 100644 index 00000000000..50c158bd137 --- /dev/null +++ b/queue-3.4/powerpc-fix-uninitialised-error-in-numa.c.patch @@ -0,0 +1,34 @@ +From 82b2521d257b5c0efd51821cf5fa306e53bbb6ba Mon Sep 17 00:00:00 2001 +From: Michael Neuling +Date: Tue, 19 Jun 2012 20:01:45 +0000 +Subject: powerpc: Fix uninitialised error in numa.c + +From: Michael Neuling + +commit 82b2521d257b5c0efd51821cf5fa306e53bbb6ba upstream. + +chroma_defconfig currently gives me this with gcc 4.6: + arch/powerpc/mm/numa.c:638:13: error: 'dm' may be used uninitialized in this function [-Werror=uninitialized] + +It's a bogus warning/error since of_get_drconf_memory() only writes it +anyway. + +Signed-off-by: Michael Neuling +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/mm/numa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/mm/numa.c ++++ b/arch/powerpc/mm/numa.c +@@ -635,7 +635,7 @@ static inline int __init read_usm_ranges + */ + static void __init parse_drconf_memory(struct device_node *memory) + { +- const u32 *dm, *usm; ++ const u32 *uninitialized_var(dm), *usm; + unsigned int n, rc, ranges, is_kexec_kdump = 0; + unsigned long lmb_size, base, size, sz; + int nid; diff --git a/queue-3.4/powerpc-ftrace-do-not-trace-restore_interrupts.patch b/queue-3.4/powerpc-ftrace-do-not-trace-restore_interrupts.patch new file mode 100644 index 00000000000..11fcceda13f --- /dev/null +++ b/queue-3.4/powerpc-ftrace-do-not-trace-restore_interrupts.patch @@ -0,0 +1,50 @@ +From 2d773aa4810d4a612d1c879faacc38594cc3f841 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Mon, 4 Jun 2012 16:27:54 +0000 +Subject: powerpc/ftrace: Do not trace restore_interrupts() + +From: Steven Rostedt + +commit 2d773aa4810d4a612d1c879faacc38594cc3f841 upstream. + +As I was adding code that affects all archs, I started testing function +tracer against PPC64 and found that it currently locks up with 3.4 +kernel. I figured it was due to tracing a function that shouldn't be, so +I went through the following process to bisect to find the culprit: + + cat /debug/tracing/available_filter_functions > t + num=`wc -l t` + sed -ne "1,${num}p" t > t1 + let num=num+1 + sed -ne "${num},$p" t > t2 + cat t1 > /debug/tracing/set_ftrace_filter + echo function /debug/tracing/current_tracer + + +It finally came down to this function: restore_interrupts() + +I'm not sure why this locks up the system. It just seems to prevent +scheduling from occurring. Interrupts seem to still work, as I can ping +the box. But all user processes freeze. + +When restore_interrupts() is not traced, function tracing works fine. + +Signed-off-by: Steven Rostedt +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/irq.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c +@@ -277,7 +277,7 @@ EXPORT_SYMBOL(arch_local_irq_restore); + * NOTE: This is called with interrupts hard disabled but not marked + * as such in paca->irq_happened, so we need to resync this. + */ +-void restore_interrupts(void) ++void notrace restore_interrupts(void) + { + if (irqs_disabled()) { + local_paca->irq_happened |= PACA_IRQ_HARD_DIS; diff --git a/queue-3.4/powerpc-pseries-fix-software-invalidate-tce.patch b/queue-3.4/powerpc-pseries-fix-software-invalidate-tce.patch new file mode 100644 index 00000000000..92a2b1fcb80 --- /dev/null +++ b/queue-3.4/powerpc-pseries-fix-software-invalidate-tce.patch @@ -0,0 +1,43 @@ +From bc6dc752f35488160ffac07ae91bed1bddaea32a Mon Sep 17 00:00:00 2001 +From: Michael Neuling +Date: Tue, 26 Jun 2012 21:26:37 +0000 +Subject: powerpc/pseries: Fix software invalidate TCE + +From: Michael Neuling + +commit bc6dc752f35488160ffac07ae91bed1bddaea32a upstream. + +The following added support for powernv but broke pseries/BML: + 1f1616e powerpc/powernv: Add TCE SW invalidation support + +TCE_PCI_SW_INVAL was split into FREE and CREATE flags but the tests in +the pseries code were not updated to reflect this. + +Signed-off-by: Michael Neuling +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/iommu.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/powerpc/platforms/pseries/iommu.c ++++ b/arch/powerpc/platforms/pseries/iommu.c +@@ -106,7 +106,7 @@ static int tce_build_pSeries(struct iomm + tcep++; + } + +- if (tbl->it_type == TCE_PCI_SWINV_CREATE) ++ if (tbl->it_type & TCE_PCI_SWINV_CREATE) + tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); + return 0; + } +@@ -121,7 +121,7 @@ static void tce_free_pSeries(struct iomm + while (npages--) + *(tcep++) = 0; + +- if (tbl->it_type == TCE_PCI_SWINV_FREE) ++ if (tbl->it_type & TCE_PCI_SWINV_FREE) + tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); + } + diff --git a/queue-3.4/series b/queue-3.4/series index 82ee75a2d21..f0f19af1ac5 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -1,3 +1,10 @@ tools-hv-verify-origin-of-netlink-connector-message.patch arm-orion-fix-virtual-physical-mixup-with-watchdog.patch arm-tegra-make-tegra_cpu_reset_handler_enable-__init.patch +alsa-hda-add-realtek-alc280-codec-support.patch +alsa-hda-fix-memory-leaks-at-module-unload.patch +alsa-hda-fix-power-map-regression-for-hp-dv6-co.patch +powerpc-ftrace-do-not-trace-restore_interrupts.patch +powerpc-fix-uninitialised-error-in-numa.c.patch +powerpc-pseries-fix-software-invalidate-tce.patch +powerpc-check_and_cede_processor-never-cedes.patch