xref: /linux/kernel/irq/Kconfig (revision f8a44f9babd054ff19e20a30cab661d716ad5459)
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
9c68fd4f3SThomas Gleixner# Enable the generic irq autoprobe mechanism
10d9817ebeSThomas Gleixnerconfig GENERIC_IRQ_PROBE
11fd4afaf3SJan Beulich	bool
12d9817ebeSThomas Gleixner
13c68fd4f3SThomas Gleixner# Use the generic /proc/interrupts implementation
14c78b9b65SThomas Gleixnerconfig GENERIC_IRQ_SHOW
15fd4afaf3SJan Beulich       bool
16c78b9b65SThomas Gleixner
17ab7798ffSThomas Gleixner# Print level/edge extra information
18ab7798ffSThomas Gleixnerconfig GENERIC_IRQ_SHOW_LEVEL
19ab7798ffSThomas Gleixner       bool
20ab7798ffSThomas Gleixner
210d3f5425SThomas Gleixner# Supports effective affinity mask
220d3f5425SThomas Gleixnerconfig GENERIC_IRQ_EFFECTIVE_AFF_MASK
230e6c027cSSamuel Holland       depends on SMP
240d3f5425SThomas Gleixner       bool
250d3f5425SThomas Gleixner
26c68fd4f3SThomas Gleixner# Support for delayed migration from interrupt context
27d9817ebeSThomas Gleixnerconfig GENERIC_PENDING_IRQ
28fd4afaf3SJan Beulich	bool
29d9817ebeSThomas Gleixner
30f1e0bb0aSYang Yingliang# Support for generic irq migrating off cpu before the cpu is offline.
31f1e0bb0aSYang Yingliangconfig GENERIC_IRQ_MIGRATION
32f1e0bb0aSYang Yingliang	bool
33f1e0bb0aSYang Yingliang
34c68fd4f3SThomas Gleixner# Alpha specific irq affinity mechanism
35d9817ebeSThomas Gleixnerconfig AUTO_IRQ_AFFINITY
36fd4afaf3SJan Beulich       bool
37d9817ebeSThomas Gleixner
38acd26bcfSThomas Gleixner# Interrupt injection mechanism
39acd26bcfSThomas Gleixnerconfig GENERIC_IRQ_INJECTION
40acd26bcfSThomas Gleixner	bool
41acd26bcfSThomas Gleixner
42c68fd4f3SThomas Gleixner# Tasklet based software resend for pending interrupts on enable_irq()
43d9817ebeSThomas Gleixnerconfig HARDIRQS_SW_RESEND
44fd4afaf3SJan Beulich       bool
45d9817ebeSThomas Gleixner
46c42321c7SThomas Gleixner# Generic configurable interrupt chip implementation
47c42321c7SThomas Gleixnerconfig GENERIC_IRQ_CHIP
48c42321c7SThomas Gleixner       bool
49923fa4eaSNitin A Kamble       select IRQ_DOMAIN
50c42321c7SThomas Gleixner
5108a543adSGrant Likely# Generic irq_domain hw <--> linux irq number translation
5208a543adSGrant Likelyconfig IRQ_DOMAIN
5308a543adSGrant Likely	bool
5408a543adSGrant Likely
55b19af510SBartosz Golaszewski# Support for simulated interrupts
56b19af510SBartosz Golaszewskiconfig IRQ_SIM
57b19af510SBartosz Golaszewski	bool
58b19af510SBartosz Golaszewski	select IRQ_WORK
59337cbeb2SBartosz Golaszewski	select IRQ_DOMAIN
60b19af510SBartosz Golaszewski
61f8264e34SJiang Liu# Support for hierarchical irq domains
62f8264e34SJiang Liuconfig IRQ_DOMAIN_HIERARCHY
63f8264e34SJiang Liu	bool
64f8264e34SJiang Liu	select IRQ_DOMAIN
65f8264e34SJiang Liu
66e37af801SMarc Zyngier# Support for obsolete non-mapping irq domains
67e37af801SMarc Zyngierconfig IRQ_DOMAIN_NOMAP
68e37af801SMarc Zyngier	bool
69e37af801SMarc Zyngier	select IRQ_DOMAIN
70e37af801SMarc Zyngier
717703b08cSDavid Daney# Support for hierarchical fasteoi+edge and fasteoi+level handlers
727703b08cSDavid Daneyconfig IRQ_FASTEOI_HIERARCHY_HANDLERS
737703b08cSDavid Daney	bool
747703b08cSDavid Daney
75379b6564SQais Yousef# Generic IRQ IPI support
76379b6564SQais Yousefconfig GENERIC_IRQ_IPI
77379b6564SQais Yousef	bool
780f5209feSSamuel Holland	depends on SMP
79151a5351SMarc Zyngier	select IRQ_DOMAIN_HIERARCHY
80379b6564SQais Yousef
81835a486cSAnup Patel# Generic IRQ IPI Mux support
82835a486cSAnup Patelconfig GENERIC_IRQ_IPI_MUX
83835a486cSAnup Patel	bool
84835a486cSAnup Patel	depends on SMP
85835a486cSAnup Patel
8613e7accbSThomas Gleixner# Generic MSI hierarchical interrupt domain support
87f3cf8bb0SJiang Liuconfig GENERIC_MSI_IRQ
88f3cf8bb0SJiang Liu	bool
89f3cf8bb0SJiang Liu	select IRQ_DOMAIN_HIERARCHY
90f3cf8bb0SJiang Liu
9196093fe5SJason Gunthorpe# irqchip drivers should select this if they call iommu_dma_prepare_msi()
92aaebdf8dSJulien Grallconfig IRQ_MSI_IOMMU
93aaebdf8dSJulien Grall	bool
94aaebdf8dSJulien Grall
95b2d3d61aSDaniel Lezcanoconfig IRQ_TIMINGS
96b2d3d61aSDaniel Lezcano	bool
97b2d3d61aSDaniel Lezcano
982f75d9e1SThomas Gleixnerconfig GENERIC_IRQ_MATRIX_ALLOCATOR
992f75d9e1SThomas Gleixner	bool
1002f75d9e1SThomas Gleixner
1012b5175c4SThomas Gleixnerconfig GENERIC_IRQ_RESERVATION_MODE
1022b5175c4SThomas Gleixner	bool
1032b5175c4SThomas Gleixner
10499cf63c5SBitao Hu# Snapshot for interrupt statistics
10599cf63c5SBitao Huconfig GENERIC_IRQ_STAT_SNAPSHOT
10699cf63c5SBitao Hu	bool
10799cf63c5SBitao Hu
108c68fd4f3SThomas Gleixner# Support forced irq threading
1098d32a307SThomas Gleixnerconfig IRQ_FORCED_THREADING
1108d32a307SThomas Gleixner       bool
1118d32a307SThomas Gleixner
112d9817ebeSThomas Gleixnerconfig SPARSE_IRQ
1132ed86b16SRob Herring	bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
114a7f7f624SMasahiro Yamada	help
115d9817ebeSThomas Gleixner
116d9817ebeSThomas Gleixner	  Sparse irq numbering is useful for distro kernels that want
117d9817ebeSThomas Gleixner	  to define a high CONFIG_NR_CPUS value but still want to have
118d9817ebeSThomas Gleixner	  low kernel memory footprint on smaller machines.
119d9817ebeSThomas Gleixner
120d9817ebeSThomas Gleixner	  ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
121d9817ebeSThomas Gleixner	    out the interrupt descriptors in a more NUMA-friendly way. )
122d9817ebeSThomas Gleixner
123d9817ebeSThomas Gleixner	  If you don't know what to do here, say N.
124d9817ebeSThomas Gleixner
125087cdfb6SThomas Gleixnerconfig GENERIC_IRQ_DEBUGFS
126087cdfb6SThomas Gleixner	bool "Expose irq internals in debugfs"
127087cdfb6SThomas Gleixner	depends on DEBUG_FS
128acd26bcfSThomas Gleixner	select GENERIC_IRQ_INJECTION
129087cdfb6SThomas Gleixner	default n
130a7f7f624SMasahiro Yamada	help
131087cdfb6SThomas Gleixner
132087cdfb6SThomas Gleixner	  Exposes internal state information through debugfs. Mostly for
133087cdfb6SThomas Gleixner	  developers and debugging of hard to diagnose interrupt problems.
134087cdfb6SThomas Gleixner
135087cdfb6SThomas Gleixner	  If you don't know what to do here, say N.
136087cdfb6SThomas Gleixner
137bad6722eSEliav Farber# Clear forwarded VM interrupts during kexec.
138bad6722eSEliav Farber# This option ensures the kernel clears active states for interrupts
139bad6722eSEliav Farber# forwarded to virtual machines (VMs) during a machine kexec.
140bad6722eSEliav Farberconfig GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
141bad6722eSEliav Farber	bool
142bad6722eSEliav Farber
14366067c3cSBrian Norrisconfig IRQ_KUNIT_TEST
14466067c3cSBrian Norris	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
14566067c3cSBrian Norris	depends on KUNIT=y
14666067c3cSBrian Norris	default KUNIT_ALL_TESTS
147*f8a44f9bSBrian Norris	select IRQ_DOMAIN
14866067c3cSBrian Norris	imply SMP
14966067c3cSBrian Norris	help
15066067c3cSBrian Norris	  This option enables KUnit tests for the IRQ subsystem API. These are
15166067c3cSBrian Norris	  only for development and testing, not for regular kernel use cases.
15266067c3cSBrian Norris
15366067c3cSBrian Norris	  If unsure, say N.
15466067c3cSBrian Norris
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