| # SPDX-License-Identifier: GPL-2.0-only |
| # |
| # Drm device configuration |
| # |
| # This driver provides support for the |
| # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. |
| # |
| menuconfig DRM |
| tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" |
| depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA |
| select DRM_PANEL_ORIENTATION_QUIRKS |
| select HDMI |
| select I2C |
| select DMA_SHARED_BUFFER |
| select SYNC_FILE |
| # gallium uses SYS_kcmp for os_same_file_description() to de-duplicate |
| # device and dmabuf fd. Let's make sure that is available for our userspace. |
| select KCMP |
| select VIDEO |
| help |
| Kernel-level support for the Direct Rendering Infrastructure (DRI) |
| introduced in XFree86 4.0. If you say Y here, you need to select |
| the module that's right for your graphics card from the list below. |
| These modules provide support for synchronization, security, and |
| DMA transfers. Please see <http://dri.sourceforge.net/> for more |
| details. You should also select and configure AGP |
| (/dev/agpgart) support if it is available for your platform. |
| |
| if DRM |
| |
| config DRM_MIPI_DBI |
| tristate |
| depends on DRM |
| select DRM_KMS_HELPER |
| |
| config DRM_MIPI_DSI |
| bool |
| depends on DRM |
| |
| config DRM_DEBUG_MM |
| bool "Insert extra checks and debug info into the DRM range managers" |
| default n |
| depends on DRM |
| depends on STACKTRACE_SUPPORT |
| select STACKDEPOT |
| help |
| Enable allocation tracking of memory manager and leak detection on |
| shutdown. |
| |
| Recommended for driver developers only. |
| |
| If in doubt, say "N". |
| |
| config DRM_USE_DYNAMIC_DEBUG |
| bool "use dynamic debug to implement drm.debug" |
| default n |
| depends on BROKEN |
| depends on DRM |
| depends on DYNAMIC_DEBUG || DYNAMIC_DEBUG_CORE |
| depends on JUMP_LABEL |
| help |
| Use dynamic-debug to avoid drm_debug_enabled() runtime overheads. |
| Due to callsite counts in DRM drivers (~4k in amdgpu) and 56 |
| bytes per callsite, the .data costs can be substantial, and |
| are therefore configurable. |
| |
| config DRM_KUNIT_TEST_HELPERS |
| tristate |
| depends on DRM && KUNIT |
| select DRM_KMS_HELPER |
| help |
| KUnit Helpers for KMS drivers. |
| |
| config DRM_KUNIT_TEST |
| tristate "KUnit tests for DRM" if !KUNIT_ALL_TESTS |
| depends on DRM && KUNIT && MMU |
| select DRM_BUDDY |
| select DRM_DISPLAY_DP_HELPER |
| select DRM_DISPLAY_HDMI_STATE_HELPER |
| select DRM_DISPLAY_HELPER |
| select DRM_EXEC |
| select DRM_EXPORT_FOR_TESTS if m |
| select DRM_GEM_SHMEM_HELPER |
| select DRM_KUNIT_TEST_HELPERS |
| select DRM_LIB_RANDOM |
| select PRIME_NUMBERS |
| default KUNIT_ALL_TESTS |
| help |
| This builds unit tests for DRM. This option is not useful for |
| distributions or general kernels, but only for kernel |
| developers working on DRM and associated drivers. |
| |
| For more information on KUnit and unit tests in general, |
| please refer to the KUnit documentation in |
| Documentation/dev-tools/kunit/. |
| |
| If in doubt, say "N". |
| |
| config DRM_KMS_HELPER |
| tristate |
| depends on DRM |
| help |
| CRTC helpers for KMS drivers. |
| |
| config DRM_PANIC |
| bool "Display a user-friendly message when a kernel panic occurs" |
| depends on DRM |
| select FONT_SUPPORT |
| help |
| Enable a drm panic handler, which will display a user-friendly message |
| when a kernel panic occurs. It's useful when using a user-space |
| console instead of fbcon. |
| It will only work if your graphic driver supports this feature. |
| To support Hi-DPI Display, you can enable bigger fonts like |
| FONT_TER16x32 |
| |
| config DRM_PANIC_FOREGROUND_COLOR |
| hex "Drm panic screen foreground color, in RGB" |
| depends on DRM_PANIC |
| default 0xffffff |
| |
| config DRM_PANIC_BACKGROUND_COLOR |
| hex "Drm panic screen background color, in RGB" |
| depends on DRM_PANIC |
| default 0x000000 |
| |
| config DRM_PANIC_DEBUG |
| bool "Add a debug fs entry to trigger drm_panic" |
| depends on DRM_PANIC && DEBUG_FS |
| help |
| Add dri/[device]/drm_panic_plane_x in the kernel debugfs, to force the |
| panic handler to write the panic message to this plane scanout buffer. |
| This is unsafe and should not be enabled on a production build. |
| If in doubt, say "N". |
| |
| config DRM_PANIC_SCREEN |
| string "Panic screen formatter" |
| default "user" |
| depends on DRM_PANIC |
| help |
| This option enable to choose what will be displayed when a kernel |
| panic occurs. You can choose between "user", a short message telling |
| the user to reboot the system, or "kmsg" which will display the last |
| lines of kmsg. |
| This can also be overridden by drm.panic_screen=xxxx kernel parameter |
| or by writing to /sys/module/drm/parameters/panic_screen sysfs entry |
| Default is "user" |
| |
| config DRM_PANIC_SCREEN_QR_CODE |
| bool "Add a panic screen with a QR code" |
| depends on DRM_PANIC && RUST |
| select ZLIB_DEFLATE |
| help |
| This option adds a QR code generator, and a panic screen with a QR |
| code. The QR code will contain the last lines of kmsg and other debug |
| information. This should be easier for the user to report a kernel |
| panic, with all debug information available. |
| To use this panic screen, also set DRM_PANIC_SCREEN to "qr_code" |
| |
| config DRM_PANIC_SCREEN_QR_CODE_URL |
| string "Base URL of the QR code in the panic screen" |
| depends on DRM_PANIC_SCREEN_QR_CODE |
| help |
| This option sets the base URL to report the kernel panic. If it's set |
| the QR code will contain the URL and the kmsg compressed with zlib as |
| a URL parameter. If it's empty, the QR code will contain the kmsg as |
| uncompressed text only. |
| There is a demo code in javascript, to decode and uncompress the kmsg |
| data from the URL parameter at https://github.com/kdj0c/panic_report |
| |
| config DRM_PANIC_SCREEN_QR_VERSION |
| int "Maximum version (size) of the QR code." |
| depends on DRM_PANIC_SCREEN_QR_CODE |
| default 40 |
| help |
| This option limits the version (or size) of the QR code. QR code |
| version ranges from Version 1 (21x21) to Version 40 (177x177). |
| Smaller QR code are easier to read, but will contain less debugging |
| data. Default is 40. |
| |
| config DRM_DEBUG_DP_MST_TOPOLOGY_REFS |
| bool "Enable refcount backtrace history in the DP MST helpers" |
| depends on STACKTRACE_SUPPORT |
| select STACKDEPOT |
| depends on DRM_KMS_HELPER |
| depends on DEBUG_KERNEL |
| depends on EXPERT |
| help |
| Enables debug tracing for topology refs in DRM's DP MST helpers. A |
| history of each topology reference/dereference will be printed to the |
| kernel log once a port or branch device's topology refcount reaches 0. |
| |
| This has the potential to use a lot of memory and print some very |
| large kernel messages. If in doubt, say "N". |
| |
| config DRM_DEBUG_MODESET_LOCK |
| bool "Enable backtrace history for lock contention" |
| depends on STACKTRACE_SUPPORT |
| depends on DEBUG_KERNEL |
| depends on EXPERT |
| select STACKDEPOT |
| default y if DEBUG_WW_MUTEX_SLOWPATH |
| help |
| Enable debug tracing of failures to gracefully handle drm modeset lock |
| contention. A history of each drm modeset lock path hitting -EDEADLK |
| will be saved until gracefully handled, and the backtrace will be |
| printed when attempting to lock a contended lock. |
| |
| If in doubt, say "N". |
| |
| config DRM_CLIENT |
| bool |
| depends on DRM |
| help |
| Enables support for DRM clients. DRM drivers that need |
| struct drm_client_dev and its interfaces should select this |
| option. Drivers that support the default clients should |
| select DRM_CLIENT_SELECTION instead. |
| |
| config DRM_CLIENT_LIB |
| tristate |
| depends on DRM |
| select DRM_KMS_HELPER if DRM_FBDEV_EMULATION |
| select FB_CORE if DRM_FBDEV_EMULATION |
| help |
| This option enables the DRM client library and selects all |
| modules and components according to the enabled clients. |
| |
| config DRM_CLIENT_SELECTION |
| tristate |
| depends on DRM |
| select DRM_CLIENT_LIB if DRM_FBDEV_EMULATION |
| help |
| Drivers that support in-kernel DRM clients have to select this |
| option. |
| |
| config DRM_CLIENT_SETUP |
| bool |
| depends on DRM_CLIENT_SELECTION |
| help |
| Enables the DRM client selection. DRM drivers that support the |
| default clients should select DRM_CLIENT_SELECTION instead. |
| |
| menu "Supported DRM clients" |
| depends on DRM_CLIENT_SELECTION |
| |
| config DRM_FBDEV_EMULATION |
| bool "Enable legacy fbdev support for your modesetting driver" |
| depends on DRM_CLIENT_SELECTION |
| select DRM_CLIENT |
| select DRM_CLIENT_SETUP |
| select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE |
| default FB |
| help |
| Choose this option if you have a need for the legacy fbdev |
| support. Note that this support also provides the linux console |
| support on top of your modesetting driver. |
| |
| If in doubt, say "Y". |
| |
| config DRM_FBDEV_OVERALLOC |
| int "Overallocation of the fbdev buffer" |
| depends on DRM_FBDEV_EMULATION |
| default 100 |
| help |
| Defines the fbdev buffer overallocation in percent. Default |
| is 100. Typical values for double buffering will be 200, |
| triple buffering 300. |
| |
| config DRM_FBDEV_LEAK_PHYS_SMEM |
| bool "Shamelessly allow leaking of fbdev physical address (DANGEROUS)" |
| depends on DRM_FBDEV_EMULATION && EXPERT |
| default n |
| help |
| In order to keep user-space compatibility, we want in certain |
| use-cases to keep leaking the fbdev physical address to the |
| user-space program handling the fbdev buffer. |
| This affects, not only, Amlogic, Allwinner or Rockchip devices |
| with ARM Mali GPUs using an userspace Blob. |
| This option is not supported by upstream developers and should be |
| removed as soon as possible and be considered as a broken and |
| legacy behaviour from a modern fbdev device driver. |
| |
| Please send any bug reports when using this to your proprietary |
| software vendor that requires this. |
| |
| If in doubt, say "N" or spread the word to your closed source |
| library vendor. |
| |
| endmenu |
| |
| config DRM_LOAD_EDID_FIRMWARE |
| bool "Allow to specify an EDID data set instead of probing for it" |
| depends on DRM |
| help |
| Say Y here, if you want to use EDID data to be loaded from the |
| /lib/firmware directory or one of the provided built-in |
| data sets. This may be necessary, if the graphics adapter or |
| monitor are unable to provide appropriate EDID data. Since this |
| feature is provided as a workaround for broken hardware, the |
| default case is N. Details and instructions how to build your own |
| EDID data are given in Documentation/admin-guide/edid.rst. |
| |
| source "drivers/gpu/drm/display/Kconfig" |
| |
| config DRM_TTM |
| tristate |
| depends on DRM && MMU |
| help |
| GPU memory management subsystem for devices with multiple |
| GPU memory types. Will be enabled automatically if a device driver |
| uses it. |
| |
| config DRM_TTM_KUNIT_TEST |
| tristate "KUnit tests for TTM" if !KUNIT_ALL_TESTS |
| default n |
| depends on DRM && KUNIT && MMU && (UML || COMPILE_TEST) |
| select DRM_TTM |
| select DRM_BUDDY |
| select DRM_EXPORT_FOR_TESTS if m |
| select DRM_KUNIT_TEST_HELPERS |
| default KUNIT_ALL_TESTS |
| help |
| Enables unit tests for TTM, a GPU memory manager subsystem used |
| to manage memory buffers. This option is mostly useful for kernel |
| developers. It depends on (UML || COMPILE_TEST) since no other driver |
| which uses TTM can be loaded while running the tests. |
| |
| If in doubt, say "N". |
| |
| config DRM_EXEC |
| tristate |
| depends on DRM |
| help |
| Execution context for command submissions |
| |
| config DRM_GPUVM |
| tristate |
| depends on DRM |
| select DRM_EXEC |
| help |
| GPU-VM representation providing helpers to manage a GPUs virtual |
| address space |
| |
| config DRM_BUDDY |
| tristate |
| depends on DRM |
| help |
| A page based buddy allocator |
| |
| config DRM_VRAM_HELPER |
| tristate |
| depends on DRM |
| help |
| Helpers for VRAM memory management |
| |
| config DRM_TTM_HELPER |
| tristate |
| depends on DRM |
| select DRM_TTM |
| select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION |
| help |
| Helpers for ttm-based gem objects |
| |
| config DRM_GEM_DMA_HELPER |
| tristate |
| depends on DRM |
| select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION |
| help |
| Choose this if you need the GEM DMA helper functions |
| |
| config DRM_GEM_SHMEM_HELPER |
| tristate |
| depends on DRM && MMU |
| select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION |
| help |
| Choose this if you need the GEM shmem helper functions |
| |
| config DRM_SUBALLOC_HELPER |
| tristate |
| depends on DRM |
| |
| config DRM_SCHED |
| tristate |
| depends on DRM |
| |
| source "drivers/gpu/drm/i2c/Kconfig" |
| |
| source "drivers/gpu/drm/arm/Kconfig" |
| |
| source "drivers/gpu/drm/radeon/Kconfig" |
| |
| source "drivers/gpu/drm/amd/amdgpu/Kconfig" |
| |
| source "drivers/gpu/drm/nouveau/Kconfig" |
| |
| source "drivers/gpu/drm/i915/Kconfig" |
| |
| source "drivers/gpu/drm/xe/Kconfig" |
| |
| source "drivers/gpu/drm/kmb/Kconfig" |
| |
| config DRM_VGEM |
| tristate "Virtual GEM provider" |
| depends on DRM && MMU |
| select DRM_GEM_SHMEM_HELPER |
| help |
| Choose this option to get a virtual graphics memory manager, |
| as used by Mesa's software renderer for enhanced performance. |
| If M is selected the module will be called vgem. |
| |
| source "drivers/gpu/drm/vkms/Kconfig" |
| |
| source "drivers/gpu/drm/exynos/Kconfig" |
| |
| source "drivers/gpu/drm/rockchip/Kconfig" |
| |
| source "drivers/gpu/drm/vmwgfx/Kconfig" |
| |
| source "drivers/gpu/drm/gma500/Kconfig" |
| |
| source "drivers/gpu/drm/udl/Kconfig" |
| |
| source "drivers/gpu/drm/ast/Kconfig" |
| |
| source "drivers/gpu/drm/mgag200/Kconfig" |
| |
| source "drivers/gpu/drm/armada/Kconfig" |
| |
| source "drivers/gpu/drm/atmel-hlcdc/Kconfig" |
| |
| source "drivers/gpu/drm/renesas/Kconfig" |
| |
| source "drivers/gpu/drm/sun4i/Kconfig" |
| |
| source "drivers/gpu/drm/omapdrm/Kconfig" |
| |
| source "drivers/gpu/drm/tilcdc/Kconfig" |
| |
| source "drivers/gpu/drm/qxl/Kconfig" |
| |
| source "drivers/gpu/drm/virtio/Kconfig" |
| |
| source "drivers/gpu/drm/msm/Kconfig" |
| |
| source "drivers/gpu/drm/fsl-dcu/Kconfig" |
| |
| source "drivers/gpu/drm/tegra/Kconfig" |
| |
| source "drivers/gpu/drm/stm/Kconfig" |
| |
| source "drivers/gpu/drm/panel/Kconfig" |
| |
| source "drivers/gpu/drm/bridge/Kconfig" |
| |
| source "drivers/gpu/drm/sti/Kconfig" |
| |
| source "drivers/gpu/drm/imx/Kconfig" |
| |
| source "drivers/gpu/drm/ingenic/Kconfig" |
| |
| source "drivers/gpu/drm/v3d/Kconfig" |
| |
| source "drivers/gpu/drm/vc4/Kconfig" |
| |
| source "drivers/gpu/drm/loongson/Kconfig" |
| |
| source "drivers/gpu/drm/etnaviv/Kconfig" |
| |
| source "drivers/gpu/drm/hisilicon/Kconfig" |
| |
| source "drivers/gpu/drm/logicvc/Kconfig" |
| |
| source "drivers/gpu/drm/mediatek/Kconfig" |
| |
| source "drivers/gpu/drm/mxsfb/Kconfig" |
| |
| source "drivers/gpu/drm/meson/Kconfig" |
| |
| source "drivers/gpu/drm/tiny/Kconfig" |
| |
| source "drivers/gpu/drm/pl111/Kconfig" |
| |
| source "drivers/gpu/drm/tve200/Kconfig" |
| |
| source "drivers/gpu/drm/xen/Kconfig" |
| |
| source "drivers/gpu/drm/vboxvideo/Kconfig" |
| |
| source "drivers/gpu/drm/lima/Kconfig" |
| |
| source "drivers/gpu/drm/panfrost/Kconfig" |
| |
| source "drivers/gpu/drm/panthor/Kconfig" |
| |
| source "drivers/gpu/drm/aspeed/Kconfig" |
| |
| source "drivers/gpu/drm/mcde/Kconfig" |
| |
| source "drivers/gpu/drm/tidss/Kconfig" |
| |
| source "drivers/gpu/drm/xlnx/Kconfig" |
| |
| source "drivers/gpu/drm/gud/Kconfig" |
| |
| source "drivers/gpu/drm/solomon/Kconfig" |
| |
| source "drivers/gpu/drm/sprd/Kconfig" |
| |
| source "drivers/gpu/drm/imagination/Kconfig" |
| |
| config DRM_HYPERV |
| tristate "DRM Support for Hyper-V synthetic video device" |
| depends on DRM && PCI && MMU && HYPERV |
| select DRM_CLIENT_SELECTION |
| select DRM_KMS_HELPER |
| select DRM_GEM_SHMEM_HELPER |
| help |
| This is a KMS driver for Hyper-V synthetic video device. Choose this |
| option if you would like to enable drm driver for Hyper-V virtual |
| machine. Unselect Hyper-V framebuffer driver (CONFIG_FB_HYPERV) so |
| that DRM driver is used by default. |
| |
| If M is selected the module will be called hyperv_drm. |
| |
| config DRM_EXPORT_FOR_TESTS |
| bool |
| |
| config DRM_LIB_RANDOM |
| bool |
| default n |
| |
| config DRM_PRIVACY_SCREEN |
| bool |
| default n |
| |
| config DRM_WERROR |
| bool "Compile the drm subsystem with warnings as errors" |
| depends on DRM && EXPERT |
| depends on !WERROR |
| default n |
| help |
| A kernel build should not cause any compiler warnings, and this |
| enables the '-Werror' flag to enforce that rule in the drm subsystem. |
| |
| The drm subsystem enables more warnings than the kernel default, so |
| this config option is disabled by default. |
| |
| If in doubt, say N. |
| |
| endif |
| |
| # Separate option because drm_panel_orientation_quirks.c is shared with fbdev |
| config DRM_PANEL_ORIENTATION_QUIRKS |
| tristate |