1# SPDX-License-Identifier: GPL-2.0 2menu "Generic Driver Options" 3 4config UEVENT_HELPER 5 bool "Support for uevent helper" 6 default y 7 help 8 The uevent helper program is forked by the kernel for 9 every uevent. 10 Before the switch to the netlink-based uevent source, this was 11 used to hook hotplug scripts into kernel device events. It 12 usually pointed to a shell script at /sbin/hotplug. 13 This should not be used today, because usual systems create 14 many events at bootup or device discovery in a very short time 15 frame. One forked process per event can create so many processes 16 that it creates a high system load, or on smaller systems 17 it is known to create out-of-memory situations during bootup. 18 19config UEVENT_HELPER_PATH 20 string "path to uevent helper" 21 depends on UEVENT_HELPER 22 default "" 23 help 24 To disable user space helper program execution at by default 25 specify an empty string here. This setting can still be altered 26 via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper 27 later at runtime. 28 29config DEVTMPFS 30 bool "Maintain a devtmpfs filesystem to mount at /dev" 31 help 32 This creates a tmpfs/ramfs filesystem instance early at bootup. 33 In this filesystem, the kernel driver core maintains device 34 nodes with their default names and permissions for all 35 registered devices with an assigned major/minor number. 36 Userspace can modify the filesystem content as needed, add 37 symlinks, and apply needed permissions. 38 It provides a fully functional /dev directory, where usually 39 udev runs on top, managing permissions and adding meaningful 40 symlinks. 41 In very limited environments, it may provide a sufficient 42 functional /dev without any further help. It also allows simple 43 rescue systems, and reliably handles dynamic major/minor numbers. 44 45 Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs 46 file system will be used instead. 47 48config DEVTMPFS_MOUNT 49 bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs" 50 depends on DEVTMPFS 51 help 52 This will instruct the kernel to automatically mount the 53 devtmpfs filesystem at /dev, directly after the kernel has 54 mounted the root filesystem. The behavior can be overridden 55 with the commandline parameter: devtmpfs.mount=0|1. 56 This option does not affect initramfs based booting, here 57 the devtmpfs filesystem always needs to be mounted manually 58 after the rootfs is mounted. 59 With this option enabled, it allows to bring up a system in 60 rescue mode with init=/bin/sh, even when the /dev directory 61 on the rootfs is completely empty. 62 63config STANDALONE 64 bool "Select only drivers that don't need compile-time external firmware" 65 default y 66 help 67 Select this option if you don't have magic firmware for drivers that 68 need it. 69 70 If unsure, say Y. 71 72config PREVENT_FIRMWARE_BUILD 73 bool "Prevent firmware from being built" 74 default y 75 help 76 Say yes to avoid building firmware. Firmware is usually shipped 77 with the driver and only when updating the firmware should a 78 rebuild be made. 79 If unsure, say Y here. 80 81config FW_LOADER 82 tristate "Userspace firmware loading support" if EXPERT 83 default y 84 ---help--- 85 This option is provided for the case where none of the in-tree modules 86 require userspace firmware loading support, but a module built 87 out-of-tree does. 88 89config EXTRA_FIRMWARE 90 string "External firmware blobs to build into the kernel binary" 91 depends on FW_LOADER 92 help 93 Various drivers in the kernel source tree may require firmware, 94 which is generally available in your distribution's linux-firmware 95 package. 96 97 The linux-firmware package should install firmware into 98 /lib/firmware/ on your system, so they can be loaded by userspace 99 helpers on request. 100 101 This option allows firmware to be built into the kernel for the case 102 where the user either cannot or doesn't want to provide it from 103 userspace at runtime (for example, when the firmware in question is 104 required for accessing the boot device, and the user doesn't want to 105 use an initrd). 106 107 This option is a string and takes the (space-separated) names of the 108 firmware files -- the same names that appear in MODULE_FIRMWARE() 109 and request_firmware() in the source. These files should exist under 110 the directory specified by the EXTRA_FIRMWARE_DIR option, which is 111 /lib/firmware by default. 112 113 For example, you might set CONFIG_EXTRA_FIRMWARE="usb8388.bin", copy 114 the usb8388.bin file into /lib/firmware, and build the kernel. Then 115 any request_firmware("usb8388.bin") will be satisfied internally 116 without needing to call out to userspace. 117 118 WARNING: If you include additional firmware files into your binary 119 kernel image that are not available under the terms of the GPL, 120 then it may be a violation of the GPL to distribute the resulting 121 image since it combines both GPL and non-GPL work. You should 122 consult a lawyer of your own before distributing such an image. 123 124config EXTRA_FIRMWARE_DIR 125 string "Firmware blobs root directory" 126 depends on EXTRA_FIRMWARE != "" 127 default "/lib/firmware" 128 help 129 This option controls the directory in which the kernel build system 130 looks for the firmware files listed in the EXTRA_FIRMWARE option. 131 132config FW_LOADER_USER_HELPER 133 bool 134 135config FW_LOADER_USER_HELPER_FALLBACK 136 bool "Fallback user-helper invocation for firmware loading" 137 depends on FW_LOADER 138 select FW_LOADER_USER_HELPER 139 help 140 This option enables / disables the invocation of user-helper 141 (e.g. udev) for loading firmware files as a fallback after the 142 direct file loading in kernel fails. The user-mode helper is 143 no longer required unless you have a special firmware file that 144 resides in a non-standard path. Moreover, the udev support has 145 been deprecated upstream. 146 147 If you are unsure about this, say N here. 148 149config WANT_DEV_COREDUMP 150 bool 151 help 152 Drivers should "select" this option if they desire to use the 153 device coredump mechanism. 154 155config ALLOW_DEV_COREDUMP 156 bool "Allow device coredump" if EXPERT 157 default y 158 help 159 This option controls if the device coredump mechanism is available or 160 not; if disabled, the mechanism will be omitted even if drivers that 161 can use it are enabled. 162 Say 'N' for more sensitive systems or systems that don't want 163 to ever access the information to not have the code, nor keep any 164 data. 165 166 If unsure, say Y. 167 168config DEV_COREDUMP 169 bool 170 default y if WANT_DEV_COREDUMP 171 depends on ALLOW_DEV_COREDUMP 172 173config DEBUG_DRIVER 174 bool "Driver Core verbose debug messages" 175 depends on DEBUG_KERNEL 176 help 177 Say Y here if you want the Driver core to produce a bunch of 178 debug messages to the system log. Select this if you are having a 179 problem with the driver core and want to see more of what is 180 going on. 181 182 If you are unsure about this, say N here. 183 184config DEBUG_DEVRES 185 bool "Managed device resources verbose debug messages" 186 depends on DEBUG_KERNEL 187 help 188 This option enables kernel parameter devres.log. If set to 189 non-zero, devres debug messages are printed. Select this if 190 you are having a problem with devres or want to debug 191 resource management for a managed device. devres.log can be 192 switched on and off from sysfs node. 193 194 If you are unsure about this, Say N here. 195 196config DEBUG_TEST_DRIVER_REMOVE 197 bool "Test driver remove calls during probe (UNSTABLE)" 198 depends on DEBUG_KERNEL 199 help 200 Say Y here if you want the Driver core to test driver remove functions 201 by calling probe, remove, probe. This tests the remove path without 202 having to unbind the driver or unload the driver module. 203 204 This option is expected to find errors and may render your system 205 unusable. You should say N here unless you are explicitly looking to 206 test this functionality. 207 208source "drivers/base/test/Kconfig" 209 210config SYS_HYPERVISOR 211 bool 212 default n 213 214config GENERIC_CPU_DEVICES 215 bool 216 default n 217 218config GENERIC_CPU_AUTOPROBE 219 bool 220 221config GENERIC_CPU_VULNERABILITIES 222 bool 223 224config SOC_BUS 225 bool 226 select GLOB 227 228source "drivers/base/regmap/Kconfig" 229 230config DMA_SHARED_BUFFER 231 bool 232 default n 233 select ANON_INODES 234 select IRQ_WORK 235 help 236 This option enables the framework for buffer-sharing between 237 multiple drivers. A buffer is associated with a file using driver 238 APIs extension; the file's descriptor can then be passed on to other 239 driver. 240 241config DMA_FENCE_TRACE 242 bool "Enable verbose DMA_FENCE_TRACE messages" 243 depends on DMA_SHARED_BUFFER 244 help 245 Enable the DMA_FENCE_TRACE printks. This will add extra 246 spam to the console log, but will make it easier to diagnose 247 lockup related problems for dma-buffers shared across multiple 248 devices. 249 250config DMA_CMA 251 bool "DMA Contiguous Memory Allocator" 252 depends on HAVE_DMA_CONTIGUOUS && CMA 253 help 254 This enables the Contiguous Memory Allocator which allows drivers 255 to allocate big physically-contiguous blocks of memory for use with 256 hardware components that do not support I/O map nor scatter-gather. 257 258 You can disable CMA by specifying "cma=0" on the kernel's command 259 line. 260 261 For more information see <include/linux/dma-contiguous.h>. 262 If unsure, say "n". 263 264if DMA_CMA 265comment "Default contiguous memory area size:" 266 267config CMA_SIZE_MBYTES 268 int "Size in Mega Bytes" 269 depends on !CMA_SIZE_SEL_PERCENTAGE 270 default 0 if X86 271 default 16 272 help 273 Defines the size (in MiB) of the default memory area for Contiguous 274 Memory Allocator. If the size of 0 is selected, CMA is disabled by 275 default, but it can be enabled by passing cma=size[MG] to the kernel. 276 277 278config CMA_SIZE_PERCENTAGE 279 int "Percentage of total memory" 280 depends on !CMA_SIZE_SEL_MBYTES 281 default 0 if X86 282 default 10 283 help 284 Defines the size of the default memory area for Contiguous Memory 285 Allocator as a percentage of the total memory in the system. 286 If 0 percent is selected, CMA is disabled by default, but it can be 287 enabled by passing cma=size[MG] to the kernel. 288 289choice 290 prompt "Selected region size" 291 default CMA_SIZE_SEL_MBYTES 292 293config CMA_SIZE_SEL_MBYTES 294 bool "Use mega bytes value only" 295 296config CMA_SIZE_SEL_PERCENTAGE 297 bool "Use percentage value only" 298 299config CMA_SIZE_SEL_MIN 300 bool "Use lower value (minimum)" 301 302config CMA_SIZE_SEL_MAX 303 bool "Use higher value (maximum)" 304 305endchoice 306 307config CMA_ALIGNMENT 308 int "Maximum PAGE_SIZE order of alignment for contiguous buffers" 309 range 4 12 310 default 8 311 help 312 DMA mapping framework by default aligns all buffers to the smallest 313 PAGE_SIZE order which is greater than or equal to the requested buffer 314 size. This works well for buffers up to a few hundreds kilobytes, but 315 for larger buffers it just a memory waste. With this parameter you can 316 specify the maximum PAGE_SIZE order for contiguous buffers. Larger 317 buffers will be aligned only to this specified order. The order is 318 expressed as a power of two multiplied by the PAGE_SIZE. 319 320 For example, if your system defaults to 4KiB pages, the order value 321 of 8 means that the buffers will be aligned up to 1MiB only. 322 323 If unsure, leave the default value "8". 324 325endif 326 327config GENERIC_ARCH_TOPOLOGY 328 bool 329 help 330 Enable support for architectures common topology code: e.g., parsing 331 CPU capacity information from DT, usage of such information for 332 appropriate scaling, sysfs interface for changing capacity values at 333 runtime. 334 335endmenu 336