Skip to content

Commit df2e37c

Browse files
committed
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq updates from Thomas Gleixner: "The 4.6 pile of irq updates contains: - Support for IPI irqdomains to support proper integration of IPIs to and from coprocessors. The first user of this new facility is MIPS. The relevant MIPS patches come with the core to avoid merge ordering issues and have been acked by Ralf. - A new command line option to set the default interrupt affinity mask at boot time. - Support for some more new ARM and MIPS interrupt controllers: tango, alpine-msix and bcm6345-l1 - Two small cleanups for x86/apic which we merged into irq/core to avoid yet another branch in x86 with two tiny commits. - The usual set of updates, cleanups in drivers/irqchip. Mostly in the area of ARM-GIC, arada-37-xp and atmel chips. Nothing outstanding here" * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (56 commits) irqchip/irq-alpine-msi: Release the correct domain on error irqchip/mxs: Fix error check of of_io_request_and_map() irqchip/sunxi-nmi: Fix error check of of_io_request_and_map() genirq: Export IRQ functions for module use irqchip/gic/realview: Support more RealView DCC variants Documentation/bindings: Document the Alpine MSIX driver irqchip: Add the Alpine MSIX interrupt controller irqchip/gic-v3: Always return IRQ_SET_MASK_OK_DONE in gic_set_affinity irqchip/gic-v3-its: Mark its_init() and its children as __init irqchip/gic-v3: Remove gic_root_node variable from the ITS code irqchip/gic-v3: ACPI: Add redistributor support via GICC structures irqchip/gic-v3: Add ACPI support for GICv3/4 initialization irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver x86/apic: Deinline _flat_send_IPI_mask, save ~150 bytes x86/apic: Deinline __default_send_IPI_*, save ~200 bytes dt-bindings: interrupt-controller: Add SoC-specific compatible string to Marvell ODMI irqchip/mips-gic: Add new DT property to reserve IPIs MIPS: Delete smp-gic.c MIPS: Make smp CMP, CPS and MT use the new generic IPI functions MIPS: Add generic SMP IPI support ...
2 parents 8a284c0 + 8e7fe26 commit df2e37c

Some content is hidden

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

58 files changed

+2956
-608
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Alpine MSIX controller
2+
3+
See arm,gic-v3.txt for SPI and MSI definitions.
4+
5+
Required properties:
6+
7+
- compatible: should be "al,alpine-msix"
8+
- reg: physical base address and size of the registers
9+
- interrupt-parent: specifies the parent interrupt controller.
10+
- interrupt-controller: identifies the node as an interrupt controller
11+
- msi-controller: identifies the node as an PCI Message Signaled Interrupt
12+
controller
13+
- al,msi-base-spi: SPI base of the MSI frame
14+
- al,msi-num-spis: number of SPIs assigned to the MSI frame, relative to SPI0
15+
16+
Example:
17+
18+
msix: msix {
19+
compatible = "al,alpine-msix";
20+
reg = <0x0 0xfbe00000 0x0 0x100000>;
21+
interrupt-parent = <&gic>;
22+
interrupt-controller;
23+
msi-controller;
24+
al,msi-base-spi = <160>;
25+
al,msi-num-spis = <160>;
26+
};

Documentation/devicetree/bindings/interrupt-controller/arm,gic.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Main node required properties:
1616
"arm,cortex-a15-gic"
1717
"arm,cortex-a7-gic"
1818
"arm,cortex-a9-gic"
19+
"arm,eb11mp-gic"
1920
"arm,gic-400"
2021
"arm,pl390"
2122
"arm,tc11mp-gic"
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
* Marvell ODMI for MSI support
3+
4+
Some Marvell SoCs have an On-Die Message Interrupt (ODMI) controller
5+
which can be used by on-board peripheral for MSI interrupts.
6+
7+
Required properties:
8+
9+
- compatible : The value here should contain:
10+
11+
"marvell,ap806-odmi-controller", "marvell,odmi-controller".
12+
13+
- interrupt,controller : Identifies the node as an interrupt controller.
14+
15+
- msi-controller : Identifies the node as an MSI controller.
16+
17+
- marvell,odmi-frames : Number of ODMI frames available. Each frame
18+
provides a number of events.
19+
20+
- reg : List of register definitions, one for each
21+
ODMI frame.
22+
23+
- marvell,spi-base : List of GIC base SPI interrupts, one for each
24+
ODMI frame. Those SPI interrupts are 0-based,
25+
i.e marvell,spi-base = <128> will use SPI #96.
26+
See Documentation/devicetree/bindings/interrupt-controller/arm,gic.txt
27+
for details about the GIC Device Tree binding.
28+
29+
- interrupt-parent : Reference to the parent interrupt controller.
30+
31+
Example:
32+
33+
odmi: odmi@300000 {
34+
compatible = "marvell,ap806-odm-controller",
35+
"marvell,odmi-controller";
36+
interrupt-controller;
37+
msi-controller;
38+
marvell,odmi-frames = <4>;
39+
reg = <0x300000 0x4000>,
40+
<0x304000 0x4000>,
41+
<0x308000 0x4000>,
42+
<0x30C000 0x4000>;
43+
marvell,spi-base = <128>, <136>, <144>, <152>;
44+
};

Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ Optional properties:
2323
- mti,reserved-cpu-vectors : Specifies the list of CPU interrupt vectors
2424
to which the GIC may not route interrupts. Valid values are 2 - 7.
2525
This property is ignored if the CPU is started in EIC mode.
26+
- mti,reserved-ipi-vectors : Specifies the range of GIC interrupts that are
27+
reserved for IPIs.
28+
It accepts 2 values, the 1st is the starting interrupt and the 2nd is the size
29+
of the reserved range.
30+
If not specified, the driver will allocate the last 2 * number of VPEs in the
31+
system.
2632

2733
Required properties for timer sub-node:
2834
- compatible : Should be "mti,gic-timer".
@@ -44,6 +50,7 @@ Example:
4450
#interrupt-cells = <3>;
4551

4652
mti,reserved-cpu-vectors = <7>;
53+
mti,reserved-ipi-vectors = <40 8>;
4754

4855
timer {
4956
compatible = "mti,gic-timer";
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
Sigma Designs SMP86xx/SMP87xx secondary interrupt controller
2+
3+
Required properties:
4+
- compatible: should be "sigma,smp8642-intc"
5+
- reg: physical address of MMIO region
6+
- ranges: address space mapping of child nodes
7+
- interrupt-parent: phandle of parent interrupt controller
8+
- interrupt-controller: boolean
9+
- #address-cells: should be <1>
10+
- #size-cells: should be <1>
11+
12+
One child node per control block with properties:
13+
- reg: address of registers for this control block
14+
- interrupt-controller: boolean
15+
- #interrupt-cells: should be <2>, interrupt index and flags per interrupts.txt
16+
- interrupts: interrupt spec of primary interrupt controller
17+
18+
Example:
19+
20+
interrupt-controller@6e000 {
21+
compatible = "sigma,smp8642-intc";
22+
reg = <0x6e000 0x400>;
23+
ranges = <0x0 0x6e000 0x400>;
24+
interrupt-parent = <&gic>;
25+
interrupt-controller;
26+
#address-cells = <1>;
27+
#size-cells = <1>;
28+
29+
irq0: interrupt-controller@0 {
30+
reg = <0x000 0x100>;
31+
interrupt-controller;
32+
#interrupt-cells = <2>;
33+
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
34+
};
35+
36+
irq1: interrupt-controller@100 {
37+
reg = <0x100 0x100>;
38+
interrupt-controller;
39+
#interrupt-cells = <2>;
40+
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
41+
};
42+
43+
irq2: interrupt-controller@300 {
44+
reg = <0x300 0x100>;
45+
interrupt-controller;
46+
#interrupt-cells = <2>;
47+
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
48+
};
49+
};

Documentation/kernel-parameters.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,6 +1687,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
16871687
ip= [IP_PNP]
16881688
See Documentation/filesystems/nfs/nfsroot.txt.
16891689

1690+
irqaffinity= [SMP] Set the default irq affinity mask
1691+
Format:
1692+
<cpu number>,...,<cpu number>
1693+
or
1694+
<cpu number>-<cpu number>
1695+
(must be a positive range in ascending order)
1696+
or a mixture
1697+
<cpu number>,...,<cpu number>-<cpu number>
1698+
16901699
irqfixup [HW]
16911700
When an interrupt is not handled search all handlers
16921701
for it. Intended to get systems with badly broken

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2422,6 +2422,7 @@ F: arch/mips/bmips/*
24222422
F: arch/mips/include/asm/mach-bmips/*
24232423
F: arch/mips/kernel/*bmips*
24242424
F: arch/mips/boot/dts/brcm/bcm*.dts*
2425+
F: drivers/irqchip/irq-bcm63*
24252426
F: drivers/irqchip/irq-bcm7*
24262427
F: drivers/irqchip/irq-brcmstb*
24272428
F: include/linux/bcm963xx_nvram.h

arch/arm/mach-mvebu/Kconfig

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ menuconfig ARCH_MVEBU
33
depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
44
select ARCH_SUPPORTS_BIG_ENDIAN
55
select CLKSRC_MMIO
6-
select GENERIC_IRQ_CHIP
76
select PINCTRL
87
select PLAT_ORION
98
select SOC_BUS
@@ -29,6 +28,7 @@ config MACH_ARMADA_370
2928
bool "Marvell Armada 370 boards"
3029
depends on ARCH_MULTI_V7
3130
select ARMADA_370_CLK
31+
select ARMADA_370_XP_IRQ
3232
select CPU_PJ4B
3333
select MACH_MVEBU_V7
3434
select PINCTRL_ARMADA_370
@@ -39,6 +39,7 @@ config MACH_ARMADA_370
3939
config MACH_ARMADA_375
4040
bool "Marvell Armada 375 boards"
4141
depends on ARCH_MULTI_V7
42+
select ARMADA_370_XP_IRQ
4243
select ARM_ERRATA_720789
4344
select ARM_ERRATA_753970
4445
select ARM_GIC
@@ -58,6 +59,7 @@ config MACH_ARMADA_38X
5859
select ARM_ERRATA_720789
5960
select ARM_ERRATA_753970
6061
select ARM_GIC
62+
select ARMADA_370_XP_IRQ
6163
select ARMADA_38X_CLK
6264
select HAVE_ARM_SCU
6365
select HAVE_ARM_TWD if SMP
@@ -72,6 +74,7 @@ config MACH_ARMADA_39X
7274
bool "Marvell Armada 39x boards"
7375
depends on ARCH_MULTI_V7
7476
select ARM_GIC
77+
select ARMADA_370_XP_IRQ
7578
select ARMADA_39X_CLK
7679
select CACHE_L2X0
7780
select HAVE_ARM_SCU
@@ -86,6 +89,7 @@ config MACH_ARMADA_39X
8689
config MACH_ARMADA_XP
8790
bool "Marvell Armada XP boards"
8891
depends on ARCH_MULTI_V7
92+
select ARMADA_370_XP_IRQ
8993
select ARMADA_XP_CLK
9094
select CPU_PJ4B
9195
select MACH_MVEBU_V7

arch/mips/Kconfig

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ config BMIPS_GENERIC
151151
select CSRC_R4K
152152
select SYNC_R4K
153153
select COMMON_CLK
154+
select BCM6345_L1_IRQ
154155
select BCM7038_L1_IRQ
155156
select BCM7120_L2_IRQ
156157
select BRCMSTB_L2_IRQ
@@ -2169,7 +2170,6 @@ config MIPS_MT_SMP
21692170
select CPU_MIPSR2_IRQ_VI
21702171
select CPU_MIPSR2_IRQ_EI
21712172
select SYNC_R4K
2172-
select MIPS_GIC_IPI if MIPS_GIC
21732173
select MIPS_MT
21742174
select SMP
21752175
select SMP_UP
@@ -2267,7 +2267,6 @@ config MIPS_VPE_APSP_API_MT
22672267
config MIPS_CMP
22682268
bool "MIPS CMP framework support (DEPRECATED)"
22692269
depends on SYS_SUPPORTS_MIPS_CMP && !CPU_MIPSR6
2270-
select MIPS_GIC_IPI if MIPS_GIC
22712270
select SMP
22722271
select SYNC_R4K
22732272
select SYS_SUPPORTS_SMP
@@ -2287,7 +2286,6 @@ config MIPS_CPS
22872286
select MIPS_CM
22882287
select MIPS_CPC
22892288
select MIPS_CPS_PM if HOTPLUG_CPU
2290-
select MIPS_GIC_IPI if MIPS_GIC
22912289
select SMP
22922290
select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
22932291
select SYS_SUPPORTS_HOTPLUG_CPU
@@ -2305,10 +2303,6 @@ config MIPS_CPS_PM
23052303
select MIPS_CPC
23062304
bool
23072305

2308-
config MIPS_GIC_IPI
2309-
depends on MIPS_GIC
2310-
bool
2311-
23122306
config MIPS_CM
23132307
bool
23142308

0 commit comments

Comments
 (0)