Skip to content

Commit 21edf50

Browse files
committed
Merge tag 'irq-core-2021-06-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq updates from Thomas Gleixner: "Updates for the interrupt subsystem: Core changes: - Cleanup and simplification of common code to invoke the low level interrupt flow handlers when this invocation requires irqdomain resolution. Add the necessary core infrastructure. - Provide a proper interface for modular PMU drivers to set the interrupt affinity. - Add a request flag which allows to exclude interrupts from spurious interrupt detection. Useful especially for IPI handlers which always return IRQ_HANDLED which turns the spurious interrupt detection into a pointless waste of CPU cycles. Driver changes: - Bulk convert interrupt chip drivers to the new irqdomain low level flow handler invocation mechanism. - Add device tree bindings for the Renesas R-Car M3-W+ SoC - Enable modular build of the Qualcomm PDC driver - The usual small fixes and improvements" * tag 'irq-core-2021-06-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (38 commits) dt-bindings: interrupt-controller: arm,gic-v3: Describe GICv3 optional properties irqchip: gic-pm: Remove redundant error log of clock bulk irqchip/sun4i: Remove unnecessary oom message irqchip/irq-imx-gpcv2: Remove unnecessary oom message irqchip/imgpdc: Remove unnecessary oom message irqchip/gic-v3-its: Remove unnecessary oom message irqchip/gic-v2m: Remove unnecessary oom message irqchip/exynos-combiner: Remove unnecessary oom message irqchip: Bulk conversion to generic_handle_domain_irq() genirq: Move non-irqdomain handle_domain_irq() handling into ARM's handle_IRQ() genirq: Add generic_handle_domain_irq() helper irqchip/nvic: Convert from handle_IRQ() to handle_domain_irq() irqdesc: Fix __handle_domain_irq() comment genirq: Use irq_resolve_mapping() to implement __handle_domain_irq() and co irqdomain: Introduce irq_resolve_mapping() irqdomain: Protect the linear revmap with RCU irqdomain: Cache irq_data instead of a virq number in the revmap irqdomain: Use struct_size() helper when allocating irqdomain irqdomain: Make normal and nomap irqdomains exclusive powerpc: Move the use of irq_domain_add_nomap() behind a config option ...
2 parents 6218015 + 3d2ce67 commit 21edf50

File tree

106 files changed

+408
-354
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+408
-354
lines changed

Documentation/core-api/irq/irq-domain.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ Legacy
146146

147147
irq_domain_add_simple()
148148
irq_domain_add_legacy()
149-
irq_domain_add_legacy_isa()
150149
irq_domain_create_simple()
151150
irq_domain_create_legacy()
152151

Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,19 @@ properties:
145145
required:
146146
- affinity
147147

148+
clocks:
149+
maxItems: 1
150+
151+
clock-names:
152+
items:
153+
- const: aclk
154+
155+
power-domains:
156+
maxItems: 1
157+
158+
resets:
159+
maxItems: 1
160+
148161
dependencies:
149162
mbi-ranges: [ msi-controller ]
150163
msi-controller: [ mbi-ranges ]

Documentation/devicetree/bindings/interrupt-controller/renesas,irqc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ properties:
2929
- renesas,intc-ex-r8a774c0 # RZ/G2E
3030
- renesas,intc-ex-r8a7795 # R-Car H3
3131
- renesas,intc-ex-r8a7796 # R-Car M3-W
32+
- renesas,intc-ex-r8a77961 # R-Car M3-W+
3233
- renesas,intc-ex-r8a77965 # R-Car M3-N
3334
- renesas,intc-ex-r8a77970 # R-Car V3M
3435
- renesas,intc-ex-r8a77980 # R-Car V3H

arch/arm/kernel/irq.c

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,27 @@ int arch_show_interrupts(struct seq_file *p, int prec)
6363
*/
6464
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
6565
{
66-
__handle_domain_irq(NULL, irq, false, regs);
66+
struct pt_regs *old_regs = set_irq_regs(regs);
67+
struct irq_desc *desc;
68+
69+
irq_enter();
70+
71+
/*
72+
* Some hardware gives randomly wrong interrupts. Rather
73+
* than crashing, do something sensible.
74+
*/
75+
if (unlikely(!irq || irq >= nr_irqs))
76+
desc = NULL;
77+
else
78+
desc = irq_to_desc(irq);
79+
80+
if (likely(desc))
81+
handle_irq_desc(desc);
82+
else
83+
ack_bad_irq(irq);
84+
85+
irq_exit();
86+
set_irq_regs(old_regs);
6787
}
6888

6989
/*

arch/mips/include/asm/irq.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
#include <linux/linkage.h>
1313
#include <linux/smp.h>
14-
#include <linux/irqdomain.h>
1514

1615
#include <asm/mipsmtregs.h>
1716

arch/mips/lantiq/xway/dma.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <linux/spinlock.h>
1313
#include <linux/clk.h>
1414
#include <linux/err.h>
15+
#include <linux/of.h>
1516

1617
#include <lantiq_soc.h>
1718
#include <xway_dma.h>

arch/mips/pci/pci-rt3883.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <linux/init.h>
1414
#include <linux/delay.h>
1515
#include <linux/interrupt.h>
16+
#include <linux/irqdomain.h>
1617
#include <linux/of.h>
1718
#include <linux/of_irq.h>
1819
#include <linux/of_pci.h>

arch/mips/pci/pci-xtalk-bridge.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <linux/platform_data/xtalk-bridge.h>
1414
#include <linux/nvmem-consumer.h>
1515
#include <linux/crc16.h>
16+
#include <linux/irqdomain.h>
1617

1718
#include <asm/pci/bridge.h>
1819
#include <asm/paccess.h>

arch/mips/sgi-ip27/ip27-irq.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <linux/interrupt.h>
1111
#include <linux/irq.h>
12+
#include <linux/irqdomain.h>
1213
#include <linux/ioport.h>
1314
#include <linux/kernel.h>
1415
#include <linux/bitops.h>

arch/mips/sgi-ip30/ip30-irq.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <linux/init.h>
77
#include <linux/interrupt.h>
88
#include <linux/irq.h>
9+
#include <linux/irqdomain.h>
910
#include <linux/percpu.h>
1011
#include <linux/spinlock.h>
1112
#include <linux/tick.h>

0 commit comments

Comments
 (0)