xref: /linux/kernel/irq/Kconfig (revision 3b2074c77d25f453247163300d5638adfab4e4fa)
1# SPDX-License-Identifier: GPL-2.0-only
2menu "IRQ subsystem"
3# Options selectable by the architecture code
4
5# Make sparse irq Kconfig switch below available
6config MAY_HAVE_SPARSE_IRQ
7       bool
8
9# Enable the generic irq autoprobe mechanism
10config GENERIC_IRQ_PROBE
11	bool
12
13# Use the generic /proc/interrupts implementation
14config GENERIC_IRQ_SHOW
15       bool
16
17# Print level/edge extra information
18config GENERIC_IRQ_SHOW_LEVEL
19       bool
20
21# Supports effective affinity mask
22config GENERIC_IRQ_EFFECTIVE_AFF_MASK
23       depends on SMP
24       bool
25
26# Support for delayed migration from interrupt context
27config GENERIC_PENDING_IRQ
28	bool
29
30# Support for generic irq migrating off cpu before the cpu is offline.
31config GENERIC_IRQ_MIGRATION
32	bool
33
34# Alpha specific irq affinity mechanism
35config AUTO_IRQ_AFFINITY
36       bool
37
38# Interrupt injection mechanism
39config GENERIC_IRQ_INJECTION
40	bool
41
42# Tasklet based software resend for pending interrupts on enable_irq()
43config HARDIRQS_SW_RESEND
44       bool
45
46# Generic configurable interrupt chip implementation
47config GENERIC_IRQ_CHIP
48       bool
49       select IRQ_DOMAIN
50
51# Generic irq_domain hw <--> linux irq number translation
52config IRQ_DOMAIN
53	bool
54
55# Support for simulated interrupts
56config IRQ_SIM
57	bool
58	select IRQ_WORK
59	select IRQ_DOMAIN
60
61# Support for hierarchical irq domains
62config IRQ_DOMAIN_HIERARCHY
63	bool
64	select IRQ_DOMAIN
65
66# Support for obsolete non-mapping irq domains
67config IRQ_DOMAIN_NOMAP
68	bool
69	select IRQ_DOMAIN
70
71# Support for hierarchical fasteoi+edge and fasteoi+level handlers
72config IRQ_FASTEOI_HIERARCHY_HANDLERS
73	bool
74
75# Generic IRQ IPI support
76config GENERIC_IRQ_IPI
77	bool
78	depends on SMP
79	select IRQ_DOMAIN_HIERARCHY
80
81# Generic IRQ IPI Mux support
82config GENERIC_IRQ_IPI_MUX
83	bool
84	depends on SMP
85
86# Generic MSI hierarchical interrupt domain support
87config GENERIC_MSI_IRQ
88	bool
89	select IRQ_DOMAIN_HIERARCHY
90
91# irqchip drivers should select this if they call iommu_dma_prepare_msi()
92config IRQ_MSI_IOMMU
93	bool
94
95config IRQ_TIMINGS
96	bool
97
98config GENERIC_IRQ_MATRIX_ALLOCATOR
99	bool
100
101config GENERIC_IRQ_RESERVATION_MODE
102	bool
103
104# Snapshot for interrupt statistics
105config GENERIC_IRQ_STAT_SNAPSHOT
106	bool
107
108# Support forced irq threading
109config IRQ_FORCED_THREADING
110       bool
111
112config SPARSE_IRQ
113	bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
114	help
115
116	  Sparse irq numbering is useful for distro kernels that want
117	  to define a high CONFIG_NR_CPUS value but still want to have
118	  low kernel memory footprint on smaller machines.
119
120	  ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
121	    out the interrupt descriptors in a more NUMA-friendly way. )
122
123	  If you don't know what to do here, say N.
124
125config GENERIC_IRQ_DEBUGFS
126	bool "Expose irq internals in debugfs"
127	depends on DEBUG_FS
128	select GENERIC_IRQ_INJECTION
129	default n
130	help
131
132	  Exposes internal state information through debugfs. Mostly for
133	  developers and debugging of hard to diagnose interrupt problems.
134
135	  If you don't know what to do here, say N.
136
137# Clear forwarded VM interrupts during kexec.
138# This option ensures the kernel clears active states for interrupts
139# forwarded to virtual machines (VMs) during a machine kexec.
140config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
141	bool
142
143config IRQ_KUNIT_TEST
144	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
145	depends on KUNIT=y
146	depends on SPARSE_IRQ
147	default KUNIT_ALL_TESTS
148	select IRQ_DOMAIN
149	imply SMP
150	help
151	  This option enables KUnit tests for the IRQ subsystem API. These are
152	  only for development and testing, not for regular kernel use cases.
153
154	  If unsure, say N.
155
156endmenu
157
158config GENERIC_IRQ_MULTI_HANDLER
159	bool
160	help
161	  Allow to specify the low level IRQ handler at run time.
162
163# Cavium Octeon is the last system to use this deprecated option
164# Do not even think of enabling this on any new platform
165config DEPRECATED_IRQ_CPU_ONOFFLINE
166	bool
167	depends on CAVIUM_OCTEON_SOC
168	default CAVIUM_OCTEON_SOC
169