0001 # SPDX-License-Identifier: GPL-2.0
0002 menu "Generic Driver Options"
0003
0004 config AUXILIARY_BUS
0005 bool
0006
0007 config UEVENT_HELPER
0008 bool "Support for uevent helper"
0009 help
0010 The uevent helper program is forked by the kernel for
0011 every uevent.
0012 Before the switch to the netlink-based uevent source, this was
0013 used to hook hotplug scripts into kernel device events. It
0014 usually pointed to a shell script at /sbin/hotplug.
0015 This should not be used today, because usual systems create
0016 many events at bootup or device discovery in a very short time
0017 frame. One forked process per event can create so many processes
0018 that it creates a high system load, or on smaller systems
0019 it is known to create out-of-memory situations during bootup.
0020
0021 config UEVENT_HELPER_PATH
0022 string "path to uevent helper"
0023 depends on UEVENT_HELPER
0024 default ""
0025 help
0026 To disable user space helper program execution at by default
0027 specify an empty string here. This setting can still be altered
0028 via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper
0029 later at runtime.
0030
0031 config DEVTMPFS
0032 bool "Maintain a devtmpfs filesystem to mount at /dev"
0033 help
0034 This creates a tmpfs/ramfs filesystem instance early at bootup.
0035 In this filesystem, the kernel driver core maintains device
0036 nodes with their default names and permissions for all
0037 registered devices with an assigned major/minor number.
0038 Userspace can modify the filesystem content as needed, add
0039 symlinks, and apply needed permissions.
0040 It provides a fully functional /dev directory, where usually
0041 udev runs on top, managing permissions and adding meaningful
0042 symlinks.
0043 In very limited environments, it may provide a sufficient
0044 functional /dev without any further help. It also allows simple
0045 rescue systems, and reliably handles dynamic major/minor numbers.
0046
0047 Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs
0048 file system will be used instead.
0049
0050 config DEVTMPFS_MOUNT
0051 bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs"
0052 depends on DEVTMPFS
0053 help
0054 This will instruct the kernel to automatically mount the
0055 devtmpfs filesystem at /dev, directly after the kernel has
0056 mounted the root filesystem. The behavior can be overridden
0057 with the commandline parameter: devtmpfs.mount=0|1.
0058 This option does not affect initramfs based booting, here
0059 the devtmpfs filesystem always needs to be mounted manually
0060 after the rootfs is mounted.
0061 With this option enabled, it allows to bring up a system in
0062 rescue mode with init=/bin/sh, even when the /dev directory
0063 on the rootfs is completely empty.
0064
0065 config DEVTMPFS_SAFE
0066 bool "Use nosuid,noexec mount options on devtmpfs"
0067 depends on DEVTMPFS
0068 help
0069 This instructs the kernel to include the MS_NOEXEC and MS_NOSUID mount
0070 flags when mounting devtmpfs.
0071
0072 Notice: If enabled, things like /dev/mem cannot be mmapped
0073 with the PROT_EXEC flag. This can break, for example, non-KMS
0074 video drivers.
0075
0076 config STANDALONE
0077 bool "Select only drivers that don't need compile-time external firmware"
0078 default y
0079 help
0080 Select this option if you don't have magic firmware for drivers that
0081 need it.
0082
0083 If unsure, say Y.
0084
0085 config PREVENT_FIRMWARE_BUILD
0086 bool "Disable drivers features which enable custom firmware building"
0087 default y
0088 help
0089 Say yes to disable driver features which enable building a custom
0090 driver firmware at kernel build time. These drivers do not use the
0091 kernel firmware API to load firmware (CONFIG_FW_LOADER), instead they
0092 use their own custom loading mechanism. The required firmware is
0093 usually shipped with the driver, building the driver firmware
0094 should only be needed if you have an updated firmware source.
0095
0096 Firmware should not be being built as part of kernel, these days
0097 you should always prevent this and say Y here. There are only two
0098 old drivers which enable building of its firmware at kernel build
0099 time:
0100
0101 o CONFIG_WANXL through CONFIG_WANXL_BUILD_FIRMWARE
0102 o CONFIG_SCSI_AIC79XX through CONFIG_AIC79XX_BUILD_FIRMWARE
0103
0104 source "drivers/base/firmware_loader/Kconfig"
0105
0106 config WANT_DEV_COREDUMP
0107 bool
0108 help
0109 Drivers should "select" this option if they desire to use the
0110 device coredump mechanism.
0111
0112 config ALLOW_DEV_COREDUMP
0113 bool "Allow device coredump" if EXPERT
0114 default y
0115 help
0116 This option controls if the device coredump mechanism is available or
0117 not; if disabled, the mechanism will be omitted even if drivers that
0118 can use it are enabled.
0119 Say 'N' for more sensitive systems or systems that don't want
0120 to ever access the information to not have the code, nor keep any
0121 data.
0122
0123 If unsure, say Y.
0124
0125 config DEV_COREDUMP
0126 bool
0127 default y if WANT_DEV_COREDUMP
0128 depends on ALLOW_DEV_COREDUMP
0129
0130 config DEBUG_DRIVER
0131 bool "Driver Core verbose debug messages"
0132 depends on DEBUG_KERNEL
0133 help
0134 Say Y here if you want the Driver core to produce a bunch of
0135 debug messages to the system log. Select this if you are having a
0136 problem with the driver core and want to see more of what is
0137 going on.
0138
0139 If you are unsure about this, say N here.
0140
0141 config DEBUG_DEVRES
0142 bool "Managed device resources verbose debug messages"
0143 depends on DEBUG_KERNEL
0144 help
0145 This option enables kernel parameter devres.log. If set to
0146 non-zero, devres debug messages are printed. Select this if
0147 you are having a problem with devres or want to debug
0148 resource management for a managed device. devres.log can be
0149 switched on and off from sysfs node.
0150
0151 If you are unsure about this, Say N here.
0152
0153 config DEBUG_TEST_DRIVER_REMOVE
0154 bool "Test driver remove calls during probe (UNSTABLE)"
0155 depends on DEBUG_KERNEL
0156 help
0157 Say Y here if you want the Driver core to test driver remove functions
0158 by calling probe, remove, probe. This tests the remove path without
0159 having to unbind the driver or unload the driver module.
0160
0161 This option is expected to find errors and may render your system
0162 unusable. You should say N here unless you are explicitly looking to
0163 test this functionality.
0164
0165 config PM_QOS_KUNIT_TEST
0166 bool "KUnit Test for PM QoS features" if !KUNIT_ALL_TESTS
0167 depends on KUNIT=y
0168 default KUNIT_ALL_TESTS
0169
0170 config HMEM_REPORTING
0171 bool
0172 default n
0173 depends on NUMA
0174 help
0175 Enable reporting for heterogeneous memory access attributes under
0176 their non-uniform memory nodes.
0177
0178 source "drivers/base/test/Kconfig"
0179
0180 config SYS_HYPERVISOR
0181 bool
0182 default n
0183
0184 config GENERIC_CPU_DEVICES
0185 bool
0186 default n
0187
0188 config GENERIC_CPU_AUTOPROBE
0189 bool
0190
0191 config GENERIC_CPU_VULNERABILITIES
0192 bool
0193
0194 config SOC_BUS
0195 bool
0196 select GLOB
0197
0198 source "drivers/base/regmap/Kconfig"
0199
0200 config DMA_SHARED_BUFFER
0201 bool
0202 default n
0203 select IRQ_WORK
0204 help
0205 This option enables the framework for buffer-sharing between
0206 multiple drivers. A buffer is associated with a file using driver
0207 APIs extension; the file's descriptor can then be passed on to other
0208 driver.
0209
0210 config DMA_FENCE_TRACE
0211 bool "Enable verbose DMA_FENCE_TRACE messages"
0212 depends on DMA_SHARED_BUFFER
0213 help
0214 Enable the DMA_FENCE_TRACE printks. This will add extra
0215 spam to the console log, but will make it easier to diagnose
0216 lockup related problems for dma-buffers shared across multiple
0217 devices.
0218
0219 config GENERIC_ARCH_TOPOLOGY
0220 bool
0221 help
0222 Enable support for architectures common topology code: e.g., parsing
0223 CPU capacity information from DT, usage of such information for
0224 appropriate scaling, sysfs interface for reading capacity values at
0225 runtime.
0226
0227 config GENERIC_ARCH_NUMA
0228 bool
0229 help
0230 Enable support for generic NUMA implementation. Currently, RISC-V
0231 and ARM64 use it.
0232
0233 endmenu