aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/chip.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-09-24 15:30:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-09-24 15:30:12 -0400
commit4b8b0ff60f1d6553914a5fc17f16f9aa38a2036e (patch)
tree4c841fbb7ae2baf0a8a9926f717079408eb51cbd /kernel/irq/chip.c
parent0f26574178f6c698e5d76e66ca68a95cc35eef9f (diff)
parente875bd66dfb68f4e898e9a43ef42858c504a7f23 (diff)
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Thomas Gleixner: "Three fixes for irq core and irq chip drivers: - Do not set the irq type if type is NONE. Fixes a boot regression on various SoCs - Use the proper cpu for setting up the GIC target list. Discovered by the cpumask debugging code. - A rather large fix for the MIPS-GIC so per cpu local interrupts work again. This was discovered late because the code falls back to slower timers which use normal device interrupts" * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/mips-gic: Fix local interrupts irqchip/gicv3: Silence noisy DEBUG_PER_CPU_MAPS warning genirq: Skip chained interrupt trigger setup if type is IRQ_TYPE_NONE
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r--kernel/irq/chip.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 637389088b3f..26ba5654d9d5 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -820,6 +820,8 @@ __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle,
820 desc->name = name; 820 desc->name = name;
821 821
822 if (handle != handle_bad_irq && is_chained) { 822 if (handle != handle_bad_irq && is_chained) {
823 unsigned int type = irqd_get_trigger_type(&desc->irq_data);
824
823 /* 825 /*
824 * We're about to start this interrupt immediately, 826 * We're about to start this interrupt immediately,
825 * hence the need to set the trigger configuration. 827 * hence the need to set the trigger configuration.
@@ -828,8 +830,10 @@ __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle,
828 * chained interrupt. Reset it immediately because we 830 * chained interrupt. Reset it immediately because we
829 * do know better. 831 * do know better.
830 */ 832 */
831 __irq_set_trigger(desc, irqd_get_trigger_type(&desc->irq_data)); 833 if (type != IRQ_TYPE_NONE) {
832 desc->handle_irq = handle; 834 __irq_set_trigger(desc, type);
835 desc->handle_irq = handle;
836 }
833 837
834 irq_settings_set_noprobe(desc); 838 irq_settings_set_noprobe(desc);
835 irq_settings_set_norequest(desc); 839 irq_settings_set_norequest(desc);