linux/drivers/irqchip
Lorenzo Pieralisi 3a0fff0fb6 irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing
The GIC architecture specification defines a set of registers
for redistributors and ITSes that control the sharebility and
cacheability attributes of redistributors/ITSes initiator ports
on the interconnect (GICR_[V]PROPBASER, GICR_[V]PENDBASER,
GITS_BASER<n>).

Architecturally the GIC provides a means to drive shareability
and cacheability attributes signals and related IWB/OWB/ISH barriers
but it is not mandatory for designs to wire up the corresponding
interconnect signals that control the cacheability/shareability
of transactions.

Redistributors and ITSes interconnect ports can be connected to
non-coherent interconnects that are not able to manage the
shareability/cacheability attributes; this implicitly makes
the redistributors and ITSes non-coherent observers.

So far, the GIC driver on probe executes a write to "probe" for
the redistributors and ITSes registers shareability bitfields
by writing a value (ie InnerShareable - the shareability domain the
CPUs are in) and check it back to detect whether the value sticks or
not; this hinges on a GIC programming model behaviour that predates the
current specifications, that just define shareability bits as writeable
but do not guarantee that writing certain shareability values
enable the expected behaviour for the redistributors/ITSes
memory interconnect ports.

To enable non-coherent GIC designs, introduce the "dma-noncoherent"
device tree property to allow firmware to describe redistributors and
ITSes as non-coherent observers on the memory interconnect and use the
property to force the shareability attributes to be programmed into the
redistributors and ITSes registers through the GIC quirks mechanism.

Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <maz@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20231006125929.48591-3-lpieralisi@kernel.org
2023-10-07 12:47:12 +01:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c Merge branch irq/generic_handle_domain_irq-core into irq/irqchip-next 2021-06-11 14:32:12 +01:00
irq-al-fic.c irqchip/al-fic: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:50 -07:00
irq-alpine-msi.c Merge branch irq/irqdomain-locking into irq/irqchip-next 2023-02-13 19:39:25 +00:00
irq-apple-aic.c ARM: 2023-02-25 11:30:21 -08:00
irq-armada-370-xp.c irqchip: Use irq_domain_alloc_irqs() 2023-01-11 19:51:39 +01:00
irq-aspeed-i2c-ic.c irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value 2022-05-04 16:37:48 +01:00
irq-aspeed-scu-ic.c irqchip/aspeed-scu-ic: Correctly initialise status and enable registers 2023-02-05 10:55:19 +00:00
irq-aspeed-vic.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-ath79-cpu.c
irq-ath79-misc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-atmel-aic5.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-atmel-aic-common.c
irq-atmel-aic-common.h
irq-atmel-aic.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-bcm2835.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-bcm2836.c irqchip: Use irq_domain_alloc_irqs() 2023-01-11 19:51:39 +01:00
irq-bcm6345-l1.c irqchip updates for v6.6 2023-08-28 11:33:03 +02:00
irq-bcm7038-l1.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-bcm7120-l2.c irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts 2023-02-18 14:23:41 +00:00
irq-brcmstb-l2.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-clps711x.c irqchip/clps711x: Remove unused clps711x_intc_init() function 2023-06-17 07:21:08 +01:00
irq-crossbar.c
irq-csky-apb-intc.c irqchip: Use of_property_read_bool() for boolean properties 2023-04-08 11:07:49 +01:00
irq-csky-mpintc.c irqchip/csky-mpintc: Fixup mask/unmask implementation 2021-11-12 16:09:50 +00:00
irq-davinci-cp-intc.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-digicolor.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-dw-apb-ictl.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-ftintc010.c irqchip/ftintc010: Mark all function static 2023-06-17 07:20:52 +01:00
irq-gic-common.c irqchip/gic: Correctly validate OF quirk descriptors 2023-05-30 11:01:22 +01:00
irq-gic-common.h irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing 2023-10-07 12:47:12 +01:00
irq-gic-pm.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-gic-realview.c irqchip/gic/realview: Fix refcount leak in realview_gic_of_init 2022-06-09 17:36:57 +01:00
irq-gic-v2m.c irqchip: Use of_property_read_bool() for boolean properties 2023-04-08 11:07:49 +01:00
irq-gic-v3-its-fsl-mc-msi.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-gic-v3-its-pci-msi.c PCI/MSI: Make pci_msi_domain_write_msg() static 2021-12-09 11:52:20 +01:00
irq-gic-v3-its-platform-msi.c
irq-gic-v3-its.c irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing 2023-10-07 12:47:12 +01:00
irq-gic-v3-mbi.c irqchip/gic-v3-mbi: Use irq_domain_create_hierarchy() 2023-02-13 19:31:25 +00:00
irq-gic-v3.c irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing 2023-10-07 12:47:12 +01:00
irq-gic-v4.c irqchip: Use irq_domain_alloc_irqs() 2023-01-11 19:51:39 +01:00
irq-gic.c irqchip/gic: Drop support for board files 2023-04-08 10:50:04 +01:00
irq-goldfish-pic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-hip04.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-i8259.c irqchipr/i8259: Mark i8259_of_init() static 2023-08-21 17:40:30 +01:00
irq-idt3243x.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-imgpdc.c Merge branch irq/generic_handle_domain_irq-core into irq/irqchip-next 2021-06-11 14:32:12 +01:00
irq-imx-gpcv2.c irqchip/irq-imx-gpcv2: Mark fwnode device as not initialized 2023-02-08 13:37:55 +01:00
irq-imx-intmux.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-imx-irqsteer.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-imx-mu-msi.c irqchip/imx-mu-msi: Do not check for 0 return after calling platform_get_irq() 2023-08-21 17:42:00 +01:00
irq-ingenic-tcu.c irqchip/ingenic-tcu: Use correctly sized arguments for bit field 2021-12-16 15:19:52 +00:00
irq-ingenic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ixp4xx.c irq/gpio: ixp4xx: Drop boardfile probe path 2022-04-25 20:53:18 +02:00
irq-jcore-aic.c irqchip/jcore-aic: Fix missing allocation of IRQ descriptors 2023-06-17 07:54:48 +01:00
irq-keystone.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-loongarch-cpu.c Merge branch irq/loongarch-of into irq/irqchip-next 2022-12-05 10:45:11 +00:00
irq-loongson-eiointc.c irqchip/loongson-eiointc: Fix return value checking of eiointc_index 2023-08-21 17:39:21 +01:00
irq-loongson-htpic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-loongson-htvec.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-loongson-liointc.c irqchip/loongson-liointc: Add IRQCHIP_SKIP_SET_WAKE flag 2023-06-16 12:59:28 +01:00
irq-loongson-pch-lpc.c irqchip/loongson-pch-lpc: Add suspend/resume support 2022-11-26 13:12:13 +00:00
irq-loongson-pch-msi.c irqchip/loongson-pch-msi: Use irq_domain_create_hierarchy() 2023-02-13 19:31:25 +00:00
irq-loongson-pch-pic.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-lpc32xx.c irqchip/lpc32xx: Switch to dynamic chip name output 2022-02-15 11:25:46 +00:00
irq-ls1x.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ls-extirq.c irqchip/ls-extirq: Fix endianness detection 2022-12-05 10:39:52 +00:00
irq-ls-scfg-msi.c irqchip/ls-scfg-msi: Use devm_platform_get_and_ioremap_resource() 2023-08-21 17:49:11 +01:00
irq-madera.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-mbigen.c irqchip/mbigen: Unify the error handling in mbigen_of_create_domain() 2023-05-16 11:19:29 +01:00
irq-mchp-eic.c irqchip/mchp-eic: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:52 -07:00
irq-meson-gpio.c irqchip: Add support for Amlogic-C3 SoCs 2023-08-21 17:49:12 +01:00
irq-mips-cpu.c irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry 2021-07-09 10:18:58 +01:00
irq-mips-gic.c irqchip/mips-gic: Mark gic_irq_domain_free() static 2023-08-21 17:40:20 +01:00
irq-mmp.c irqchip/mmp: Remove non-DT codepath 2023-06-17 07:21:02 +01:00
irq-mscc-ocelot.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-mst-intc.c irqchip/irq-mst: Support polarity configuration 2021-04-07 13:26:00 +01:00
irq-mtk-cirq.c irqchip/irq-mtk-cirq: Add support for System CIRQ on MT8192 2022-11-28 11:44:02 +00:00
irq-mtk-sysirq.c irqchip/mtk-sysirq: Skip setting irq-wake 2021-08-12 08:15:15 +01:00
irq-mvebu-gicp.c irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe 2023-02-05 11:11:24 +00:00
irq-mvebu-icu.c irqchip/irq-mvebu-icu: Fix works by chance pointer assignment 2022-12-06 12:50:17 +01:00
irq-mvebu-odmi.c irqchip/mvebu-odmi: Use irq_domain_create_hierarchy() 2023-02-13 19:31:25 +00:00
irq-mvebu-pic.c irqchip/mvebu-pic: Switch to dynamic chip name output 2022-02-15 11:25:46 +00:00
irq-mvebu-sei.c irqchip/irq-mvebu-sei: Use devm_platform_get_and_ioremap_resource() 2023-08-21 17:49:11 +01:00
irq-mxs.c Revert "irqchip/mxs: Include linux/irqchip/mxs.h" 2023-06-21 13:50:53 +01:00
irq-nvic.c ARM development updates for 5.18: 2022-03-23 17:35:57 -07:00
irq-omap-intc.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-ompic.c
irq-or1k-pic.c irqchip: or1k-pic: Undefine mask_ack for level triggered hardware 2022-06-28 17:31:15 +09:00
irq-orion.c irqchip/orion: Use of_address_count() helper 2023-08-21 17:48:59 +01:00
irq-owl-sirq.c irqchip: Add Actions Semi Owl SIRQ controller 2020-09-25 16:57:33 +01:00
irq-partition-percpu.c irqchip/partitions: Switch to bitmap_zalloc() 2021-07-26 18:01:27 +01:00
irq-pic32-evic.c irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry 2021-07-09 10:18:58 +01:00
irq-pruss-intc.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-qcom-mpm.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-rda-intc.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-realtek-rtl.c irqchip/realtek-rtl: use parent interrupts 2022-09-28 14:17:10 +01:00
irq-renesas-intc-irqpin.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-renesas-irqc.c irqchip: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:52 -07:00
irq-renesas-rza1.c irqchip: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:52 -07:00
irq-renesas-rzg2l.c irqchip: renesas-rzg2l: Fix logic to clear TINT interrupt source 2023-09-24 10:18:19 +01:00
irq-riscv-intc.c irqchip/riscv-intc: Add ACPI support 2023-06-01 08:45:10 -07:00
irq-sa11x0.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-sifive-plic.c irqchip/irq-sifive-plic: Add syscore callbacks for hibernation 2023-04-08 11:19:47 +01:00
irq-sl28cpld.c irqchip/irq-sl28cpld: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:53 -07:00
irq-sni-exiu.c irqchip/exiu: Fix acknowledgment of edge triggered interrupts 2022-05-04 16:33:17 +01:00
irq-sp7021-intc.c irqchip: Add Sunplus SP7021 interrupt controller driver 2022-07-08 14:23:57 +02:00
irq-st.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-stm32-exti.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-sun4i.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-sun6i-r.c irqchip/sun6i-r: Use NULL for chip_data 2022-05-04 16:36:59 +01:00
irq-sunxi-nmi.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-tb10x.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-tegra.c irqchip/tegra: Fix overflow implicit truncation warnings 2022-06-15 17:41:11 +02:00
irq-ti-sci-inta.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-ti-sci-intr.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-ts4800.c irqchip/ts4800: Switch to dynamic chip name output 2022-02-15 11:25:46 +00:00
irq-uniphier-aidet.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-versatile-fpga.c irqchip: irq-versatile-fpga: remove obsolete oxnas compatible 2023-08-14 10:26:56 +02:00
irq-vf610-mscm-ir.c
irq-vic.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-vt8500.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irq-wpcm450-aic.c irqchip/wpcm450: Fix memory leak in wpcm450_aic_of_init() 2022-11-26 13:29:48 +00:00
irq-xilinx-intc.c irqchip/xilinx: Switch to GENERIC_IRQ_MULTI_HANDLER 2022-03-04 14:32:57 +00:00
irq-xtensa-mx.c irqchip/xtensa-mx: Fix initial IRQ affinity in non-SMP setup 2022-05-04 16:35:38 +01:00
irq-xtensa-pic.c irqchip/xtensa-pic: Include header for xtensa_pic_init_legacy() 2023-08-21 17:40:08 +01:00
irq-zevio.c irq: remove handle_domain_{irq,nmi}() 2021-10-26 10:13:31 +01:00
irqchip.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
Kconfig Documentation work keeps chugging along; stuff for 6.6 includes: 2023-08-30 20:05:42 -07:00
Makefile irqchip: remove davinci aintc driver 2023-01-12 10:53:12 +01:00
qcom-irq-combiner.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
qcom-pdc.c irqchip/qcom-pdc: Add support for v3.2 HW 2023-09-12 13:38:08 +01:00
spear-shirq.c irqchip/spear-shirq: Add support for IRQ 0..6 2021-12-16 13:29:44 +00:00