0001 # SPDX-License-Identifier: GPL-2.0-only
0002 menu "IRQ subsystem"
0003 # Options selectable by the architecture code
0004
0005 # Make sparse irq Kconfig switch below available
0006 config MAY_HAVE_SPARSE_IRQ
0007 bool
0008
0009 # Legacy support, required for itanic
0010 config GENERIC_IRQ_LEGACY
0011 bool
0012
0013 # Enable the generic irq autoprobe mechanism
0014 config GENERIC_IRQ_PROBE
0015 bool
0016
0017 # Use the generic /proc/interrupts implementation
0018 config GENERIC_IRQ_SHOW
0019 bool
0020
0021 # Print level/edge extra information
0022 config GENERIC_IRQ_SHOW_LEVEL
0023 bool
0024
0025 # Supports effective affinity mask
0026 config GENERIC_IRQ_EFFECTIVE_AFF_MASK
0027 depends on SMP
0028 bool
0029
0030 # Support for delayed migration from interrupt context
0031 config GENERIC_PENDING_IRQ
0032 bool
0033
0034 # Support for generic irq migrating off cpu before the cpu is offline.
0035 config GENERIC_IRQ_MIGRATION
0036 bool
0037
0038 # Alpha specific irq affinity mechanism
0039 config AUTO_IRQ_AFFINITY
0040 bool
0041
0042 # Interrupt injection mechanism
0043 config GENERIC_IRQ_INJECTION
0044 bool
0045
0046 # Tasklet based software resend for pending interrupts on enable_irq()
0047 config HARDIRQS_SW_RESEND
0048 bool
0049
0050 # Edge style eoi based handler (cell)
0051 config IRQ_EDGE_EOI_HANDLER
0052 bool
0053
0054 # Generic configurable interrupt chip implementation
0055 config GENERIC_IRQ_CHIP
0056 bool
0057 select IRQ_DOMAIN
0058
0059 # Generic irq_domain hw <--> linux irq number translation
0060 config IRQ_DOMAIN
0061 bool
0062
0063 # Support for simulated interrupts
0064 config IRQ_SIM
0065 bool
0066 select IRQ_WORK
0067 select IRQ_DOMAIN
0068
0069 # Support for hierarchical irq domains
0070 config IRQ_DOMAIN_HIERARCHY
0071 bool
0072 select IRQ_DOMAIN
0073
0074 # Support for obsolete non-mapping irq domains
0075 config IRQ_DOMAIN_NOMAP
0076 bool
0077 select IRQ_DOMAIN
0078
0079 # Support for hierarchical fasteoi+edge and fasteoi+level handlers
0080 config IRQ_FASTEOI_HIERARCHY_HANDLERS
0081 bool
0082
0083 # Generic IRQ IPI support
0084 config GENERIC_IRQ_IPI
0085 bool
0086 depends on SMP
0087 select IRQ_DOMAIN_HIERARCHY
0088
0089 # Generic MSI interrupt support
0090 config GENERIC_MSI_IRQ
0091 bool
0092
0093 # Generic MSI hierarchical interrupt domain support
0094 config GENERIC_MSI_IRQ_DOMAIN
0095 bool
0096 select IRQ_DOMAIN_HIERARCHY
0097 select GENERIC_MSI_IRQ
0098
0099 config IRQ_MSI_IOMMU
0100 bool
0101
0102 config IRQ_TIMINGS
0103 bool
0104
0105 config GENERIC_IRQ_MATRIX_ALLOCATOR
0106 bool
0107
0108 config GENERIC_IRQ_RESERVATION_MODE
0109 bool
0110
0111 # Support forced irq threading
0112 config IRQ_FORCED_THREADING
0113 bool
0114
0115 config SPARSE_IRQ
0116 bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
0117 help
0118
0119 Sparse irq numbering is useful for distro kernels that want
0120 to define a high CONFIG_NR_CPUS value but still want to have
0121 low kernel memory footprint on smaller machines.
0122
0123 ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
0124 out the interrupt descriptors in a more NUMA-friendly way. )
0125
0126 If you don't know what to do here, say N.
0127
0128 config GENERIC_IRQ_DEBUGFS
0129 bool "Expose irq internals in debugfs"
0130 depends on DEBUG_FS
0131 select GENERIC_IRQ_INJECTION
0132 default n
0133 help
0134
0135 Exposes internal state information through debugfs. Mostly for
0136 developers and debugging of hard to diagnose interrupt problems.
0137
0138 If you don't know what to do here, say N.
0139
0140 endmenu
0141
0142 config GENERIC_IRQ_MULTI_HANDLER
0143 bool
0144 help
0145 Allow to specify the low level IRQ handler at run time.
0146
0147 # Cavium Octeon is the last system to use this deprecated option
0148 # Do not even think of enabling this on any new platform
0149 config DEPRECATED_IRQ_CPU_ONOFFLINE
0150 bool
0151 depends on CAVIUM_OCTEON_SOC
0152 default CAVIUM_OCTEON_SOC