|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | menu "IRQ subsystem" | 
|  | # Options selectable by the architecture code | 
|  |  | 
|  | # Make sparse irq Kconfig switch below available | 
|  | config MAY_HAVE_SPARSE_IRQ | 
|  | bool | 
|  |  | 
|  | # Legacy support, required for itanic | 
|  | config GENERIC_IRQ_LEGACY | 
|  | bool | 
|  |  | 
|  | # Enable the generic irq autoprobe mechanism | 
|  | config GENERIC_IRQ_PROBE | 
|  | bool | 
|  |  | 
|  | # Use the generic /proc/interrupts implementation | 
|  | config GENERIC_IRQ_SHOW | 
|  | bool | 
|  |  | 
|  | # Print level/edge extra information | 
|  | config GENERIC_IRQ_SHOW_LEVEL | 
|  | bool | 
|  |  | 
|  | # Supports effective affinity mask | 
|  | config GENERIC_IRQ_EFFECTIVE_AFF_MASK | 
|  | depends on SMP | 
|  | bool | 
|  |  | 
|  | # Support for delayed migration from interrupt context | 
|  | config GENERIC_PENDING_IRQ | 
|  | bool | 
|  |  | 
|  | # Support for generic irq migrating off cpu before the cpu is offline. | 
|  | config GENERIC_IRQ_MIGRATION | 
|  | bool | 
|  |  | 
|  | # Alpha specific irq affinity mechanism | 
|  | config AUTO_IRQ_AFFINITY | 
|  | bool | 
|  |  | 
|  | # Interrupt injection mechanism | 
|  | config GENERIC_IRQ_INJECTION | 
|  | bool | 
|  |  | 
|  | # Tasklet based software resend for pending interrupts on enable_irq() | 
|  | config HARDIRQS_SW_RESEND | 
|  | bool | 
|  |  | 
|  | # Generic configurable interrupt chip implementation | 
|  | config GENERIC_IRQ_CHIP | 
|  | bool | 
|  | select IRQ_DOMAIN | 
|  |  | 
|  | # Generic irq_domain hw <--> linux irq number translation | 
|  | config IRQ_DOMAIN | 
|  | bool | 
|  |  | 
|  | # Support for simulated interrupts | 
|  | config IRQ_SIM | 
|  | bool | 
|  | select IRQ_WORK | 
|  | select IRQ_DOMAIN | 
|  |  | 
|  | # Support for hierarchical irq domains | 
|  | config IRQ_DOMAIN_HIERARCHY | 
|  | bool | 
|  | select IRQ_DOMAIN | 
|  |  | 
|  | # Support for obsolete non-mapping irq domains | 
|  | config IRQ_DOMAIN_NOMAP | 
|  | bool | 
|  | select IRQ_DOMAIN | 
|  |  | 
|  | # Support for hierarchical fasteoi+edge and fasteoi+level handlers | 
|  | config IRQ_FASTEOI_HIERARCHY_HANDLERS | 
|  | bool | 
|  |  | 
|  | # Generic IRQ IPI support | 
|  | config GENERIC_IRQ_IPI | 
|  | bool | 
|  | depends on SMP | 
|  | select IRQ_DOMAIN_HIERARCHY | 
|  |  | 
|  | # Generic IRQ IPI Mux support | 
|  | config GENERIC_IRQ_IPI_MUX | 
|  | bool | 
|  | depends on SMP | 
|  |  | 
|  | # Generic MSI hierarchical interrupt domain support | 
|  | config GENERIC_MSI_IRQ | 
|  | bool | 
|  | select IRQ_DOMAIN_HIERARCHY | 
|  |  | 
|  | # irqchip drivers should select this if they call iommu_dma_prepare_msi() | 
|  | config IRQ_MSI_IOMMU | 
|  | bool | 
|  |  | 
|  | config IRQ_TIMINGS | 
|  | bool | 
|  |  | 
|  | config GENERIC_IRQ_MATRIX_ALLOCATOR | 
|  | bool | 
|  |  | 
|  | config GENERIC_IRQ_RESERVATION_MODE | 
|  | bool | 
|  |  | 
|  | # Snapshot for interrupt statistics | 
|  | config GENERIC_IRQ_STAT_SNAPSHOT | 
|  | bool | 
|  |  | 
|  | # Support forced irq threading | 
|  | config IRQ_FORCED_THREADING | 
|  | bool | 
|  |  | 
|  | config SPARSE_IRQ | 
|  | bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ | 
|  | help | 
|  |  | 
|  | Sparse irq numbering is useful for distro kernels that want | 
|  | to define a high CONFIG_NR_CPUS value but still want to have | 
|  | low kernel memory footprint on smaller machines. | 
|  |  | 
|  | ( Sparse irqs can also be beneficial on NUMA boxes, as they spread | 
|  | out the interrupt descriptors in a more NUMA-friendly way. ) | 
|  |  | 
|  | If you don't know what to do here, say N. | 
|  |  | 
|  | config GENERIC_IRQ_DEBUGFS | 
|  | bool "Expose irq internals in debugfs" | 
|  | depends on DEBUG_FS | 
|  | select GENERIC_IRQ_INJECTION | 
|  | default n | 
|  | help | 
|  |  | 
|  | Exposes internal state information through debugfs. Mostly for | 
|  | developers and debugging of hard to diagnose interrupt problems. | 
|  |  | 
|  | If you don't know what to do here, say N. | 
|  |  | 
|  | # Clear forwarded VM interrupts during kexec. | 
|  | # This option ensures the kernel clears active states for interrupts | 
|  | # forwarded to virtual machines (VMs) during a machine kexec. | 
|  | config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD | 
|  | bool | 
|  |  | 
|  | config IRQ_KUNIT_TEST | 
|  | bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS | 
|  | depends on KUNIT=y | 
|  | default KUNIT_ALL_TESTS | 
|  | imply SMP | 
|  | help | 
|  | This option enables KUnit tests for the IRQ subsystem API. These are | 
|  | only for development and testing, not for regular kernel use cases. | 
|  |  | 
|  | If unsure, say N. | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | config GENERIC_IRQ_MULTI_HANDLER | 
|  | bool | 
|  | help | 
|  | Allow to specify the low level IRQ handler at run time. | 
|  |  | 
|  | # Cavium Octeon is the last system to use this deprecated option | 
|  | # Do not even think of enabling this on any new platform | 
|  | config DEPRECATED_IRQ_CPU_ONOFFLINE | 
|  | bool | 
|  | depends on CAVIUM_OCTEON_SOC | 
|  | default CAVIUM_OCTEON_SOC |