1 # SPDX-License-Identifier: GPL-2.0-only << 2 << 3 config NO_DMA << 4 bool << 5 1 6 config HAS_DMA 2 config HAS_DMA 7 bool 3 bool 8 depends on !NO_DMA 4 depends on !NO_DMA 9 default y 5 default y 10 6 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 7 config NEED_SG_DMA_LENGTH 30 bool 8 bool 31 9 32 config NEED_DMA_MAP_STATE 10 config NEED_DMA_MAP_STATE 33 bool 11 bool 34 12 35 config ARCH_DMA_ADDR_T_64BIT 13 config ARCH_DMA_ADDR_T_64BIT 36 def_bool 64BIT || PHYS_ADDR_T_64BIT 14 def_bool 64BIT || PHYS_ADDR_T_64BIT 37 15 38 config ARCH_HAS_DMA_SET_MASK !! 16 config ARCH_HAS_DMA_COHERENCE_H 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 17 bool 61 18 62 config ARCH_HAS_TEARDOWN_DMA_OPS !! 19 config HAVE_GENERIC_DMA_COHERENT 63 bool 20 bool 64 21 65 config ARCH_HAS_SYNC_DMA_FOR_DEVICE 22 config ARCH_HAS_SYNC_DMA_FOR_DEVICE 66 bool 23 bool 67 24 68 config ARCH_HAS_SYNC_DMA_FOR_CPU 25 config ARCH_HAS_SYNC_DMA_FOR_CPU 69 bool 26 bool 70 select NEED_DMA_MAP_STATE 27 select NEED_DMA_MAP_STATE 71 28 72 config ARCH_HAS_SYNC_DMA_FOR_CPU_ALL 29 config ARCH_HAS_SYNC_DMA_FOR_CPU_ALL 73 bool 30 bool 74 31 75 config ARCH_HAS_DMA_PREP_COHERENT !! 32 config ARCH_HAS_DMA_COHERENT_TO_PFN 76 bool 33 bool 77 34 78 config ARCH_HAS_FORCE_DMA_UNENCRYPTED !! 35 config ARCH_HAS_DMA_MMAP_PGPROT 79 bool 36 bool 80 37 81 # !! 38 config DMA_DIRECT_OPS 82 # Select this option if the architecture assum << 83 # by default. << 84 # << 85 config ARCH_DMA_DEFAULT_COHERENT << 86 bool 39 bool >> 40 depends on HAS_DMA 87 41 88 config SWIOTLB !! 42 config DMA_NONCOHERENT_CACHE_SYNC 89 bool 43 bool 90 select NEED_DMA_MAP_STATE !! 44 depends on DMA_DIRECT_OPS 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 45 245 If unsure, leave the default value " !! 46 config DMA_VIRT_OPS 246 !! 47 bool 247 endif !! 48 depends on HAS_DMA 248 49 249 config DMA_API_DEBUG !! 50 config SWIOTLB 250 bool "Enable debugging of DMA-API usag !! 51 bool >> 52 select DMA_DIRECT_OPS 251 select NEED_DMA_MAP_STATE 53 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.