From: Greg Kroah-Hartman Date: Fri, 10 Jan 2014 03:43:42 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.4.77~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a9c59af91536179ddc4723c89883e969aab63b9;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: clocksource-em_sti-set-cpu_possible_mask-to-fix-smp-broadcast.patch gpio-rcar-r-car-gpio-irq-share-interrupt.patch irqchip-renesas-irqc-fix-irqc_probe-error-handling.patch --- diff --git a/queue-3.10/clocksource-em_sti-set-cpu_possible_mask-to-fix-smp-broadcast.patch b/queue-3.10/clocksource-em_sti-set-cpu_possible_mask-to-fix-smp-broadcast.patch new file mode 100644 index 00000000000..9e1ae3b4b2c --- /dev/null +++ b/queue-3.10/clocksource-em_sti-set-cpu_possible_mask-to-fix-smp-broadcast.patch @@ -0,0 +1,41 @@ +From 2199a5574b6d94b9ca26c6345356f45ec60fef8b Mon Sep 17 00:00:00 2001 +From: Magnus Damm +Date: Wed, 18 Sep 2013 15:01:16 -0500 +Subject: clocksource: em_sti: Set cpu_possible_mask to fix SMP broadcast + +From: Magnus Damm + +commit 2199a5574b6d94b9ca26c6345356f45ec60fef8b upstream. + +Update the STI driver by setting cpu_possible_mask to make EMEV2 +SMP work as expected together with the ARM broadcast timer. + +This breakage was introduced by: + +f7db706 ARM: 7674/1: smp: Avoid dummy clockevent being preferred over real hardware clock-event + +Without this fix SMP operation is broken on EMEV2 since no +broadcast timer interrupts trigger on the secondary CPU cores. + +Signed-off-by: Magnus Damm +Tested-by: Simon Horman +Reviewed-by: Stephen Boyd +Signed-off-by: Simon Horman +Signed-off-by: Daniel Lezcano +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/clocksource/em_sti.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/clocksource/em_sti.c ++++ b/drivers/clocksource/em_sti.c +@@ -301,7 +301,7 @@ static void em_sti_register_clockevent(s + ced->name = dev_name(&p->pdev->dev); + ced->features = CLOCK_EVT_FEAT_ONESHOT; + ced->rating = 200; +- ced->cpumask = cpumask_of(0); ++ ced->cpumask = cpu_possible_mask; + ced->set_next_event = em_sti_clock_event_next; + ced->set_mode = em_sti_clock_event_mode; + diff --git a/queue-3.10/gpio-rcar-r-car-gpio-irq-share-interrupt.patch b/queue-3.10/gpio-rcar-r-car-gpio-irq-share-interrupt.patch new file mode 100644 index 00000000000..79db229e8b7 --- /dev/null +++ b/queue-3.10/gpio-rcar-r-car-gpio-irq-share-interrupt.patch @@ -0,0 +1,33 @@ +From c234962b808f289237a40e4ce5fc1c8066d1c9d0 Mon Sep 17 00:00:00 2001 +From: Kuninori Morimoto +Date: Wed, 17 Apr 2013 23:40:57 -0700 +Subject: gpio-rcar: R-Car GPIO IRQ share interrupt + +From: Kuninori Morimoto + +commit c234962b808f289237a40e4ce5fc1c8066d1c9d0 upstream. + +R-Car H1 or Gen2 GPIO interrupts are assigned per each GPIO domain, +but, Gen1 E1/M1 GPIO interrupts are shared for all GPIO domain. +gpio-rcar driver needs IRQF_SHARED flags for these. +This patch was tested on Bock-W board + +Signed-off-by: Kuninori Morimoto +Signed-off-by: Simon Horman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpio/gpio-rcar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpio/gpio-rcar.c ++++ b/drivers/gpio/gpio-rcar.c +@@ -333,7 +333,7 @@ static int gpio_rcar_probe(struct platfo + } + + if (devm_request_irq(&pdev->dev, irq->start, +- gpio_rcar_irq_handler, 0, name, p)) { ++ gpio_rcar_irq_handler, IRQF_SHARED, name, p)) { + dev_err(&pdev->dev, "failed to request IRQ\n"); + ret = -ENOENT; + goto err1; diff --git a/queue-3.10/irqchip-renesas-irqc-fix-irqc_probe-error-handling.patch b/queue-3.10/irqchip-renesas-irqc-fix-irqc_probe-error-handling.patch new file mode 100644 index 00000000000..297ffdc43a3 --- /dev/null +++ b/queue-3.10/irqchip-renesas-irqc-fix-irqc_probe-error-handling.patch @@ -0,0 +1,33 @@ +From dfaf820a13ec160f06556e08dab423818ba87f14 Mon Sep 17 00:00:00 2001 +From: Axel Lin +Date: Mon, 6 May 2013 17:03:32 +0800 +Subject: irqchip: renesas-irqc: Fix irqc_probe error handling + +From: Axel Lin + +commit dfaf820a13ec160f06556e08dab423818ba87f14 upstream. + +The code in goto err3 path is wrong because it will call fee_irq() with k == 0, +which means it does free_irq(p->irq[-1].requested_irq, &p->irq[-1]); + +Signed-off-by: Axel Lin +Signed-off-by: Simon Horman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/irqchip/irq-renesas-irqc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/irqchip/irq-renesas-irqc.c ++++ b/drivers/irqchip/irq-renesas-irqc.c +@@ -248,8 +248,8 @@ static int irqc_probe(struct platform_de + + return 0; + err3: +- for (; k >= 0; k--) +- free_irq(p->irq[k - 1].requested_irq, &p->irq[k - 1]); ++ while (--k >= 0) ++ free_irq(p->irq[k].requested_irq, &p->irq[k]); + + irq_domain_remove(p->irq_domain); + err2: diff --git a/queue-3.10/series b/queue-3.10/series new file mode 100644 index 00000000000..eafa7ba1c5f --- /dev/null +++ b/queue-3.10/series @@ -0,0 +1,3 @@ +irqchip-renesas-irqc-fix-irqc_probe-error-handling.patch +clocksource-em_sti-set-cpu_possible_mask-to-fix-smp-broadcast.patch +gpio-rcar-r-car-gpio-irq-share-interrupt.patch