xref: /linux/kernel/irq/Kconfig (revision c119e6685311cef0e4a4e0b7752293bea056bac7)
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 GENERIC_IRQ_MATRIX_ALLOCATOR
96	bool
97
98config GENERIC_IRQ_RESERVATION_MODE
99	bool
100
101# Snapshot for interrupt statistics
102config GENERIC_IRQ_STAT_SNAPSHOT
103	bool
104
105# Support forced irq threading
106config IRQ_FORCED_THREADING
107       bool
108
109config SPARSE_IRQ
110	bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
111	help
112
113	  Sparse irq numbering is useful for distro kernels that want
114	  to define a high CONFIG_NR_CPUS value but still want to have
115	  low kernel memory footprint on smaller machines.
116
117	  ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
118	    out the interrupt descriptors in a more NUMA-friendly way. )
119
120	  If you don't know what to do here, say N.
121
122config GENERIC_IRQ_DEBUGFS
123	bool "Expose irq internals in debugfs"
124	depends on DEBUG_FS
125	select GENERIC_IRQ_INJECTION
126	default n
127	help
128
129	  Exposes internal state information through debugfs. Mostly for
130	  developers and debugging of hard to diagnose interrupt problems.
131
132	  If you don't know what to do here, say N.
133
134# Clear forwarded VM interrupts during kexec.
135# This option ensures the kernel clears active states for interrupts
136# forwarded to virtual machines (VMs) during a machine kexec.
137config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
138	bool
139
140config IRQ_KUNIT_TEST
141	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
142	depends on KUNIT=y
143	depends on SPARSE_IRQ
144	default KUNIT_ALL_TESTS
145	select IRQ_DOMAIN
146	imply SMP
147	help
148	  This option enables KUnit tests for the IRQ subsystem API. These are
149	  only for development and testing, not for regular kernel use cases.
150
151	  If unsure, say N.
152
153endmenu
154
155config GENERIC_IRQ_MULTI_HANDLER
156	bool
157	help
158	  Allow to specify the low level IRQ handler at run time.
159
160# Cavium Octeon is the last system to use this deprecated option
161# Do not even think of enabling this on any new platform
162config DEPRECATED_IRQ_CPU_ONOFFLINE
163	bool
164	depends on CAVIUM_OCTEON_SOC
165	default CAVIUM_OCTEON_SOC
166