1 # SPDX-License-Identifier: GPL-2.0-only 2 3 config NO_DMA 4 bool 5 6 config HAS_DMA 7 bool 8 depends on !NO_DMA 9 default y 10 11 config DMA_OPS_HELPERS 12 bool 13 14 # 15 # IOMMU drivers that can bypass the IOMMU code 16 # mapping fast path should select this option 17 # flag in struct device where applicable 18 # 19 config DMA_OPS_BYPASS 20 bool 21 22 # Lets platform IOMMU driver choose between by 23 config ARCH_HAS_DMA_MAP_DIRECT 24 bool 25 26 config NEED_SG_DMA_FLAGS 27 bool 28 29 config NEED_SG_DMA_LENGTH 30 bool 31 32 config NEED_DMA_MAP_STATE 33 bool 34 35 config ARCH_DMA_ADDR_T_64BIT 36 def_bool 64BIT || PHYS_ADDR_T_64BIT 37 38 config ARCH_HAS_DMA_SET_MASK 39 bool 40 41 # 42 # Select this option if the architecture needs 43 # DMA_ATTR_WRITE_COMBINE. Normally the "uncac 44 # people think of when saying write combine, s 45 # need to enable this. 46 # 47 config ARCH_HAS_DMA_WRITE_COMBINE 48 bool 49 50 # 51 # Select if the architectures provides the arc 52 # 53 config ARCH_HAS_DMA_MARK_CLEAN 54 bool 55 56 config DMA_DECLARE_COHERENT 57 bool 58 59 config ARCH_HAS_SETUP_DMA_OPS 60 bool 61 62 config ARCH_HAS_TEARDOWN_DMA_OPS 63 bool 64 65 config ARCH_HAS_SYNC_DMA_FOR_DEVICE 66 bool 67 68 config ARCH_HAS_SYNC_DMA_FOR_CPU 69 bool 70 select NEED_DMA_MAP_STATE 71 72 config ARCH_HAS_SYNC_DMA_FOR_CPU_ALL 73 bool 74 75 config ARCH_HAS_DMA_PREP_COHERENT 76 bool 77 78 config ARCH_HAS_FORCE_DMA_UNENCRYPTED 79 bool 80 81 # 82 # Select this option if the architecture assum 83 # by default. 84 # 85 config ARCH_DMA_DEFAULT_COHERENT 86 bool 87 88 config SWIOTLB 89 bool 90 select NEED_DMA_MAP_STATE 91 92 config SWIOTLB_DYNAMIC 93 bool "Dynamic allocation of DMA bounce 94 default n 95 depends on SWIOTLB 96 help 97 This enables dynamic resizing of the 98 starts with one memory pool at boot 99 pools as needed. To reduce run-time 100 may have to specify a smaller size o 101 "swiotlb=" on the kernel command lin 102 103 If unsure, say N. 104 105 config DMA_BOUNCE_UNALIGNED_KMALLOC 106 bool 107 depends on SWIOTLB 108 109 config DMA_NEED_SYNC 110 def_bool ARCH_HAS_SYNC_DMA_FOR_DEVICE 111 ARCH_HAS_SYNC_DMA_FOR_CPU_ALL 112 ARCH_HAS_DMA_OPS || SWIOTLB 113 114 config DMA_RESTRICTED_POOL 115 bool "DMA Restricted Pool" 116 depends on OF && OF_RESERVED_MEM && SW 117 help 118 This enables support for restricted 119 DMA memory protection on systems wit 120 capabilities, such as those lacking 121 122 For more information see 123 <Documentation/devicetree/bindings/r 124 and <kernel/dma/swiotlb.c>. 125 If unsure, say "n". 126 127 # 128 # Should be selected if we can mmap non-cohere 129 # The only thing that is really required is a 130 # in the pagetables 131 # 132 config DMA_NONCOHERENT_MMAP 133 default y if !MMU 134 bool 135 136 config DMA_COHERENT_POOL 137 select GENERIC_ALLOCATOR 138 bool 139 140 config DMA_GLOBAL_POOL 141 select DMA_DECLARE_COHERENT 142 depends on !ARCH_HAS_DMA_SET_UNCACHED 143 depends on !DMA_DIRECT_REMAP 144 bool 145 146 config DMA_DIRECT_REMAP 147 bool 148 select DMA_COHERENT_POOL 149 select DMA_NONCOHERENT_MMAP 150 151 # 152 # Fallback to arch code for DMA allocations. 153 # 154 config ARCH_HAS_DMA_ALLOC 155 depends on !ARCH_HAS_DMA_SET_UNCACHED 156 depends on !DMA_DIRECT_REMAP 157 depends on !DMA_GLOBAL_POOL 158 bool 159 160 config DMA_CMA 161 bool "DMA Contiguous Memory Allocator" 162 depends on HAVE_DMA_CONTIGUOUS && CMA 163 help 164 This enables the Contiguous Memory A 165 to allocate big physically-contiguou 166 hardware components that do not supp 167 168 You can disable CMA by specifying "c 169 line. 170 171 For more information see <kernel/dma 172 If unsure, say "n". 173 174 if DMA_CMA 175 176 config DMA_NUMA_CMA 177 bool "Enable separate DMA Contiguous M 178 depends on NUMA 179 help 180 Enable this option to get numa CMA a 181 can get local memory by DMA coherent 182 183 You can set the size of pernuma CMA 184 or set the node id and its size of C 185 <node>:size[,<node>:size]" on the ke 186 187 comment "Default contiguous memory area size:" 188 189 config CMA_SIZE_MBYTES 190 int "Size in Mega Bytes" 191 depends on !CMA_SIZE_SEL_PERCENTAGE 192 default 0 if X86 193 default 16 194 help 195 Defines the size (in MiB) of the def 196 Memory Allocator. If the size of 0 197 default, but it can be enabled by pa 198 199 200 config CMA_SIZE_PERCENTAGE 201 int "Percentage of total memory" 202 depends on !CMA_SIZE_SEL_MBYTES 203 default 0 if X86 204 default 10 205 help 206 Defines the size of the default memo 207 Allocator as a percentage of the tot 208 If 0 percent is selected, CMA is dis 209 enabled by passing cma=size[MG] to t 210 211 choice 212 prompt "Selected region size" 213 default CMA_SIZE_SEL_MBYTES 214 215 config CMA_SIZE_SEL_MBYTES 216 bool "Use mega bytes value only" 217 218 config CMA_SIZE_SEL_PERCENTAGE 219 bool "Use percentage value only" 220 221 config CMA_SIZE_SEL_MIN 222 bool "Use lower value (minimum)" 223 224 config CMA_SIZE_SEL_MAX 225 bool "Use higher value (maximum)" 226 227 endchoice 228 229 config CMA_ALIGNMENT 230 int "Maximum PAGE_SIZE order of alignm 231 range 2 12 232 default 8 233 help 234 DMA mapping framework by default ali 235 PAGE_SIZE order which is greater tha 236 size. This works well for buffers up 237 for larger buffers it just a memory 238 specify the maximum PAGE_SIZE order 239 buffers will be aligned only to this 240 expressed as a power of two multipli 241 242 For example, if your system defaults 243 of 8 means that the buffers will be 244 245 If unsure, leave the default value " 246 247 endif 248 249 config DMA_API_DEBUG 250 bool "Enable debugging of DMA-API usag 251 select NEED_DMA_MAP_STATE 252 help 253 Enable this option to debug the use 254 With this option you will be able to 255 drivers like double-freeing of DMA m 256 were never allocated. 257 258 This option causes a performance deg 259 debug device drivers and dma interac 260 261 If unsure, say N. 262 263 config DMA_API_DEBUG_SG 264 bool "Debug DMA scatter-gather usage" 265 default y 266 depends on DMA_API_DEBUG 267 help 268 Perform extra checking that callers 269 appropriate segment length/boundary 270 preparing DMA scatterlists. 271 272 This is particularly likely to have 273 dma_map_sg() API is used for general 274 preparing literal scatter-gather des 275 unexpected behaviour from DMA API im 276 is technically out-of-spec. 277 278 If unsure, say N. 279 280 config DMA_MAP_BENCHMARK 281 bool "Enable benchmarking of streaming 282 depends on DEBUG_FS 283 help 284 Provides /sys/kernel/debug/dma_map_b 285 performance of dma_(un)map_page. 286 287 See tools/testing/selftests/dma/dma_
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.