xref: /linux/kernel/irq/Kconfig (revision 96093fe54f4864b07013cf61b847708233832841)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2d9817ebeSThomas Gleixnermenu "IRQ subsystem"
3d9817ebeSThomas Gleixner# Options selectable by the architecture code
4c68fd4f3SThomas Gleixner
5c68fd4f3SThomas Gleixner# Make sparse irq Kconfig switch below available
62ed86b16SRob Herringconfig MAY_HAVE_SPARSE_IRQ
7fd4afaf3SJan Beulich       bool
8d9817ebeSThomas Gleixner
9c940e01cSThomas Gleixner# Legacy support, required for itanic
10c940e01cSThomas Gleixnerconfig GENERIC_IRQ_LEGACY
11c940e01cSThomas Gleixner       bool
12c940e01cSThomas Gleixner
13c68fd4f3SThomas Gleixner# Enable the generic irq autoprobe mechanism
14d9817ebeSThomas Gleixnerconfig GENERIC_IRQ_PROBE
15fd4afaf3SJan Beulich	bool
16d9817ebeSThomas Gleixner
17c68fd4f3SThomas Gleixner# Use the generic /proc/interrupts implementation
18c78b9b65SThomas Gleixnerconfig GENERIC_IRQ_SHOW
19fd4afaf3SJan Beulich       bool
20c78b9b65SThomas Gleixner
21ab7798ffSThomas Gleixner# Print level/edge extra information
22ab7798ffSThomas Gleixnerconfig GENERIC_IRQ_SHOW_LEVEL
23ab7798ffSThomas Gleixner       bool
24ab7798ffSThomas Gleixner
250d3f5425SThomas Gleixner# Supports effective affinity mask
260d3f5425SThomas Gleixnerconfig GENERIC_IRQ_EFFECTIVE_AFF_MASK
270e6c027cSSamuel Holland       depends on SMP
280d3f5425SThomas Gleixner       bool
290d3f5425SThomas Gleixner
30c68fd4f3SThomas Gleixner# Support for delayed migration from interrupt context
31d9817ebeSThomas Gleixnerconfig GENERIC_PENDING_IRQ
32fd4afaf3SJan Beulich	bool
33d9817ebeSThomas Gleixner
34a648eb3aSThomas Gleixner# Deduce delayed migration from top-level interrupt chip flags
35a648eb3aSThomas Gleixnerconfig GENERIC_PENDING_IRQ_CHIPFLAGS
36a648eb3aSThomas Gleixner	bool
37a648eb3aSThomas Gleixner
38f1e0bb0aSYang Yingliang# Support for generic irq migrating off cpu before the cpu is offline.
39f1e0bb0aSYang Yingliangconfig GENERIC_IRQ_MIGRATION
40f1e0bb0aSYang Yingliang	bool
41f1e0bb0aSYang Yingliang
42c68fd4f3SThomas Gleixner# Alpha specific irq affinity mechanism
43d9817ebeSThomas Gleixnerconfig AUTO_IRQ_AFFINITY
44fd4afaf3SJan Beulich       bool
45d9817ebeSThomas Gleixner
46acd26bcfSThomas Gleixner# Interrupt injection mechanism
47acd26bcfSThomas Gleixnerconfig GENERIC_IRQ_INJECTION
48acd26bcfSThomas Gleixner	bool
49acd26bcfSThomas Gleixner
50c68fd4f3SThomas Gleixner# Tasklet based software resend for pending interrupts on enable_irq()
51d9817ebeSThomas Gleixnerconfig HARDIRQS_SW_RESEND
52fd4afaf3SJan Beulich       bool
53d9817ebeSThomas Gleixner
540521c8fbSThomas Gleixner# Edge style eoi based handler (cell)
550521c8fbSThomas Gleixnerconfig IRQ_EDGE_EOI_HANDLER
560521c8fbSThomas Gleixner       bool
570521c8fbSThomas Gleixner
58c42321c7SThomas Gleixner# Generic configurable interrupt chip implementation
59c42321c7SThomas Gleixnerconfig GENERIC_IRQ_CHIP
60c42321c7SThomas Gleixner       bool
61923fa4eaSNitin A Kamble       select IRQ_DOMAIN
62c42321c7SThomas Gleixner
6308a543adSGrant Likely# Generic irq_domain hw <--> linux irq number translation
6408a543adSGrant Likelyconfig IRQ_DOMAIN
6508a543adSGrant Likely	bool
6608a543adSGrant Likely
67b19af510SBartosz Golaszewski# Support for simulated interrupts
68b19af510SBartosz Golaszewskiconfig IRQ_SIM
69b19af510SBartosz Golaszewski	bool
70b19af510SBartosz Golaszewski	select IRQ_WORK
71337cbeb2SBartosz Golaszewski	select IRQ_DOMAIN
72b19af510SBartosz Golaszewski
73f8264e34SJiang Liu# Support for hierarchical irq domains
74f8264e34SJiang Liuconfig IRQ_DOMAIN_HIERARCHY
75f8264e34SJiang Liu	bool
76f8264e34SJiang Liu	select IRQ_DOMAIN
77f8264e34SJiang Liu
78e37af801SMarc Zyngier# Support for obsolete non-mapping irq domains
79e37af801SMarc Zyngierconfig IRQ_DOMAIN_NOMAP
80e37af801SMarc Zyngier	bool
81e37af801SMarc Zyngier	select IRQ_DOMAIN
82e37af801SMarc Zyngier
837703b08cSDavid Daney# Support for hierarchical fasteoi+edge and fasteoi+level handlers
847703b08cSDavid Daneyconfig IRQ_FASTEOI_HIERARCHY_HANDLERS
857703b08cSDavid Daney	bool
867703b08cSDavid Daney
87379b6564SQais Yousef# Generic IRQ IPI support
88379b6564SQais Yousefconfig GENERIC_IRQ_IPI
89379b6564SQais Yousef	bool
900f5209feSSamuel Holland	depends on SMP
91151a5351SMarc Zyngier	select IRQ_DOMAIN_HIERARCHY
92379b6564SQais Yousef
93835a486cSAnup Patel# Generic IRQ IPI Mux support
94835a486cSAnup Patelconfig GENERIC_IRQ_IPI_MUX
95835a486cSAnup Patel	bool
96835a486cSAnup Patel	depends on SMP
97835a486cSAnup Patel
9813e7accbSThomas Gleixner# Generic MSI hierarchical interrupt domain support
99f3cf8bb0SJiang Liuconfig GENERIC_MSI_IRQ
100f3cf8bb0SJiang Liu	bool
101f3cf8bb0SJiang Liu	select IRQ_DOMAIN_HIERARCHY
102f3cf8bb0SJiang Liu
103*96093fe5SJason Gunthorpe# irqchip drivers should select this if they call iommu_dma_prepare_msi()
104aaebdf8dSJulien Grallconfig IRQ_MSI_IOMMU
105aaebdf8dSJulien Grall	bool
106aaebdf8dSJulien Grall
107b2d3d61aSDaniel Lezcanoconfig IRQ_TIMINGS
108b2d3d61aSDaniel Lezcano	bool
109b2d3d61aSDaniel Lezcano
1102f75d9e1SThomas Gleixnerconfig GENERIC_IRQ_MATRIX_ALLOCATOR
1112f75d9e1SThomas Gleixner	bool
1122f75d9e1SThomas Gleixner
1132b5175c4SThomas Gleixnerconfig GENERIC_IRQ_RESERVATION_MODE
1142b5175c4SThomas Gleixner	bool
1152b5175c4SThomas Gleixner
11699cf63c5SBitao Hu# Snapshot for interrupt statistics
11799cf63c5SBitao Huconfig GENERIC_IRQ_STAT_SNAPSHOT
11899cf63c5SBitao Hu	bool
11999cf63c5SBitao Hu
120c68fd4f3SThomas Gleixner# Support forced irq threading
1218d32a307SThomas Gleixnerconfig IRQ_FORCED_THREADING
1228d32a307SThomas Gleixner       bool
1238d32a307SThomas Gleixner
124d9817ebeSThomas Gleixnerconfig SPARSE_IRQ
1252ed86b16SRob Herring	bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
126a7f7f624SMasahiro Yamada	help
127d9817ebeSThomas Gleixner
128d9817ebeSThomas Gleixner	  Sparse irq numbering is useful for distro kernels that want
129d9817ebeSThomas Gleixner	  to define a high CONFIG_NR_CPUS value but still want to have
130d9817ebeSThomas Gleixner	  low kernel memory footprint on smaller machines.
131d9817ebeSThomas Gleixner
132d9817ebeSThomas Gleixner	  ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
133d9817ebeSThomas Gleixner	    out the interrupt descriptors in a more NUMA-friendly way. )
134d9817ebeSThomas Gleixner
135d9817ebeSThomas Gleixner	  If you don't know what to do here, say N.
136d9817ebeSThomas Gleixner
137087cdfb6SThomas Gleixnerconfig GENERIC_IRQ_DEBUGFS
138087cdfb6SThomas Gleixner	bool "Expose irq internals in debugfs"
139087cdfb6SThomas Gleixner	depends on DEBUG_FS
140acd26bcfSThomas Gleixner	select GENERIC_IRQ_INJECTION
141087cdfb6SThomas Gleixner	default n
142a7f7f624SMasahiro Yamada	help
143087cdfb6SThomas Gleixner
144087cdfb6SThomas Gleixner	  Exposes internal state information through debugfs. Mostly for
145087cdfb6SThomas Gleixner	  developers and debugging of hard to diagnose interrupt problems.
146087cdfb6SThomas Gleixner
147087cdfb6SThomas Gleixner	  If you don't know what to do here, say N.
148087cdfb6SThomas Gleixner
149bad6722eSEliav Farber# Clear forwarded VM interrupts during kexec.
150bad6722eSEliav Farber# This option ensures the kernel clears active states for interrupts
151bad6722eSEliav Farber# forwarded to virtual machines (VMs) during a machine kexec.
152bad6722eSEliav Farberconfig GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
153bad6722eSEliav Farber	bool
154bad6722eSEliav Farber
155d9817ebeSThomas Gleixnerendmenu
156caacdbf4SPalmer Dabbelt
157caacdbf4SPalmer Dabbeltconfig GENERIC_IRQ_MULTI_HANDLER
158caacdbf4SPalmer Dabbelt	bool
159caacdbf4SPalmer Dabbelt	help
160caacdbf4SPalmer Dabbelt	  Allow to specify the low level IRQ handler at run time.
1618d15a729SMarc Zyngier
1628d15a729SMarc Zyngier# Cavium Octeon is the last system to use this deprecated option
1638d15a729SMarc Zyngier# Do not even think of enabling this on any new platform
1648d15a729SMarc Zyngierconfig DEPRECATED_IRQ_CPU_ONOFFLINE
1658d15a729SMarc Zyngier	bool
1668d15a729SMarc Zyngier	depends on CAVIUM_OCTEON_SOC
1678d15a729SMarc Zyngier	default CAVIUM_OCTEON_SOC
168