1# SPDX-License-Identifier: GPL-2.0-only 2# 3# Drm device configuration 4# 5# This driver provides support for the 6# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. 7# 8menuconfig DRM 9 tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" 10 depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA 11 select DRM_PANEL_ORIENTATION_QUIRKS 12 select HDMI 13 select I2C 14 select DMA_SHARED_BUFFER 15 select SYNC_FILE 16# gallium uses SYS_kcmp for os_same_file_description() to de-duplicate 17# device and dmabuf fd. Let's make sure that is available for our userspace. 18 select KCMP 19 select VIDEO 20 help 21 Kernel-level support for the Direct Rendering Infrastructure (DRI) 22 introduced in XFree86 4.0. If you say Y here, you need to select 23 the module that's right for your graphics card from the list below. 24 These modules provide support for synchronization, security, and 25 DMA transfers. Please see <http://dri.sourceforge.net/> for more 26 details. You should also select and configure AGP 27 (/dev/agpgart) support if it is available for your platform. 28 29if DRM 30 31config DRM_MIPI_DBI 32 tristate 33 depends on DRM 34 select DRM_KMS_HELPER 35 36config DRM_MIPI_DSI 37 bool 38 depends on DRM 39 40config DRM_DEBUG_MM 41 bool "Insert extra checks and debug info into the DRM range managers" 42 default n 43 depends on DRM 44 depends on STACKTRACE_SUPPORT 45 select STACKDEPOT 46 help 47 Enable allocation tracking of memory manager and leak detection on 48 shutdown. 49 50 Recommended for driver developers only. 51 52 If in doubt, say "N". 53 54config DRM_USE_DYNAMIC_DEBUG 55 bool "use dynamic debug to implement drm.debug" 56 default n 57 depends on BROKEN 58 depends on DRM 59 depends on DYNAMIC_DEBUG || DYNAMIC_DEBUG_CORE 60 depends on JUMP_LABEL 61 help 62 Use dynamic-debug to avoid drm_debug_enabled() runtime overheads. 63 Due to callsite counts in DRM drivers (~4k in amdgpu) and 56 64 bytes per callsite, the .data costs can be substantial, and 65 are therefore configurable. 66 67config DRM_KUNIT_TEST_HELPERS 68 tristate 69 depends on DRM && KUNIT 70 select DRM_KMS_HELPER 71 help 72 KUnit Helpers for KMS drivers. 73 74config DRM_KUNIT_TEST 75 tristate "KUnit tests for DRM" if !KUNIT_ALL_TESTS 76 depends on DRM && KUNIT && MMU 77 select DRM_BRIDGE_CONNECTOR 78 select DRM_BUDDY 79 select DRM_DISPLAY_DP_HELPER 80 select DRM_DISPLAY_HDMI_STATE_HELPER 81 select DRM_DISPLAY_HELPER 82 select DRM_EXEC 83 select DRM_EXPORT_FOR_TESTS if m 84 select DRM_GEM_SHMEM_HELPER 85 select DRM_KUNIT_TEST_HELPERS 86 select DRM_LIB_RANDOM 87 select PRIME_NUMBERS 88 default KUNIT_ALL_TESTS 89 help 90 This builds unit tests for DRM. This option is not useful for 91 distributions or general kernels, but only for kernel 92 developers working on DRM and associated drivers. 93 94 For more information on KUnit and unit tests in general, 95 please refer to the KUnit documentation in 96 Documentation/dev-tools/kunit/. 97 98 If in doubt, say "N". 99 100config DRM_KMS_HELPER 101 tristate 102 depends on DRM 103 select FB_CORE if DRM_FBDEV_EMULATION 104 help 105 CRTC helpers for KMS drivers. 106 107config DRM_DRAW 108 bool 109 depends on DRM 110 111config DRM_PANIC 112 bool "Display a user-friendly message when a kernel panic occurs" 113 depends on DRM 114 select FONT_SUPPORT 115 select DRM_DRAW 116 help 117 Enable a drm panic handler, which will display a user-friendly message 118 when a kernel panic occurs. It's useful when using a user-space 119 console instead of fbcon. 120 It will only work if your graphic driver supports this feature. 121 To support Hi-DPI Display, you can enable bigger fonts like 122 FONT_TER16x32 123 124config DRM_PANIC_FOREGROUND_COLOR 125 hex "Drm panic screen foreground color, in RGB" 126 depends on DRM_PANIC 127 default 0xffffff 128 129config DRM_PANIC_BACKGROUND_COLOR 130 hex "Drm panic screen background color, in RGB" 131 depends on DRM_PANIC 132 default 0x000000 133 134config DRM_PANIC_DEBUG 135 bool "Add a debug fs entry to trigger drm_panic" 136 depends on DRM_PANIC && DEBUG_FS 137 help 138 Add dri/[device]/drm_panic_plane_x in the kernel debugfs, to force the 139 panic handler to write the panic message to this plane scanout buffer. 140 This is unsafe and should not be enabled on a production build. 141 If in doubt, say "N". 142 143config DRM_PANIC_SCREEN 144 string "Panic screen formatter" 145 default "user" 146 depends on DRM_PANIC 147 help 148 This option enable to choose what will be displayed when a kernel 149 panic occurs. You can choose between "user", a short message telling 150 the user to reboot the system, or "kmsg" which will display the last 151 lines of kmsg. 152 This can also be overridden by drm.panic_screen=xxxx kernel parameter 153 or by writing to /sys/module/drm/parameters/panic_screen sysfs entry 154 Default is "user" 155 156config DRM_PANIC_SCREEN_QR_CODE 157 bool "Add a panic screen with a QR code" 158 depends on DRM_PANIC && RUST 159 select ZLIB_DEFLATE 160 help 161 This option adds a QR code generator, and a panic screen with a QR 162 code. The QR code will contain the last lines of kmsg and other debug 163 information. This should be easier for the user to report a kernel 164 panic, with all debug information available. 165 To use this panic screen, also set DRM_PANIC_SCREEN to "qr_code" 166 167config DRM_PANIC_SCREEN_QR_CODE_URL 168 string "Base URL of the QR code in the panic screen" 169 depends on DRM_PANIC_SCREEN_QR_CODE 170 help 171 This option sets the base URL to report the kernel panic. If it's set 172 the QR code will contain the URL and the kmsg compressed with zlib as 173 a URL parameter. If it's empty, the QR code will contain the kmsg as 174 uncompressed text only. 175 There is a demo code in javascript, to decode and uncompress the kmsg 176 data from the URL parameter at https://github.com/kdj0c/panic_report 177 178config DRM_PANIC_SCREEN_QR_VERSION 179 int "Maximum version (size) of the QR code." 180 depends on DRM_PANIC_SCREEN_QR_CODE 181 default 40 182 help 183 This option limits the version (or size) of the QR code. QR code 184 version ranges from Version 1 (21x21) to Version 40 (177x177). 185 Smaller QR code are easier to read, but will contain less debugging 186 data. Default is 40. 187 188config DRM_DEBUG_DP_MST_TOPOLOGY_REFS 189 bool "Enable refcount backtrace history in the DP MST helpers" 190 depends on STACKTRACE_SUPPORT 191 select STACKDEPOT 192 depends on DRM_KMS_HELPER 193 depends on DEBUG_KERNEL 194 depends on EXPERT 195 help 196 Enables debug tracing for topology refs in DRM's DP MST helpers. A 197 history of each topology reference/dereference will be printed to the 198 kernel log once a port or branch device's topology refcount reaches 0. 199 200 This has the potential to use a lot of memory and print some very 201 large kernel messages. If in doubt, say "N". 202 203config DRM_DEBUG_MODESET_LOCK 204 bool "Enable backtrace history for lock contention" 205 depends on STACKTRACE_SUPPORT 206 depends on DEBUG_KERNEL 207 depends on EXPERT 208 select STACKDEPOT 209 default y if DEBUG_WW_MUTEX_SLOWPATH 210 help 211 Enable debug tracing of failures to gracefully handle drm modeset lock 212 contention. A history of each drm modeset lock path hitting -EDEADLK 213 will be saved until gracefully handled, and the backtrace will be 214 printed when attempting to lock a contended lock. 215 216 If in doubt, say "N". 217 218config DRM_CLIENT 219 bool 220 depends on DRM 221 help 222 Enables support for DRM clients. DRM drivers that need 223 struct drm_client_dev and its interfaces should select this 224 option. Drivers that support the default clients should 225 select DRM_CLIENT_SELECTION instead. 226 227source "drivers/gpu/drm/clients/Kconfig" 228 229config DRM_LOAD_EDID_FIRMWARE 230 bool "Allow to specify an EDID data set instead of probing for it" 231 depends on DRM 232 help 233 Say Y here, if you want to use EDID data to be loaded from the 234 /lib/firmware directory or one of the provided built-in 235 data sets. This may be necessary, if the graphics adapter or 236 monitor are unable to provide appropriate EDID data. Since this 237 feature is provided as a workaround for broken hardware, the 238 default case is N. Details and instructions how to build your own 239 EDID data are given in Documentation/admin-guide/edid.rst. 240 241source "drivers/gpu/drm/display/Kconfig" 242 243config DRM_TTM 244 tristate 245 depends on DRM && MMU 246 help 247 GPU memory management subsystem for devices with multiple 248 GPU memory types. Will be enabled automatically if a device driver 249 uses it. 250 251config DRM_TTM_KUNIT_TEST 252 tristate "KUnit tests for TTM" if !KUNIT_ALL_TESTS 253 default n 254 depends on DRM && KUNIT && MMU && (UML || COMPILE_TEST) 255 select DRM_TTM 256 select DRM_BUDDY 257 select DRM_EXPORT_FOR_TESTS if m 258 select DRM_KUNIT_TEST_HELPERS 259 default KUNIT_ALL_TESTS 260 help 261 Enables unit tests for TTM, a GPU memory manager subsystem used 262 to manage memory buffers. This option is mostly useful for kernel 263 developers. It depends on (UML || COMPILE_TEST) since no other driver 264 which uses TTM can be loaded while running the tests. 265 266 If in doubt, say "N". 267 268config DRM_EXEC 269 tristate 270 depends on DRM 271 help 272 Execution context for command submissions 273 274config DRM_GPUVM 275 tristate 276 depends on DRM 277 select DRM_EXEC 278 help 279 GPU-VM representation providing helpers to manage a GPUs virtual 280 address space 281 282config DRM_BUDDY 283 tristate 284 depends on DRM 285 help 286 A page based buddy allocator 287 288config DRM_VRAM_HELPER 289 tristate 290 depends on DRM 291 help 292 Helpers for VRAM memory management 293 294config DRM_TTM_HELPER 295 tristate 296 depends on DRM 297 select DRM_TTM 298 select DRM_KMS_HELPER if DRM_FBDEV_EMULATION 299 select FB_CORE if DRM_FBDEV_EMULATION 300 select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION 301 help 302 Helpers for ttm-based gem objects 303 304config DRM_GEM_DMA_HELPER 305 tristate 306 depends on DRM 307 select DRM_KMS_HELPER if DRM_FBDEV_EMULATION 308 select FB_CORE if DRM_FBDEV_EMULATION 309 select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION 310 help 311 Choose this if you need the GEM DMA helper functions 312 313config DRM_GEM_SHMEM_HELPER 314 tristate 315 depends on DRM && MMU 316 select DRM_KMS_HELPER if DRM_FBDEV_EMULATION 317 select FB_CORE if DRM_FBDEV_EMULATION 318 select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION 319 help 320 Choose this if you need the GEM shmem helper functions 321 322config DRM_SUBALLOC_HELPER 323 tristate 324 depends on DRM 325 326config DRM_SCHED 327 tristate 328 depends on DRM 329 330source "drivers/gpu/drm/arm/Kconfig" 331 332source "drivers/gpu/drm/radeon/Kconfig" 333 334source "drivers/gpu/drm/amd/amdgpu/Kconfig" 335 336source "drivers/gpu/drm/nouveau/Kconfig" 337 338source "drivers/gpu/drm/i915/Kconfig" 339 340source "drivers/gpu/drm/xe/Kconfig" 341 342source "drivers/gpu/drm/kmb/Kconfig" 343 344config DRM_VGEM 345 tristate "Virtual GEM provider" 346 depends on DRM && MMU 347 select DRM_GEM_SHMEM_HELPER 348 help 349 Choose this option to get a virtual graphics memory manager, 350 as used by Mesa's software renderer for enhanced performance. 351 If M is selected the module will be called vgem. 352 353source "drivers/gpu/drm/vkms/Kconfig" 354 355source "drivers/gpu/drm/exynos/Kconfig" 356 357source "drivers/gpu/drm/rockchip/Kconfig" 358 359source "drivers/gpu/drm/vmwgfx/Kconfig" 360 361source "drivers/gpu/drm/gma500/Kconfig" 362 363source "drivers/gpu/drm/udl/Kconfig" 364 365source "drivers/gpu/drm/ast/Kconfig" 366 367source "drivers/gpu/drm/mgag200/Kconfig" 368 369source "drivers/gpu/drm/armada/Kconfig" 370 371source "drivers/gpu/drm/atmel-hlcdc/Kconfig" 372 373source "drivers/gpu/drm/renesas/Kconfig" 374 375source "drivers/gpu/drm/sun4i/Kconfig" 376 377source "drivers/gpu/drm/omapdrm/Kconfig" 378 379source "drivers/gpu/drm/tilcdc/Kconfig" 380 381source "drivers/gpu/drm/qxl/Kconfig" 382 383source "drivers/gpu/drm/virtio/Kconfig" 384 385source "drivers/gpu/drm/msm/Kconfig" 386 387source "drivers/gpu/drm/fsl-dcu/Kconfig" 388 389source "drivers/gpu/drm/tegra/Kconfig" 390 391source "drivers/gpu/drm/stm/Kconfig" 392 393source "drivers/gpu/drm/panel/Kconfig" 394 395source "drivers/gpu/drm/bridge/Kconfig" 396 397source "drivers/gpu/drm/sti/Kconfig" 398 399source "drivers/gpu/drm/imx/Kconfig" 400 401source "drivers/gpu/drm/ingenic/Kconfig" 402 403source "drivers/gpu/drm/v3d/Kconfig" 404 405source "drivers/gpu/drm/vc4/Kconfig" 406 407source "drivers/gpu/drm/loongson/Kconfig" 408 409source "drivers/gpu/drm/etnaviv/Kconfig" 410 411source "drivers/gpu/drm/hisilicon/Kconfig" 412 413source "drivers/gpu/drm/logicvc/Kconfig" 414 415source "drivers/gpu/drm/mediatek/Kconfig" 416 417source "drivers/gpu/drm/mxsfb/Kconfig" 418 419source "drivers/gpu/drm/meson/Kconfig" 420 421source "drivers/gpu/drm/tiny/Kconfig" 422 423source "drivers/gpu/drm/pl111/Kconfig" 424 425source "drivers/gpu/drm/tve200/Kconfig" 426 427source "drivers/gpu/drm/xen/Kconfig" 428 429source "drivers/gpu/drm/vboxvideo/Kconfig" 430 431source "drivers/gpu/drm/lima/Kconfig" 432 433source "drivers/gpu/drm/panfrost/Kconfig" 434 435source "drivers/gpu/drm/panthor/Kconfig" 436 437source "drivers/gpu/drm/aspeed/Kconfig" 438 439source "drivers/gpu/drm/mcde/Kconfig" 440 441source "drivers/gpu/drm/tidss/Kconfig" 442 443source "drivers/gpu/drm/adp/Kconfig" 444 445source "drivers/gpu/drm/xlnx/Kconfig" 446 447source "drivers/gpu/drm/gud/Kconfig" 448 449source "drivers/gpu/drm/solomon/Kconfig" 450 451source "drivers/gpu/drm/sprd/Kconfig" 452 453source "drivers/gpu/drm/imagination/Kconfig" 454 455config DRM_HYPERV 456 tristate "DRM Support for Hyper-V synthetic video device" 457 depends on DRM && PCI && MMU && HYPERV 458 select DRM_CLIENT_SELECTION 459 select DRM_KMS_HELPER 460 select DRM_GEM_SHMEM_HELPER 461 help 462 This is a KMS driver for Hyper-V synthetic video device. Choose this 463 option if you would like to enable drm driver for Hyper-V virtual 464 machine. Unselect Hyper-V framebuffer driver (CONFIG_FB_HYPERV) so 465 that DRM driver is used by default. 466 467 If M is selected the module will be called hyperv_drm. 468 469config DRM_EXPORT_FOR_TESTS 470 bool 471 472# Separate option as not all DRM drivers use it 473config DRM_PANEL_BACKLIGHT_QUIRKS 474 tristate 475 476config DRM_LIB_RANDOM 477 bool 478 default n 479 480config DRM_PRIVACY_SCREEN 481 bool 482 default n 483 484config DRM_WERROR 485 bool "Compile the drm subsystem with warnings as errors" 486 depends on DRM && EXPERT 487 depends on !WERROR 488 default n 489 help 490 A kernel build should not cause any compiler warnings, and this 491 enables the '-Werror' flag to enforce that rule in the drm subsystem. 492 493 The drm subsystem enables more warnings than the kernel default, so 494 this config option is disabled by default. 495 496 If in doubt, say N. 497 498config DRM_HEADER_TEST 499 bool "Ensure DRM headers are self-contained and pass kernel-doc" 500 depends on DRM && EXPERT 501 default n 502 help 503 Ensure the DRM subsystem headers both under drivers/gpu/drm and 504 include/drm compile, are self-contained, have header guards, and have 505 no kernel-doc warnings. 506 507 If in doubt, say N. 508 509endif 510 511# Separate option because drm_panel_orientation_quirks.c is shared with fbdev 512config DRM_PANEL_ORIENTATION_QUIRKS 513 tristate 514