^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) menu "IRQ subsystem"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # Options selectable by the architecture code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) # Make sparse irq Kconfig switch below available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) config MAY_HAVE_SPARSE_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) # Legacy support, required for itanic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) config GENERIC_IRQ_LEGACY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) # Enable the generic irq autoprobe mechanism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) config GENERIC_IRQ_PROBE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # Use the generic /proc/interrupts implementation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) config GENERIC_IRQ_SHOW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # Print level/edge extra information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) config GENERIC_IRQ_SHOW_LEVEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) # Supports effective affinity mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) config GENERIC_IRQ_EFFECTIVE_AFF_MASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) # Facility to allocate a hardware interrupt. This is legacy support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) # and should not be used in new code. Use irq domains instead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) config GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) # Support for delayed migration from interrupt context
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) config GENERIC_PENDING_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) # Support for generic irq migrating off cpu before the cpu is offline.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) config GENERIC_IRQ_MIGRATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) # Alpha specific irq affinity mechanism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) config AUTO_IRQ_AFFINITY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) # Interrupt injection mechanism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) config GENERIC_IRQ_INJECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) # Tasklet based software resend for pending interrupts on enable_irq()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) config HARDIRQS_SW_RESEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) # Edge style eoi based handler (cell)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) config IRQ_EDGE_EOI_HANDLER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) # Generic configurable interrupt chip implementation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) config GENERIC_IRQ_CHIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) select IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) # Generic irq_domain hw <--> linux irq number translation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) config IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) # Support for simulated interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) config IRQ_SIM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) select IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) # Support for hierarchical irq domains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) config IRQ_DOMAIN_HIERARCHY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) select IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) # Support for hierarchical fasteoi+edge and fasteoi+level handlers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) config IRQ_FASTEOI_HIERARCHY_HANDLERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) # Generic IRQ IPI support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) config GENERIC_IRQ_IPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) select IRQ_DOMAIN_HIERARCHY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) # Generic MSI interrupt support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) config GENERIC_MSI_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) # Generic MSI hierarchical interrupt domain support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) config GENERIC_MSI_IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) select IRQ_DOMAIN_HIERARCHY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) select GENERIC_MSI_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) config IRQ_MSI_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) config HANDLE_DOMAIN_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) config IRQ_TIMINGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) config GENERIC_IRQ_MATRIX_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) config GENERIC_IRQ_RESERVATION_MODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) config ARCH_WANTS_IRQ_RAW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) # Support forced irq threading
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) config IRQ_FORCED_THREADING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) config SPARSE_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) Sparse irq numbering is useful for distro kernels that want
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) to define a high CONFIG_NR_CPUS value but still want to have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) low kernel memory footprint on smaller machines.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ( Sparse irqs can also be beneficial on NUMA boxes, as they spread
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) out the interrupt descriptors in a more NUMA-friendly way. )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) If you don't know what to do here, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) config GENERIC_IRQ_DEBUGFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) bool "Expose irq internals in debugfs"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) depends on DEBUG_FS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) select GENERIC_IRQ_INJECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) Exposes internal state information through debugfs. Mostly for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) developers and debugging of hard to diagnose interrupt problems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) If you don't know what to do here, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) config GENERIC_IRQ_MULTI_HANDLER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) Allow to specify the low level IRQ handler at run time.