aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mn10300
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-09-01 17:33:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-01 17:33:35 -0400
commit17e6b00ac422b49d44a0b8d98402a211f726282d (patch)
treec7e9143030d20625a0bd94e12ddaf9421890c375 /arch/mn10300
parent5e359bf2219d8622eb0931701e45af55db323228 (diff)
parente324c4dc4a5991d5b1171f434884a4026345e4b4 (diff)
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq updates from Thomas Gleixner: "This updated pull request does not contain the last few GIC related patches which were reported to cause a regression. There is a fix available, but I let it breed for a couple of days first. The irq departement provides: - new infrastructure to support non PCI based MSI interrupts - a couple of new irq chip drivers - the usual pile of fixlets and updates to irq chip drivers - preparatory changes for removal of the irq argument from interrupt flow handlers - preparatory changes to remove IRQF_VALID" * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (129 commits) irqchip/imx-gpcv2: IMX GPCv2 driver for wakeup sources irqchip: Add bcm2836 interrupt controller for Raspberry Pi 2 irqchip: Add documentation for the bcm2836 interrupt controller irqchip/bcm2835: Add support for being used as a second level controller irqchip/bcm2835: Refactor handle_IRQ() calls out of MAKE_HWIRQ PCI: xilinx: Fix typo in function name irqchip/gic: Ensure gic_cpu_if_up/down() programs correct GIC instance irqchip/gic: Only allow the primary GIC to set the CPU map PCI/MSI: pci-xgene-msi: Consolidate chained IRQ handler install/remove unicore32/irq: Prepare puv3_gpio_handler for irq argument removal tile/pci_gx: Prepare trio_handle_level_irq for irq argument removal m68k/irq: Prepare irq handlers for irq argument removal C6X/megamode-pic: Prepare megamod_irq_cascade for irq argument removal blackfin: Prepare irq handlers for irq argument removal arc/irq: Prepare idu_cascade_isr for irq argument removal sparc/irq: Use access helper irq_data_get_affinity_mask() sparc/irq: Use helper irq_data_get_irq_handler_data() parisc/irq: Use access helper irq_data_get_affinity_mask() mn10300/irq: Use access helper irq_data_get_affinity_mask() irqchip/i8259: Prepare i8259_irq_dispatch for irq argument removal ...
Diffstat (limited to 'arch/mn10300')
-rw-r--r--arch/mn10300/kernel/cevt-mn10300.c2
-rw-r--r--arch/mn10300/kernel/irq.c13
2 files changed, 8 insertions, 7 deletions
diff --git a/arch/mn10300/kernel/cevt-mn10300.c b/arch/mn10300/kernel/cevt-mn10300.c
index 3aae9f5a98aa..d9b34dd44f04 100644
--- a/arch/mn10300/kernel/cevt-mn10300.c
+++ b/arch/mn10300/kernel/cevt-mn10300.c
@@ -116,7 +116,7 @@ int __init init_clockevents(void)
116 { 116 {
117 struct irq_data *data; 117 struct irq_data *data;
118 data = irq_get_irq_data(cd->irq); 118 data = irq_get_irq_data(cd->irq);
119 cpumask_copy(data->affinity, cpumask_of(cpu)); 119 cpumask_copy(irq_data_get_affinity_mask(data), cpumask_of(cpu));
120 iact->flags |= IRQF_NOBALANCING; 120 iact->flags |= IRQF_NOBALANCING;
121 } 121 }
122#endif 122#endif
diff --git a/arch/mn10300/kernel/irq.c b/arch/mn10300/kernel/irq.c
index 480de70f4059..c716437baa2c 100644
--- a/arch/mn10300/kernel/irq.c
+++ b/arch/mn10300/kernel/irq.c
@@ -87,7 +87,8 @@ static void mn10300_cpupic_mask_ack(struct irq_data *d)
87 tmp2 = GxICR(irq); 87 tmp2 = GxICR(irq);
88 88
89 irq_affinity_online[irq] = 89 irq_affinity_online[irq] =
90 cpumask_any_and(d->affinity, cpu_online_mask); 90 cpumask_any_and(irq_data_get_affinity_mask(d),
91 cpu_online_mask);
91 CROSS_GxICR(irq, irq_affinity_online[irq]) = 92 CROSS_GxICR(irq, irq_affinity_online[irq]) =
92 (tmp & (GxICR_LEVEL | GxICR_ENABLE)) | GxICR_DETECT; 93 (tmp & (GxICR_LEVEL | GxICR_ENABLE)) | GxICR_DETECT;
93 tmp = CROSS_GxICR(irq, irq_affinity_online[irq]); 94 tmp = CROSS_GxICR(irq, irq_affinity_online[irq]);
@@ -124,7 +125,7 @@ static void mn10300_cpupic_unmask_clear(struct irq_data *d)
124 } else { 125 } else {
125 tmp = GxICR(irq); 126 tmp = GxICR(irq);
126 127
127 irq_affinity_online[irq] = cpumask_any_and(d->affinity, 128 irq_affinity_online[irq] = cpumask_any_and(irq_data_get_affinity_mask(d),
128 cpu_online_mask); 129 cpu_online_mask);
129 CROSS_GxICR(irq, irq_affinity_online[irq]) = (tmp & GxICR_LEVEL) | GxICR_ENABLE | GxICR_DETECT; 130 CROSS_GxICR(irq, irq_affinity_online[irq]) = (tmp & GxICR_LEVEL) | GxICR_ENABLE | GxICR_DETECT;
130 tmp = CROSS_GxICR(irq, irq_affinity_online[irq]); 131 tmp = CROSS_GxICR(irq, irq_affinity_online[irq]);
@@ -316,15 +317,16 @@ void migrate_irqs(void)
316 self = smp_processor_id(); 317 self = smp_processor_id();
317 for (irq = 0; irq < NR_IRQS; irq++) { 318 for (irq = 0; irq < NR_IRQS; irq++) {
318 struct irq_data *data = irq_get_irq_data(irq); 319 struct irq_data *data = irq_get_irq_data(irq);
320 struct cpumask *mask = irq_data_get_affinity_mask(data);
319 321
320 if (irqd_is_per_cpu(data)) 322 if (irqd_is_per_cpu(data))
321 continue; 323 continue;
322 324
323 if (cpumask_test_cpu(self, data->affinity) && 325 if (cpumask_test_cpu(self, mask) &&
324 !cpumask_intersects(&irq_affinity[irq], cpu_online_mask)) { 326 !cpumask_intersects(&irq_affinity[irq], cpu_online_mask)) {
325 int cpu_id; 327 int cpu_id;
326 cpu_id = cpumask_first(cpu_online_mask); 328 cpu_id = cpumask_first(cpu_online_mask);
327 cpumask_set_cpu(cpu_id, data->affinity); 329 cpumask_set_cpu(cpu_id, mask);
328 } 330 }
329 /* We need to operate irq_affinity_online atomically. */ 331 /* We need to operate irq_affinity_online atomically. */
330 arch_local_cli_save(flags); 332 arch_local_cli_save(flags);
@@ -335,8 +337,7 @@ void migrate_irqs(void)
335 GxICR(irq) = x & GxICR_LEVEL; 337 GxICR(irq) = x & GxICR_LEVEL;
336 tmp = GxICR(irq); 338 tmp = GxICR(irq);
337 339
338 new = cpumask_any_and(data->affinity, 340 new = cpumask_any_and(mask, cpu_online_mask);
339 cpu_online_mask);
340 irq_affinity_online[irq] = new; 341 irq_affinity_online[irq] = new;
341 342
342 CROSS_GxICR(irq, new) = 343 CROSS_GxICR(irq, new) =