From: Greg Kroah-Hartman Date: Tue, 29 Apr 2014 23:45:31 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.4.89~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4bd2fe6cc9e19f1e954bcd0f62ee1ff834aab2d8;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: arm-8027-1-fix-do_div-bug-in-big-endian-systems.patch arm-8030-1-arm-kdump-add-arch_crash_save_vmcoreinfo.patch arm-omap2-intc-acknowledge-stuck-active-interrupts.patch arm-omap3-hwmod-data-correct-clock-domains-for-usb-modules.patch arm-pxa-hx4700.h-include-irqs.h-for-pxa_nr_builtin_gpio.patch asoc-cs42l73-fix-mask-bits-for-soc_value_enum_single.patch --- diff --git a/queue-3.4/arm-8027-1-fix-do_div-bug-in-big-endian-systems.patch b/queue-3.4/arm-8027-1-fix-do_div-bug-in-big-endian-systems.patch new file mode 100644 index 00000000000..9756b2d5c76 --- /dev/null +++ b/queue-3.4/arm-8027-1-fix-do_div-bug-in-big-endian-systems.patch @@ -0,0 +1,45 @@ +From 80bb3ef109ff40a7593d9481c17de9bbc4d7c0e2 Mon Sep 17 00:00:00 2001 +From: Xiangyu Lu +Date: Tue, 15 Apr 2014 09:38:17 +0100 +Subject: ARM: 8027/1: fix do_div() bug in big-endian systems + +From: Xiangyu Lu + +commit 80bb3ef109ff40a7593d9481c17de9bbc4d7c0e2 upstream. + +In big-endian systems, "%1" get the most significant part of the value, cause the instruction to get the wrong result. + +When viewing ftrace record in big-endian ARM systems, we found that +the timestamp errors: + +swapper-0 [001] 1325.970000: 0:120:R ==> [001] 16:120:R events/1 +events/1-16 [001] 1325.970000: 16:120:S ==> [001] 0:120:R swapper +swapper-0 [000] 1325.1000000: 0:120:R + [000] 15:120:R events/0 +swapper-0 [000] 1325.1000000: 0:120:R ==> [000] 15:120:R events/0 +swapper-0 [000] 1326.030000: 0:120:R + [000] 1150:120:R sshd +swapper-0 [000] 1326.030000: 0:120:R ==> [000] 1150:120:R sshd + +When viewed ftrace records, it will call the do_div(n, base) function, which achieved arch/arm/include/asm/div64.h in. When n = 10000000, base = 1000000, in do_div(n, base) will execute "umull %Q0, %R0, %1, %Q2". + +Reviewed-by: Dave Martin +Reviewed-by: Nicolas Pitre +Signed-off-by: Alex Wu +Signed-off-by: Xiangyu Lu +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/include/asm/div64.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/include/asm/div64.h ++++ b/arch/arm/include/asm/div64.h +@@ -156,7 +156,7 @@ + /* Select the best insn combination to perform the */ \ + /* actual __m * __n / (__p << 64) operation. */ \ + if (!__c) { \ +- asm ( "umull %Q0, %R0, %1, %Q2\n\t" \ ++ asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" \ + "mov %Q0, #0" \ + : "=&r" (__res) \ + : "r" (__m), "r" (__n) \ diff --git a/queue-3.4/arm-8030-1-arm-kdump-add-arch_crash_save_vmcoreinfo.patch b/queue-3.4/arm-8030-1-arm-kdump-add-arch_crash_save_vmcoreinfo.patch new file mode 100644 index 00000000000..86da0812377 --- /dev/null +++ b/queue-3.4/arm-8030-1-arm-kdump-add-arch_crash_save_vmcoreinfo.patch @@ -0,0 +1,38 @@ +From 56b700fd6f1e49149880fb1b6ffee0dca5be45fb Mon Sep 17 00:00:00 2001 +From: Liu Hua +Date: Fri, 18 Apr 2014 07:45:36 +0100 +Subject: ARM: 8030/1: ARM : kdump : add arch_crash_save_vmcoreinfo + +From: Liu Hua + +commit 56b700fd6f1e49149880fb1b6ffee0dca5be45fb upstream. + +For vmcore generated by LPAE enabled kernel, user space +utility such as crash needs additional infomation to +parse. + +So this patch add arch_crash_save_vmcoreinfo as what PAE enabled +i386 linux does. + +Reviewed-by: Will Deacon +Signed-off-by: Liu Hua +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/kernel/machine_kexec.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/arch/arm/kernel/machine_kexec.c ++++ b/arch/arm/kernel/machine_kexec.c +@@ -138,3 +138,10 @@ void machine_kexec(struct kimage *image) + + soft_restart(reboot_code_buffer_phys); + } ++ ++void arch_crash_save_vmcoreinfo(void) ++{ ++#ifdef CONFIG_ARM_LPAE ++ VMCOREINFO_CONFIG(ARM_LPAE); ++#endif ++} diff --git a/queue-3.4/arm-omap2-intc-acknowledge-stuck-active-interrupts.patch b/queue-3.4/arm-omap2-intc-acknowledge-stuck-active-interrupts.patch new file mode 100644 index 00000000000..07e45f2b1b2 --- /dev/null +++ b/queue-3.4/arm-omap2-intc-acknowledge-stuck-active-interrupts.patch @@ -0,0 +1,57 @@ +From 698b48532539484b012fb7c4176b959d32a17d00 Mon Sep 17 00:00:00 2001 +From: Stefan Sørensen +Date: Thu, 6 Mar 2014 16:27:15 +0100 +Subject: ARM: OMAP2+: INTC: Acknowledge stuck active interrupts +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Stefan Sørensen + +commit 698b48532539484b012fb7c4176b959d32a17d00 upstream. + +When an interrupt has become active on the INTC it will stay active +until it is acked, even if masked or de-asserted. The +INTC_PENDING_IRQn registers are however updated and since these are +used by omap_intc_handle_irq to determine which interrupt to handle, +it will never see the active interrupt. This will result in a storm of +useless interrupts that is only stopped when another higher priority +interrupt is asserted. + +Fix by sending the INTC an acknowledge if we find no interrupts to +handle. + +Signed-off-by: Stefan Sørensen +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/irq.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/arm/mach-omap2/irq.c ++++ b/arch/arm/mach-omap2/irq.c +@@ -220,6 +220,7 @@ void __init ti81xx_init_irq(void) + static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) + { + u32 irqnr; ++ int handled_irq = 0; + + do { + irqnr = readl_relaxed(base_addr + 0x98); +@@ -247,8 +248,15 @@ out: + if (irqnr) { + irqnr = irq_find_mapping(domain, irqnr); + handle_IRQ(irqnr, regs); ++ handled_irq = 1; + } + } while (irqnr); ++ ++ /* If an irq is masked or deasserted while active, we will ++ * keep ending up here with no irq handled. So remove it from ++ * the INTC with an ack.*/ ++ if (!handled_irq) ++ omap_ack_irq(NULL); + } + + asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) diff --git a/queue-3.4/arm-omap3-hwmod-data-correct-clock-domains-for-usb-modules.patch b/queue-3.4/arm-omap3-hwmod-data-correct-clock-domains-for-usb-modules.patch new file mode 100644 index 00000000000..bd8d6cb7ab5 --- /dev/null +++ b/queue-3.4/arm-omap3-hwmod-data-correct-clock-domains-for-usb-modules.patch @@ -0,0 +1,49 @@ +From c6c56697ae4bf1226263c19e8353343d7083f40e Mon Sep 17 00:00:00 2001 +From: Roger Quadros +Date: Thu, 10 Apr 2014 10:18:17 +0300 +Subject: ARM: OMAP3: hwmod data: Correct clock domains for USB modules + +From: Roger Quadros + +commit c6c56697ae4bf1226263c19e8353343d7083f40e upstream. + +OMAP3 doesn't contain "l3_init_clkdm" clock domain. Use the +proper clock domains for USB Host and USB TLL modules. + +Gets rid of the following warnings during boot + omap_hwmod: usb_host_hs: could not associate to clkdm l3_init_clkdm + omap_hwmod: usb_tll_hs: could not associate to clkdm l3_init_clkdm + +Reported-by: Nishanth Menon +Cc: Paul Walmsley +Signed-off-by: Roger Quadros +Fixes: de231388cb80a8ef3e779bbfa0564ba0157b7377 ("ARM: OMAP: USB: EHCI and OHCI hwmod structures for OMAP3") +Cc: Keshava Munegowda +Cc: Partha Basak +Signed-off-by: Paul Walmsley +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c ++++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +@@ -3408,7 +3408,7 @@ static struct omap_hwmod_irq_info omap3x + static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = { + .name = "usb_host_hs", + .class = &omap3xxx_usb_host_hs_hwmod_class, +- .clkdm_name = "l3_init_clkdm", ++ .clkdm_name = "usbhost_clkdm", + .mpu_irqs = omap3xxx_usb_host_hs_irqs, + .main_clk = "usbhost_48m_fck", + .prcm = { +@@ -3519,7 +3519,7 @@ static struct omap_hwmod_ocp_if *omap3xx + static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = { + .name = "usb_tll_hs", + .class = &omap3xxx_usb_tll_hs_hwmod_class, +- .clkdm_name = "l3_init_clkdm", ++ .clkdm_name = "core_l4_clkdm", + .mpu_irqs = omap3xxx_usb_tll_hs_irqs, + .main_clk = "usbtll_fck", + .prcm = { diff --git a/queue-3.4/arm-pxa-hx4700.h-include-irqs.h-for-pxa_nr_builtin_gpio.patch b/queue-3.4/arm-pxa-hx4700.h-include-irqs.h-for-pxa_nr_builtin_gpio.patch new file mode 100644 index 00000000000..98a71aa205f --- /dev/null +++ b/queue-3.4/arm-pxa-hx4700.h-include-irqs.h-for-pxa_nr_builtin_gpio.patch @@ -0,0 +1,37 @@ +From c02b50e90be9f41d6802049a1a08246e9eb1a22c Mon Sep 17 00:00:00 2001 +From: Andrea Adami +Date: Tue, 8 Apr 2014 14:53:44 +0200 +Subject: ARM: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO + +From: Andrea Adami + +commit c02b50e90be9f41d6802049a1a08246e9eb1a22c upstream. + +hx4700 needs the same fix as in +9705e74671f0e4f994d86b00cecf441917c64a66 +"ARM: pxa: fix various compilation problems" + +Fix build errors. Initial one is: +/linux/arch/arm/mach-pxa/include/mach/hx4700.h:18:32: error: + 'PXA_NR_BUILTIN_GPIO' undeclared here (not in a function) +| #define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO + +Signed-off-by: Andrea Adami +Signed-off-by: Linus Walleij +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-pxa/include/mach/hx4700.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/mach-pxa/include/mach/hx4700.h ++++ b/arch/arm/mach-pxa/include/mach/hx4700.h +@@ -14,6 +14,7 @@ + + #include + #include ++#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ + + #define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO + #define HX4700_EGPIO_BASE (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS) diff --git a/queue-3.4/asoc-cs42l73-fix-mask-bits-for-soc_value_enum_single.patch b/queue-3.4/asoc-cs42l73-fix-mask-bits-for-soc_value_enum_single.patch new file mode 100644 index 00000000000..810f53ee237 --- /dev/null +++ b/queue-3.4/asoc-cs42l73-fix-mask-bits-for-soc_value_enum_single.patch @@ -0,0 +1,49 @@ +From 1555b652970e541fa1cb80c61ffc696bbfb92bb7 Mon Sep 17 00:00:00 2001 +From: Brian Austin +Date: Tue, 18 Mar 2014 13:56:21 -0500 +Subject: ASoC: cs42l73: Fix mask bits for SOC_VALUE_ENUM_SINGLE + +From: Brian Austin + +commit 1555b652970e541fa1cb80c61ffc696bbfb92bb7 upstream. + +The mask bits values were wrong for the SOC_VALUE_ENUM_SINGLE for the mono mix controls. + +Reported-by: Takashi Iwai +Signed-off-by: Brian Austin +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/cs42l73.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/sound/soc/codecs/cs42l73.c ++++ b/sound/soc/codecs/cs42l73.c +@@ -327,7 +327,7 @@ static const char * const cs42l73_mono_m + static const unsigned int cs42l73_mono_mix_values[] = { 0, 1, 2 }; + + static const struct soc_enum spk_asp_enum = +- SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 6, 1, ++ SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 6, 3, + ARRAY_SIZE(cs42l73_mono_mix_texts), + cs42l73_mono_mix_texts, + cs42l73_mono_mix_values); +@@ -345,7 +345,7 @@ static const struct snd_kcontrol_new spk + SOC_DAPM_ENUM("Route", spk_xsp_enum); + + static const struct soc_enum esl_asp_enum = +- SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 2, 5, ++ SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 2, 3, + ARRAY_SIZE(cs42l73_mono_mix_texts), + cs42l73_mono_mix_texts, + cs42l73_mono_mix_values); +@@ -354,7 +354,7 @@ static const struct snd_kcontrol_new esl + SOC_DAPM_ENUM("Route", esl_asp_enum); + + static const struct soc_enum esl_xsp_enum = +- SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 0, 7, ++ SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 0, 3, + ARRAY_SIZE(cs42l73_mono_mix_texts), + cs42l73_mono_mix_texts, + cs42l73_mono_mix_values);