Last active
May 25, 2026 13:46
-
-
Save denji/52b9b0980ef3dadde0ff3d3ccf74a2a6 to your computer and use it in GitHub Desktop.
/etc/modprobe.d/nvidia.conf.ini
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # /etc/modprobe.d/nvidia.conf | |
| # | |
| # NVIDIA Linux kernel module options. | |
| # Last audited against: open-gpu-kernel-modules 595.71.05 | |
| # | |
| # Parameter types: all parameters are NvU32 (uint) unless noted as "string". | |
| # The Linux kernel module_param() system accepts hex notation (0x...) for uint | |
| # parameters; decimal and hex are both valid and equivalent. | |
| # | |
| # Some options are experimental or reserved for internal testing. Defaults may | |
| # vary between the proprietary driver and the open kernel modules. Changing | |
| # these settings can improve performance or unlock additional features, but may | |
| # also introduce stability or security risks if misconfigured. | |
| # | |
| # Source references (open-gpu-kernel-modules 595.71.05): | |
| # kernel-open/nvidia/nv-reg.h -- all module parameters and defaults | |
| # kernel-open/common/inc/nv-firmware-registry.h -- GSP firmware parameter details | |
| # src/nvidia/interface/nvrm_registry.h -- RegistryDwords internal keys | |
| # | |
| # Online references: | |
| # https://github.com/NVIDIA/open-gpu-kernel-modules/blob/595.71.05/kernel-open/nvidia/nv-reg.h | |
| # https://github.com/NVIDIA/open-gpu-kernel-modules/blob/595.71.05/src/nvidia/interface/nvrm_registry.h | |
| # https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/procinterface.html | |
| # https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/kernel_open.html | |
| # https://wiki.archlinux.org/title/NVIDIA | |
| # https://wiki.archlinux.org/title/NVIDIA/Troubleshooting | |
| # https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks | |
| # https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers/en | |
| # https://github.com/ventureoo/nvidia-tweaks | |
| # https://github.com/CachyOS/CachyOS-Settings/blob/master/usr/lib/modprobe.d/nvidia.conf | |
| # ============================================================================== | |
| # Memory and Performance | |
| # ============================================================================== | |
| # NVreg_UsePageAttributeTable | |
| # Enables use of the Page Attribute Table (PAT) to set the effective memory | |
| # type of memory mappings to write-combining (WC). PAT is supported on all | |
| # modern x86/x86-64 processors. | |
| # | |
| # When enabled, the driver checks whether the host kernel has already | |
| # configured one of the PAT entries to indicate the WC memory type: | |
| # | |
| # - If the kernel has NOT configured a WC PAT entry: the driver changes the | |
| # second PAT entry from its default (write-through, WT) to WC at module | |
| # load time. | |
| # - If the kernel HAS already configured a WC PAT entry: the driver leaves | |
| # the PAT unmodified. | |
| # | |
| # In both cases, the driver honours attempts to map memory with the WC memory | |
| # type by selecting the appropriate PAT entry using the correct set of PTE | |
| # (page table entry) flags. | |
| # | |
| # ~0 = use the NVIDIA driver's default logic (default) | |
| # 1 = force-enable PAT for WC mappings | |
| # 0 = force-disable PAT for WC mappings | |
| # NVreg_InitializeSystemMemoryAllocations | |
| # Controls whether the driver zeroes system memory before handing it to the | |
| # GPU. The driver normally clears all system memory it allocates to prevent | |
| # potentially sensitive data from being accessible by arbitrary user | |
| # applications. Owners of single-user systems or similar trusted | |
| # configurations may disable this for a performance gain. | |
| # | |
| # Setting to 0 is recommended on KDE 6 + Wayland to prevent issues on | |
| # resume from suspend. Symptoms that indicate the default (1) is causing | |
| # problems: | |
| # - Black screen or freeze after sleep resume | |
| # - Flickering or graphical glitches post-resume | |
| # - Unexpected session restarts | |
| # | |
| # Default: 1 | |
| # ============================================================================== | |
| # Device Management | |
| # ============================================================================== | |
| # NVreg_ModifyDeviceFiles | |
| # Controls whether the driver verifies the validity of NVIDIA device files | |
| # in /dev and dynamically modifies and/or recreates them if necessary. | |
| # Only honoured by the NVIDIA GPU driver and NVIDIA capability driver. | |
| # The NVIDIA capability driver also exposes a per-device /proc entry | |
| # (DeviceFileModify=0/1) to override this setting per device file. | |
| # Default: 1 | |
| # NVreg_DeviceFileUID | |
| # User ID assigned to NVIDIA device nodes (e.g. /dev/nvidia0) when dynamic | |
| # device file management is enabled (NVreg_ModifyDeviceFiles=1). | |
| # Only honoured by the NVIDIA GPU driver. | |
| # Default: 0 (root) | |
| # NVreg_DeviceFileGID | |
| # Group ID assigned to NVIDIA device nodes when dynamic device file | |
| # management is enabled. | |
| # Only honoured by the NVIDIA GPU driver. | |
| # Default: 0 (root) | |
| # NVreg_DeviceFileMode | |
| # Permission bits (octal) for NVIDIA device nodes when dynamic device file | |
| # management is enabled. | |
| # Only honoured by the NVIDIA GPU driver. | |
| # Default: 0666 (rw-rw-rw-) | |
| # NVreg_EnableNonblockingOpen | |
| # When enabled, opening /dev/nvidiaN with the O_NONBLOCK flag triggers | |
| # device initialisation in the background rather than blocking the caller. | |
| # Improves boot-time latency in environments where GPU init is deferred and | |
| # multiple processes race to open the device. | |
| # Default: 1 | |
| # NVreg_GpuInitOnProbe | |
| # Controls whether GPUs are fully initialised at PCI probe time rather than | |
| # deferring initialisation until first use. Enabling this helps on systems | |
| # with multiple GPUs where strict probe ordering is required, or where | |
| # deferred init causes race conditions at boot. | |
| # Default: 0 | |
| # ============================================================================== | |
| # PCIe and Display | |
| # ============================================================================== | |
| # NVreg_EnableMSI | |
| # Controls use of PCI Message Signaled Interrupts (MSI) instead of wired | |
| # (pin-based) interrupts. MSI improves compatibility and scalability by | |
| # avoiding IRQ sharing between devices. When enabled and the host kernel | |
| # supports MSI, the driver will use the PCIe MSI capability of supported | |
| # GPUs instead of wired interrupts. Disable if X or CUDA initialisation | |
| # fails, as some hardware has broken MSI support. | |
| # Default: 1 | |
| # NVreg_EnablePCIeGen3 | |
| # Due to interoperability problems seen with Kepler PCIe Gen3 capable GPUs | |
| # on SandyBridge E desktop platforms, the driver defaults to Gen2 for broad | |
| # compatibility. Gen3 unlocks high-speed 8 GT/s transfers on supported | |
| # hardware. | |
| # | |
| # This is completely unsupported! | |
| # | |
| # Open kernel modules (kernel-open/nvidia/nv-reg.h): | |
| # 0 = force Gen2 (default) | |
| # 1 = enable Gen3 | |
| # | |
| # Proprietary driver (additional values from /usr/src/nvidia-*/nvidia/nv-reg.h): | |
| # 0 = force Gen2 (default) | |
| # 1 = enable Gen3 if driver considers it safe | |
| # 2 = same as 1 (legacy alias) | |
| # 3 = force Gen3, overriding driver safety check | |
| # NVreg_EnablePCIERelaxedOrderingMode | |
| # When enabled, sets the registry key RmSetPCIERelaxedOrdering to | |
| # FORCE_ENABLE, causing every device to set the relaxed ordering bit to 1 | |
| # in all outbound PCIe MWr transaction-layer packets (TLPs). This is | |
| # equivalent to setting RmSetPCIERelaxedOrdering=FORCE_ENABLE as a global | |
| # RegistryDwords key. May improve GPUDirect RDMA throughput on certain PCIe | |
| # topologies where the interconnect benefits from relaxed ordering. | |
| # Default: 0 | |
| # NVreg_RegisterPCIDriver | |
| # Controls whether the driver registers itself with the PCI subsystem. | |
| # Disabling this prevents the driver from claiming any PCI GPU devices. | |
| # Only useful in specialised setups (e.g. SR-IOV host drivers). | |
| # Default: 1 | |
| # nvidia_drm.modeset | |
| # Enables kernel modesetting (KMS). Required for Wayland and PRIME Offload. | |
| # Default: 1 since driver ~560. Verify the active state with: | |
| # cat /sys/module/nvidia_drm/parameters/modeset | |
| # If the output is Y, no explicit modprobe.d entry is needed. | |
| # ============================================================================== | |
| # GPU Firmware (GSP) | |
| # ============================================================================== | |
| # NVreg_EnableGpuFirmware | |
| # Controls use of GPU System Processor (GSP) firmware. The GSP offloads GPU | |
| # initialisation and management tasks from the CPU, reducing latency for | |
| # hardware interactions and improving performance. | |
| # | |
| # Declared in nv-firmware-registry.h. The value is split into a 4-bit mode | |
| # field and a 4-bit policy field: | |
| # | |
| # Mode (low nibble, bits 3:0): | |
| # 0x0 (DISABLED) - do not enable GPU firmware | |
| # 0x1 (ENABLED) - enable GPU firmware | |
| # 0x2 (DEFAULT) - use the driver's default enablement policy | |
| # | |
| # Policy (second nibble, bits 7:4): | |
| # 0x10 (ALLOW_FALLBACK) - if the requested mode is not achievable, | |
| # fall back to firmware-disabled init rather | |
| # than failing the GPU. May result in a mixed | |
| # mode system (some GPUs with firmware, some | |
| # without). | |
| # 0x20 (DEFAULT_ON_WS_SERVER) - enable firmware by default on workstation | |
| # server configurations. | |
| # | |
| # Default: 0x12 (DEFAULT mode | ALLOW_FALLBACK policy) | |
| # i.e. use the driver's default enablement with automatic fallback. | |
| # | |
| # When set globally, the driver may enforce uniform firmware modes across | |
| # all GPUs and fail initialisation on some to maintain that policy. | |
| # When set via NVreg_RegistryDwordsPerDevice, the specified configuration | |
| # is honoured per-GPU without additional policy enforcement. | |
| # | |
| # The open kernel modules require GSP to be active at all times. Setting | |
| # mode to 0x0 (disabled) on the open modules introduces known penalties: | |
| # slower GPU initialisation, longer S3/S4/RTD3 latencies, and RTD3 | |
| # limited to Ampere and above. | |
| # | |
| # Examples: | |
| # 0x00 = force disable firmware on all GPUs (proprietary driver only) | |
| # 0x01 = force enable firmware, fail GPU if not possible | |
| # 0x11 = force enable firmware, fall back if not possible | |
| # 0x02 = use default policy (equivalent to not setting this key) | |
| # 0x12 = default policy with fallback (compiled-in default) | |
| # | |
| # See: | |
| # https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/gsp.html | |
| # https://www.reddit.com/r/linux_gaming/comments/1ecyo8y/is_disabling_gsp_still_ideal_for_nvidia_cards_on/ | |
| # https://forums.developer.nvidia.com/t/306019 | |
| # https://forums.developer.nvidia.com/t/298694 | |
| # NVreg_EnableGpuFirmwareLogs | |
| # Controls whether the driver sends GSP firmware log output to the system | |
| # journal (dmesg / journalctl). Useful for diagnosing GSP-related failures. | |
| # | |
| # 0 = do not send GPU firmware logs to the system log | |
| # 1 = always enable GPU firmware logs | |
| # 2 = enable GPU firmware logs on debug driver builds only (default) | |
| # ============================================================================== | |
| # Open Kernel Modules and HMM | |
| # ============================================================================== | |
| # | |
| # The NVIDIA driver ships in two mutually exclusive flavors: proprietary and | |
| # open (dual MIT/GPLv2). The open modules are recommended on all supported GPUs | |
| # (Turing and later) and are the only flavor that supports Blackwell and newer. | |
| # Starting with driver 560, the open flavor is the default installation. | |
| # | |
| # Detect which flavor is loaded: | |
| # modinfo nvidia | grep license | |
| # open: license: Dual MIT/GPL | |
| # proprietary: license: NVIDIA | |
| # cat /proc/driver/nvidia/version | |
| # open: NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 ... | |
| # proprietary: NVRM version: NVIDIA UNIX x86_64 Kernel Module ... | |
| # | |
| # The open modules require GSP firmware to be active at all times. Unlike the | |
| # proprietary driver, they cannot operate in GSP-off mode. Setting | |
| # NVreg_EnableGpuFirmware mode bits to 0x0 is therefore invalid for open | |
| # module users. | |
| # | |
| # The following features are exclusive to the open kernel modules and require | |
| # no modprobe directive to activate -- they are enabled automatically when the | |
| # open modules are loaded and the hardware and kernel version qualify: | |
| # | |
| # Heterogeneous Memory Management (HMM) | |
| # Allows GPU threads to directly access CPU-allocated memory (mmap, malloc) | |
| # on PCIe-connected GPUs, extending CUDA Unified Memory without explicit | |
| # transfers. Requires: open modules, CUDA >= 12.2 / driver >= r535, | |
| # kernel >= 6.1.24 with CONFIG_HMM_MIRROR, Turing or later GPU. | |
| # Verify: nvidia-smi -q | grep Addressing --> Addressing Mode : HMM | |
| # | |
| # Magnum IO GPUDirect Storage (GDS) | |
| # NVIDIA Confidential Computing | |
| # CPU affinity for GPU fault handlers | |
| # DMABUF support for CUDA allocations | |
| # | |
| # See: | |
| # https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/kernel_open.html | |
| # https://developer.nvidia.com/blog/simplifying-gpu-application-development-with-heterogeneous-memory-management/ | |
| # NVreg_EnableSystemMemoryPools (open modules only) | |
| # Controls system memory page pool creation. Pools cache freed pages to | |
| # speed up reallocation. Pools are shared by all adapters. | |
| # Each bit enables a pool for a specific page size using the formula: | |
| # bit = (page_size_bytes >> 12) [NV_ENABLE_SYSTEM_MEMORY_POOLS_SHIFT = 12] | |
| # So: | |
| # bit 0 (0x001) = 4K pages (1 << 12 = 4096) | |
| # bit 4 (0x010) = 64K pages (1 << 16 = 65536) | |
| # bit 9 (0x200) = 2M pages (1 << 21 = 2097152) | |
| # Default: 0x211 (4K + 64K + 2M pools enabled) | |
| # Only supported by the open kernel modules (OpenRM). | |
| # NVreg_CoherentGPUMemoryMode (string, open modules only) | |
| # Controls how GPU memory is accessed through the coherent CPU-GPU link. | |
| # Only relevant on platforms that support onlining GPU memory to the OS | |
| # as a NUMA node (e.g. NVLink-connected systems, not standard PCIe). | |
| # | |
| # "driver" = disable NUMA onlining; driver manages coherent memory directly | |
| # "numa" = enable NUMA onlining to the OS (default when unset) | |
| # | |
| # Note: GPUDirect Storage (GDS) is not supported when CDMM is active. | |
| # See: https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-595-71-05/index.html | |
| # NVreg_OpenRmEnableUnsupportedGpus | |
| # Was required in early open module releases (515-545) to opt in GeForce | |
| # and Workstation GPUs. Deprecated and ignored as of driver ~560. | |
| # Left in the parameter table for backwards compatibility. | |
| # ============================================================================== | |
| # GPU Selection and Exclusion | |
| # ============================================================================== | |
| # NVreg_ExcludedGpus (string) | |
| # Comma-separated list of GPU UUIDs that the driver will not attach to or | |
| # use. Each GPU is identified by its UUID in ASCII format with a leading | |
| # "GPU-" prefix. Exact match is required; partial UUIDs are not accepted. | |
| # Use nvidia-smi -L to list GPU UUIDs. | |
| # Usage: options nvidia NVreg_ExcludedGpus="GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" | |
| # NVreg_GpuBlacklist (string) | |
| # Deprecated alias for NVreg_ExcludedGpus. Accepts the same comma-separated | |
| # UUID format. Will be removed in a future driver release. | |
| # Use NVreg_ExcludedGpus instead. | |
| # NVreg_ExcludeAllGpus | |
| # When set to 1, excludes all GPUs from being attached or used. If used | |
| # alongside NVreg_ExcludedGpus, all GPUs are excluded regardless of the | |
| # UUID list. Useful for SR-IOV host configurations or when the NVIDIA driver | |
| # should load without claiming any GPU devices. | |
| # Default: 0 | |
| # ============================================================================== | |
| # NVLink | |
| # ============================================================================== | |
| # NVreg_NvLinkDisable | |
| # When enabled, the driver will not attempt to initialise or train NVLink | |
| # connections for any GPU. Has no effect if no GPUs in the system support | |
| # NVLink. A system reboot is required for changes to take effect. | |
| # Useful when NVLink initialisation causes instability in multi-GPU setups. | |
| # Default: 0 | |
| # NVreg_RmNvlinkBandwidth (string) | |
| # Reduces NVLink P2P bandwidth to save power. The value is a string token. | |
| # Only effective on Hopper+ GPUs with NVLink version 4.0. | |
| # | |
| # "OFF" = 0% bandwidth | |
| # "MIN" = 15-25% bandwidth (varies with NVLink topology) | |
| # "HALF" = 50% bandwidth | |
| # "3QUARTER" = 75% bandwidth | |
| # "FULL" = 100% bandwidth (default, no throttling) | |
| # | |
| # Usage: options nvidia NVreg_RmNvlinkBandwidth="HALF" | |
| # NVreg_RmNvlinkBandwidthLinkCount | |
| # Reduces the number of active NVLink links to save power. Works alongside | |
| # NVreg_RmNvlinkBandwidth for finer-grained NVLink power control. | |
| # Only effective on Blackwell+ GPUs with NVLink version 5.0. | |
| # Default: 0 (no reduction) | |
| # ============================================================================== | |
| # GPUDirect and Advanced Memory | |
| # ============================================================================== | |
| # NVreg_DmaRemapPeerMmio | |
| # Controls whether the driver uses kernel DMA-remapping APIs when creating | |
| # peer MMIO mappings for GPUDirect. When enabled, the driver requests proper | |
| # IOMMU mappings for peer device MMIO regions. When disabled, only a fixed | |
| # offset is applied to the CPU physical address to produce the DMA address -- | |
| # no IOMMU mappings are created. | |
| # | |
| # Disabling may be necessary on platforms where the IOMMU interferes with | |
| # peer MMIO mappings, but reduces memory access isolation guarantees. | |
| # This option only affects peer MMIO DMA mappings; system memory mappings | |
| # are unaffected. | |
| # | |
| # Default: 1 | |
| # NVreg_EnableResizableBar | |
| # When enabled, the driver attempts to resize BAR1 to match the framebuffer | |
| # size (or the next largest available size) on supported machines. Allows the | |
| # CPU to address the full GPU framebuffer as a single PCIe BAR region rather | |
| # than the traditional 256 MB window. Can enhance GPUDirect RDMA performance | |
| # and reduce CPU overhead for large buffer transfers. | |
| # Requires BIOS/UEFI and PCIe topology support. Linux only. | |
| # Default: 0 | |
| # NVreg_EnableStreamMemOPs | |
| # Enables CUDA Stream Memory Operations (memop) in user-mode applications, | |
| # allowing fine-grained synchronisation primitives such as cuStreamWaitValue32. | |
| # Treated as a hint; the CUDA driver may still disable them for other reasons | |
| # (e.g. devtools compatibility). | |
| # Requires nvidia.ko >= 510.40.3. Must be combined with PeerMappingOverride=1: | |
| # options nvidia NVreg_EnableStreamMemOPs=1 \ | |
| # NVreg_RegistryDwords="PeerMappingOverride=1;" | |
| # Default: 0 | |
| # | |
| # See: | |
| # https://forums.developer.nvidia.com/t/does-modprobe-d-nvidia-conf-nvreg-enablestreammemops-need-to-be-set-for-gpudirect-to-work/79511 | |
| # https://docs.nvidia.com/nvshmem/release-notes-install-guide/install-guide/abstract.html | |
| # https://docs.nvidia.com/nvshmem/pdf/NVSHMEM-Installation-Guide.pdf | |
| # https://nvdam.widen.net/s/k8vrp9xkft/tech-overview-magnum-io-1790750-r5-web | |
| # https://developer.download.nvidia.com/devzone/devcenter/cuda/docs/GPUDirect_Technology_Overview.pdf | |
| # NVreg_GrdmaPciTopoCheckOverride | |
| # Overrides the PCIe topology validation enforced by the driver's dma-buf | |
| # and nv-p2p subsystems. By default the driver uses the PCIe topology to | |
| # determine whether peer-to-peer access should be allowed or denied. | |
| # | |
| # 0 = use driver's topology check (default) | |
| # 1 = override to allow access regardless of topology | |
| # 2 = override to deny access regardless of topology | |
| # | |
| # Value 1 is useful when GPUDirect is required across a PCIe switch topology | |
| # that the driver's checker incorrectly rejects. Value 2 can be used to | |
| # explicitly forbid peer access in security-sensitive environments. | |
| # ============================================================================== | |
| # CUDA / IMEX (Multi-user Secure Memory Sharing) | |
| # ============================================================================== | |
| # | |
| # IMEX (Import/Export) channels allow CUDA processes to securely share fabric | |
| # memory handles across users within an IMEX domain. An IMEX domain is either | |
| # a single OS instance or a group of securely connected OS instances managed | |
| # by the NVIDIA IMEX daemon. | |
| # | |
| # The driver does not create the /dev nodes for IMEX channels automatically. | |
| # CUDA fabric handle APIs will fail with an insufficient permission error until | |
| # the administrator creates the nodes: | |
| # /dev/nvidia-caps-imex-channels/channelN | |
| # where N is the minor number. Query the major number from /proc/devices. | |
| # nvidia-modprobe can create these nodes; NVreg_ModifyDeviceFiles, | |
| # NVreg_DeviceFileUID, NVreg_DeviceFileGID, and NVreg_DeviceFileMode are | |
| # all honoured by nvidia-modprobe for IMEX channel nodes. | |
| # NVreg_ImexChannelCount | |
| # Number of IMEX channels to enable. Each channel allows one concurrent user | |
| # to share memory securely within the IMEX domain. Must be set to the same | |
| # value on every OS instance in the domain. | |
| # 0 = disable IMEX (CUDA fabric handle APIs are unavailable) | |
| # N = enable N channels (default: 2048) | |
| # Maximum = 20-bit minor number limit (same as Linux dev_t) | |
| # NVreg_CreateImexChannel0 | |
| # When enabled, the driver automatically creates IMEX channel 0 at module | |
| # load time. Only enable in trusted environments where it is acceptable for | |
| # all applications to share the same IMEX channel. In multi-tenant | |
| # environments, leave disabled and create channels explicitly. | |
| # Refer to NVreg_ImexChannelCount for full context. | |
| # Default: 0 | |
| # ============================================================================== | |
| # Suspend / Resume | |
| # ============================================================================== | |
| # NVreg_PreserveVideoMemoryAllocations | |
| # Controls preservation of video memory contents across suspend/resume and | |
| # hibernate/restore cycles. Eliminates texture/buffer re-uploads after resume | |
| # and prevents Wayland compositor flickering. | |
| # | |
| # 0 (DISABLED) = preserve only select (driver-chosen) allocations | |
| # 1 (ENABLED) = preserve all video memory allocations | |
| # 2 (AUTO) = automatically enable preservation when | |
| # NVreg_UseKernelSuspendNotifiers is enabled (default) | |
| # | |
| # On systems where VRAM exceeds available system RAM and disk spill is | |
| # required, also configure NVreg_TemporaryFilePath. | |
| # Default: 2 | |
| # NVreg_UseKernelSuspendNotifiers | |
| # Registers the driver with the kernel's generic suspend/resume notifier | |
| # chain rather than relying solely on the driver's internal PM hooks. | |
| # Improves coordination during S3/S4 transitions, reducing the risk of GPU | |
| # state corruption on resume. | |
| # | |
| # When using the open kernel modules, enabling this automatically triggers | |
| # NVreg_PreserveVideoMemoryAllocations=2 (AUTO) behaviour. For the | |
| # proprietary driver, suspend coordination is instead managed by dedicated | |
| # systemd units: nvidia-suspend.service, nvidia-hibernate.service, and | |
| # nvidia-resume.service. | |
| # | |
| # 0 = do not use kernel suspend notifiers (default) | |
| # 1 = use kernel suspend notifiers when available | |
| # NVreg_EnableS0ixPowerManagement | |
| # Enables S0ix-based (suspend-to-idle) power management for system | |
| # suspend/resume on platforms and GPUs that support it. S0ix keeps the | |
| # system in a low-power active state rather than fully powering down. | |
| # | |
| # During S0ix suspend, the driver compares VRAM usage against the threshold | |
| # set by NVreg_S0ixPowerManagementVideoMemoryThreshold: | |
| # - At or below threshold: VRAM kept in self-refresh; rest of GPU powers down. | |
| # - Above threshold: VRAM contents copied to system memory; GPU powers off. | |
| # | |
| # 0 = disable S0ix power management (default) | |
| # 1 = enable S0ix power management | |
| # NVreg_S0ixPowerManagementVideoMemoryThreshold | |
| # VRAM usage threshold in MB for the S0ix self-refresh vs. copy decision. | |
| # See NVreg_EnableS0ixPowerManagement for the full context. | |
| # Only relevant when NVreg_EnableS0ixPowerManagement=1. | |
| # Default: 256 | |
| # NVreg_TemporaryFilePath (string) | |
| # Directory used to spill VRAM contents to disk during suspend when | |
| # NVreg_PreserveVideoMemoryAllocations=1 is active and VRAM exceeds | |
| # available system RAM. Must be a directory, writable by the kernel at | |
| # suspend time, on a filesystem with sufficient free space. Network and | |
| # FUSE mounts are not suitable. | |
| # /var/tmp is preferred over /tmp because it is typically not a tmpfs and | |
| # survives the suspend boundary on most distributions. | |
| # Default: /tmp | |
| # | |
| # See: https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/powermanagement.html | |
| # ============================================================================== | |
| # Power Management (RTD3) | |
| # ============================================================================== | |
| # NVreg_DynamicPowerManagement | |
| # Configures runtime D3 (RTD3) power management, allowing the GPU to enter | |
| # low-power states when idle. Most effective on laptops and hybrid | |
| # (iGPU + dGPU) systems. | |
| # | |
| # Declared as NvU32; the kernel module_param system accepts hex notation. | |
| # Values are a named integer enum, not a bitmask: | |
| # | |
| # 0x00 (NEVER) - never allow the GPU to be powered down; fully powered | |
| # at all times. | |
| # 0x01 (COARSE) - power down when no application is using the NVIDIA | |
| # driver stack; return to active state on demand. | |
| # 0x02 (FINE) - actively monitor GPU activity; power down after a short | |
| # idle period even while applications are running. A GPU | |
| # driving a display or a CUDA workload remains active | |
| # unless HardDPMS is also configured. | |
| # 0x03 (DEFAULT) - apply FINE on Ampere or later notebooks; do not power | |
| # down on desktop or pre-Ampere systems (default). | |
| # | |
| # Default: 0x03 | |
| # | |
| # See: https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/dynamicpowermanagement.html | |
| # NVreg_DynamicPowerManagementVideoMemoryThreshold | |
| # VRAM usage threshold in MB for the RTD3 power-down decision. | |
| # When the driver detects the GPU is idle, it compares current VRAM usage | |
| # against this threshold: | |
| # | |
| # Below threshold: driver saves VRAM contents to system memory first, then | |
| # powers off VRAM and the GPU together (deeper power saving, slower resume). | |
| # Above threshold: VRAM is kept in self-refresh while the rest of the GPU | |
| # powers down (shallower power saving, faster resume). | |
| # | |
| # Values above 200 MB are silently capped to 200 MB. | |
| # Default: 200 | |
| # NVreg_UseFBDefExclusionArea | |
| # Reserves an exclusion area for the framebuffer to prevent conflicts between | |
| # the driver's memory mappings and the system physical memory map. Enhances | |
| # stability on some firmware configurations. | |
| # Not defined in the open module nv-reg.h; proprietary driver only. | |
| # ============================================================================== | |
| # Security | |
| # ============================================================================== | |
| # NVreg_RestrictProfilingToAdminUsers | |
| # When enabled, prevents users without CAP_SYS_ADMIN from accessing GPU | |
| # performance counters. Mitigates side-channel attacks that exploit hardware | |
| # performance monitoring units (PMUs). | |
| # Disable only in environments where non-privileged GPU profiling is | |
| # explicitly required (e.g. developer workstations running Nsight). | |
| # | |
| # Note: the internal parameter name is RmProfilingAdminOnly; the module | |
| # parameter exposed to modprobe.d is RestrictProfilingToAdminUsers. | |
| # | |
| # Default: 1 | |
| # ============================================================================== | |
| # Registry Overrides (NVreg_RegistryDwords) | |
| # ============================================================================== | |
| # | |
| # Passes internal driver settings directly to the Resource Manager (RM) as a | |
| # semicolon-delimited list of key=value pairs. Each key name is first checked | |
| # against the table of static options; matching entries override the static | |
| # value. Non-matching entries are forwarded to the RM directly. | |
| # | |
| # Usage: options nvidia NVreg_RegistryDwords="Key1=Val1;Key2=Val2;" | |
| # | |
| # Per-GPU variant (NVreg_RegistryDwordsPerDevice): | |
| # Applies registry keys to a specific GPU identified by its PCIe BDF. | |
| # The first key=value pair MUST be "pci=DDDD:BB:DD.F;" to identify the GPU. | |
| # If no GPU matches the BDF, all following keys are skipped until the next | |
| # valid "pci=..." entry. Valid BDF formats: | |
| # bus:slot (domain and function default to 0) | |
| # domain:bus:slot (function defaults to 0) | |
| # domain:bus:slot.func (complete identifier) | |
| # Usage: | |
| # options nvidia NVreg_RegistryDwordsPerDevice="pci=0000:01:00.0;Key=Val;" | |
| # | |
| # Enumerate all RM registry keys from firmware blobs (for RegistryDwords): | |
| # rg -zaoN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \ | |
| # | cut -d: -f2- | sort -u | |
| # rg -zaioN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \ | |
| # | cut -d: -f2- | sort -u | |
| # Full key list: src/nvidia/interface/nvrm_registry.h | |
| # | |
| # Selected keys: | |
| # | |
| # RMIntrLockingMode (experimental) | |
| # Tightens interrupt locking to improve frame-pacing consistency. Most | |
| # impactful at high refresh rates and in PRIME configurations where the dGPU | |
| # drives an external monitor with VRR, or in VR headset setups. | |
| # | |
| # Example: at 240 Hz, each frame is expected every 4 ms. If a 1 ms kernel | |
| # or GSP task preempts just before a frame deadline, the sequence shifts | |
| # from ideal T+4, T+8, T+12 ms to T+4, T+9, T+12 ms -- perceptible stutter | |
| # at high refresh rates. This setting reduces that jitter. | |
| # | |
| # Default: 0 | |
| # Note: experimental; may not be suitable for all systems. | |
| # Usage: options nvidia NVreg_RegistryDwords="RMIntrLockingMode=1;" | |
| # | |
| # PeerMappingOverride | |
| # Forces specific peer memory mapping behaviour required for GPUDirect Async. | |
| # Must be set alongside NVreg_EnableStreamMemOPs=1. | |
| # Usage: options nvidia NVreg_RegistryDwords="PeerMappingOverride=1;" | |
| # See: https://docs.nvidia.com/nvshmem/install-guide/index.html | |
| # | |
| # RMUseSwI2c (if available) | |
| # Enables the software-based I2C implementation. Useful on systems where | |
| # hardware I2C support is unreliable (e.g. DDC/CI failures on some monitors). | |
| # Default: 0 | |
| # Usage: options nvidia NVreg_RegistryDwords="RMUseSwI2c=0x01;" | |
| # See: https://www.ddcutil.com/nvidia/ | |
| # | |
| # RMI2cSpeed (if available) | |
| # Sets the I2C bus speed in kHz. Adjusting this can resolve monitor DDC/CI | |
| # communication issues when the default speed causes timeouts. | |
| # Default: driver-determined | |
| # Usage: options nvidia NVreg_RegistryDwords="RMI2cSpeed=100;" | |
| # See: https://www.ddcutil.com/nvidia/ | |
| # | |
| # OverrideMaxPerf (if available) | |
| # Forces the GPU to operate at a specific performance level. | |
| # 0x1 forces maximum power-saving mode. | |
| # Default: 0 | |
| # Usage: options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1;" | |
| # See: https://forums.developer.nvidia.com/t/145573 | |
| # | |
| # PowerMizerEnable / PerfLevelSrc (if available) | |
| # Controls NVIDIA PowerMizer dynamic performance scaling. | |
| # Note: removed as of driver 530.41.03. | |
| # See: https://forums.developer.nvidia.com/t/247610 | |
| # | |
| # NVreg_RMFailAllocCount (if available) | |
| # Number of retry attempts for RM memory allocation failures. | |
| # Usage: options nvidia NVreg_RegistryDwords="NVreg_RMFailAllocCount=N;" | |
| # | |
| # NVreg_RMFailAllocTimeout (if available) | |
| # Timeout in ms for RM memory allocation attempts. | |
| # Usage: options nvidia NVreg_RegistryDwords="NVreg_RMFailAllocTimeout=N;" | |
| # ============================================================================== | |
| # Platform-Specific Options | |
| # ============================================================================== | |
| # | |
| # The following options are only relevant on specific non-desktop platforms. | |
| # They have no effect on standard Linux x86 desktop/laptop configurations. | |
| # NVreg_EnableUserNUMAManagement | |
| # Requires the NVIDIA Persistence daemon to manage onlining and offlining | |
| # of NUMA device memory. Only relevant on POWER9 systems that support | |
| # onlining GPU device memory to a NUMA node. | |
| # Default: 1 | |
| # NVreg_MemoryPoolSize (VMware ESXi only) | |
| # Size of the memory pool in GB created on VMware ESXi to satisfy system | |
| # memory allocations requested by the kernel module. | |
| # Default: 0 (disabled) | |
| # NVreg_KMallocHeapMaxSize (VMware ESXi only) | |
| # Maximum size in MB of the kmalloc heap memory space reserved for the | |
| # kernel module on VMware ESXi. | |
| # Default: 0 | |
| # NVreg_VMallocHeapMaxSize (VMware ESXi only) | |
| # Maximum size in MB of the vmalloc heap memory space reserved for the | |
| # kernel module on VMware ESXi. | |
| # Default: 0 | |
| # NVreg_IgnoreMMIOCheck (VMware ESXi only) | |
| # Ignores the MMIO limit check during device probe on VMware ESXi. | |
| # Needed when the MMIO limit differs between a base ESXi version and its | |
| # updates, causing probe failure. | |
| # Default: 0 | |
| # NVreg_TegraGpuPgMask (Tegra iGPU only) | |
| # Controls the TPC/GPC/FBP power-gating mask for Tegra integrated GPUs. | |
| # Default: ~0 | |
| # NVreg_RegisterPlatformDeviceDriver (Tegra / embedded only) | |
| # Controls whether the driver registers itself with the platform subsystem. | |
| # Only relevant on embedded Tegra systems with platform-enumerated GPUs. | |
| # Default: 1 | |
| # ============================================================================== | |
| # nvidia_drm module parameters | |
| # ============================================================================== | |
| # | |
| # Set via: options nvidia_drm <param>=<value> | |
| # nvidia_drm.modeset (bool) | |
| # Enables atomic kernel modesetting (KMS). Required for Wayland and PRIME | |
| # Offload. Default: true (1) since driver ~560. | |
| # Verify the active state with: | |
| # cat /sys/module/nvidia_drm/parameters/modeset | |
| # If the output is Y, no explicit modprobe.d entry is needed. | |
| # nvidia_drm.fbdev (bool) | |
| # Creates a /dev/fbN framebuffer device backed by the NVIDIA DRM driver. | |
| # Required for fbcon (Linux framebuffer console) on NVIDIA GPUs. Only | |
| # compiled in when the kernel provides the necessary fbdev infrastructure | |
| # (NV_DRM_FBDEV_AVAILABLE). When present, disabling this prevents the | |
| # driver from registering a framebuffer device, which can be useful in | |
| # environments where fbdev conflicts with another driver or is simply | |
| # not needed. | |
| # Default: true (1) | |
| # Usage: options nvidia_drm modeset=1 fbdev=1 | |
| # ============================================================================== | |
| # nvidia_modeset module parameters | |
| # ============================================================================== | |
| # | |
| # nvidia_modeset implements the NVIDIA KMS driver (NVKMS). These parameters | |
| # control display output behaviour and are set via: | |
| # options nvidia_modeset <param>=<value> | |
| # | |
| # Parameters are read-only after module load (permission 0400) except | |
| # where noted. | |
| # nvidia_modeset.hdmi_deepcolor (bool) | |
| # Enables HDMI deep color output (10-bit or 12-bit colour depth) on | |
| # supported displays and GPUs. When disabled the driver limits HDMI output | |
| # to standard 8-bit colour. Disabling may help with monitors that report | |
| # deep color support but display incorrectly at higher bit depths. | |
| # Default: true (1) | |
| # nvidia_modeset.output_rounding_fix (bool) | |
| # Enables a fixup for output rounding artefacts on certain display | |
| # configurations. Disabling this is occasionally needed as a workaround | |
| # for display corruption on specific monitor/GPU combinations. | |
| # Default: true (1) | |
| # nvidia_modeset.disable_hdmi_frl (bool) | |
| # Disables HDMI Fixed Rate Link (FRL), the high-bandwidth signalling mode | |
| # used by HDMI 2.1. When disabled, the driver falls back to HDMI TMDS | |
| # (Traditional Mode), limiting bandwidth to the HDMI 2.0 ceiling (~18 Gbps). | |
| # Set to true if an HDMI 2.1 cable or monitor behaves incorrectly with FRL | |
| # enabled. | |
| # Default: false (0) | |
| # nvidia_modeset.disable_vrr_memclk_switch (bool) | |
| # Disables the automatic memory clock switch that the driver performs when | |
| # entering or exiting VRR (Variable Refresh Rate / G-Sync / FreeSync) mode. | |
| # The memclk switch ensures adequate bandwidth for VRR operation; disabling | |
| # it may reduce display flickering during VRR transitions on some systems | |
| # at the cost of potential bandwidth limitations. | |
| # Default: false (0) | |
| # nvidia_modeset.opportunistic_display_sync (bool) | |
| # Enables opportunistic display synchronisation, where the driver takes | |
| # advantage of available vblank time to improve frame delivery timing | |
| # without explicit sync requests. Disabling may help diagnose pacing | |
| # issues in specific multi-monitor or VRR configurations. | |
| # Default: true (1) | |
| # nvidia_modeset.enable_overlay_layers (bool) | |
| # Enables use of hardware overlay planes for compositing. When enabled, | |
| # the DRM/KMS subsystem can assign surfaces to dedicated overlay hardware | |
| # rather than blending them all in the primary plane. Disabling forces all | |
| # output through the primary plane, which may be required as a workaround | |
| # for compositing artefacts on certain display configurations. | |
| # Default: true (1) | |
| # nvidia_modeset.conceal_vrr_caps (bool) | |
| # When enabled, the driver hides all VRR (G-Sync / FreeSync) capabilities | |
| # from the display subsystem, preventing any application or compositor from | |
| # enabling VRR. Intended for testing and for environments where VRR causes | |
| # display instability. | |
| # Default: false (0) | |
| # nvidia_modeset.config_file (string) | |
| # Path to an nvidia-modeset (NVKMS) configuration file that overrides | |
| # display parameters such as colour space, HDR settings, and output | |
| # attributes on a per-connector basis. When unset, no configuration file | |
| # is loaded. Only available when compiled with NVKMS_CONFIG_FILE_SUPPORTED. | |
| # Default: NULL (disabled) | |
| # Usage: options nvidia_modeset config_file=/etc/nvidia/modeset.conf | |
| # ============================================================================== | |
| # nvidia_uvm module parameters | |
| # ============================================================================== | |
| # | |
| # nvidia_uvm implements CUDA Unified Virtual Memory. These parameters control | |
| # UVM migration policy, memory placement, and HMM behaviour. | |
| # Set via: options nvidia_uvm <param>=<value> | |
| # | |
| # Debug and test-only parameters (uvm_debug_prints, uvm_enable_builtin_tests, | |
| # uvm_release_asserts_*, uvm_leak_checker, uvm_enable_debug_procfs, | |
| # uvm_debug_enable_push_*, uvm_fault_force_sysmem) are omitted. | |
| # nvidia_uvm.uvm_disable_hmm (bool) | |
| # Force-disables Heterogeneous Memory Management (HMM) in the UVM driver, | |
| # preventing GPU threads from directly faulting on CPU-allocated memory. | |
| # HMM is enabled by default on supported CPU architectures (x86_64 with | |
| # kernel >= 6.1.24 and CONFIG_HMM_MIRROR) and disabled by default on | |
| # unsupported ones. Setting this to true disables HMM unconditionally, | |
| # falling back to explicit memory transfers for Unified Memory. | |
| # Useful for isolating HMM-related faults or when HMM causes instability. | |
| # Default: false on supported architectures; true elsewhere | |
| # Verify: nvidia-smi -q | grep Addressing | |
| # nvidia_uvm.uvm_ats_mode (int) | |
| # Controls ATS (PCIe Address Translation Services) for UVM. ATS allows the | |
| # GPU to access CPU virtual addresses directly via PCIe without requiring | |
| # the UVM fault handler. Only has effect on platforms with hardware ATS | |
| # support (e.g. IBM POWER9/10 with NVLink, or future x86 ATS-capable PCIe). | |
| # Set to 0 to disable ATS; any other value leaves ATS enabled where available. | |
| # Default: 1 | |
| # nvidia_uvm.uvm_peer_copy (string) | |
| # Selects the addressing mode used for peer (GPU-to-GPU) memory copies. | |
| # Only valid on Ampere and later GPUs. | |
| # | |
| # "phys" = use physical addressing for peer copies (default) | |
| # "virt" = use virtual addressing for peer copies | |
| # | |
| # Virtual addressing may improve compatibility in certain multi-GPU | |
| # topologies but can have performance implications. | |
| # Default: "phys" | |
| # nvidia_uvm.uvm_page_table_location (string) | |
| # Sets the memory location for UVM-allocated GPU page tables. | |
| # | |
| # "vid" = place page tables in GPU video memory (VRAM) | |
| # "sys" = place page tables in system memory | |
| # | |
| # When unset, the driver selects automatically based on available VRAM | |
| # and access pattern heuristics. Forcing "sys" can reduce VRAM pressure | |
| # in memory-constrained workloads. | |
| # Default: NULL (automatic) | |
| # nvidia_uvm.uvm_global_oversubscription (int) | |
| # Enables or disables global memory oversubscription for UVM allocations. | |
| # When enabled (1), UVM may allocate more virtual memory than is backed by | |
| # physical memory, relying on demand paging to migrate pages on fault. | |
| # Disabling (0) prevents oversubscription, causing allocations to fail | |
| # eagerly if physical backing is insufficient. | |
| # Default: 1 | |
| # nvidia_uvm.uvm_enable_va_space_mm (int) | |
| # Controls whether UVM uses mmu_notifiers to associate a UVM VA space with | |
| # a process's mm_struct. When enabled, UVM can track process address space | |
| # changes and invalidate GPU mappings correctly on fork, munmap, and exec. | |
| # Disabling may be necessary on kernels where mmu_notifier support is | |
| # incomplete or buggy, but can cause stale GPU mappings after address space | |
| # changes. | |
| # Default: 1 | |
| # nvidia_uvm.uvm_perf_access_counter_migration_enable (int) | |
| # Controls whether GPU hardware access counters trigger automatic page | |
| # migration from remote (e.g. system) memory to local GPU memory. Access | |
| # counters track frequency of remote accesses and can initiate proactive | |
| # migration to reduce latency. | |
| # -1 or below = use the driver's default policy (default) | |
| # 0 = disable access counter migrations | |
| # 1 or above = enable access counter migrations | |
| # nvidia_uvm.uvm_perf_access_counter_threshold (uint) | |
| # Number of remote memory accesses on a region required before an access | |
| # counter notification is triggered. Lower values cause more aggressive | |
| # migration; higher values reduce migration overhead at the cost of more | |
| # remote accesses. Valid range: 1 to 65535. | |
| # Only relevant when uvm_perf_access_counter_migration_enable >= 1. | |
| # nvidia_uvm.uvm_channel_gpfifo_loc (string) | |
| # nvidia_uvm.uvm_channel_gpput_loc (string) | |
| # nvidia_uvm.uvm_channel_pushbuffer_loc (string) | |
| # Control the memory location of UVM internal channel data structures: | |
| # the GPFIFO ring buffer, the GPPUT doorbell, and the pushbuffer. | |
| # | |
| # "auto" = driver selects based on GPU architecture and topology (default) | |
| # "vid" = place in GPU video memory | |
| # "sys" = place in system memory | |
| # | |
| # Forcing to "sys" can help on systems where GPU memory bandwidth to | |
| # internal structures causes contention, at the cost of higher PCIe | |
| # latency for channel operations. | |
| # Default: "auto" for all three | |
| # ============================================================================== | |
| # nvidia_peermem module parameters | |
| # ============================================================================== | |
| # | |
| # nvidia_peermem provides GPUDirect RDMA support by registering with the | |
| # kernel peer memory framework, allowing RDMA NICs (e.g. Mellanox/NVIDIA | |
| # ConnectX) to map GPU memory directly without CPU involvement. | |
| # Set via: options nvidia_peermem <param>=<value> | |
| # nvidia_peermem.peerdirect_support (int) | |
| # Selects the level of peer-direct (GPUDirect RDMA) support. | |
| # | |
| # 0 = standard (default): use the current nv_peer_mem API | |
| # 1 = legacy: use the older API required by MLNX_OFED 4.9 LTS and | |
| # similar older InfiniBand stacks that do not support the current API | |
| # | |
| # Only change this if the RDMA driver stack logs errors about unsupported | |
| # peer memory operations, or if the IB driver package explicitly documents | |
| # requiring legacy mode. | |
| # Default: 0 | |
| # nvidia_peermem.persistent_api_support (int) | |
| # Selects the level of support for the persistent peer memory API, which | |
| # allows RDMA registrations to survive GPU reset events. | |
| # | |
| # 0 = legacy: do not use the persistent API | |
| # 1 = current: use the persistent API (default) | |
| # | |
| # Set to 0 when using older RDMA stacks that do not implement the | |
| # persistent peer memory interface. | |
| # Default: 1 | |
| # ============================================================================== | |
| # Diagnostics | |
| # ============================================================================== | |
| # | |
| # nvidia-settings -q all -t | |
| # cat /proc/driver/nvidia/params | |
| # cat /proc/driver/nvidia/version | |
| # cat /proc/driver/nvidia/gpus/*/power | |
| # cat /proc/driver/nvidia/gpus/*/information | |
| # modinfo nvidia nvidia_drm nvidia_uvm nvidia_modeset nvidia_peermem typec_nvidia \ | |
| # nvidia_wmi_ec_backlight i2c_nvidia_gpu | |
| # | |
| # Per-module active parameter values: | |
| # sudo systool -m nvidia -v | |
| # sudo systool -m nvidia_drm -v | |
| # sudo systool -m nvidia_modeset -v | |
| # sudo systool -m nvidia_uvm -v | |
| # sudo systool -m nvidia_peermem -v | |
| # | |
| # Or via /sys directly: | |
| # ls /sys/module/nvidia/parameters/ | |
| # ls /sys/module/nvidia_drm/parameters/ | |
| # ls /sys/module/nvidia_modeset/parameters/ | |
| # ls /sys/module/nvidia_uvm/parameters/ | |
| # ls /sys/module/nvidia_peermem/parameters/ | |
| # | |
| # Open vs proprietary flavor: | |
| # modinfo nvidia | grep license | |
| # cat /proc/driver/nvidia/version | |
| # | |
| # GSP firmware mode active on each GPU: | |
| # cat /proc/driver/nvidia/gpus/*/information | grep -i firmware | |
| # | |
| # HMM addressing mode (open modules only): | |
| # nvidia-smi -q | grep Addressing | |
| # | |
| # GPU UUIDs (for NVreg_ExcludedGpus): | |
| # nvidia-smi -L | |
| # | |
| # NVLink topology: | |
| # nvidia-smi topo -m | |
| # | |
| # PCIe BAR and ReBAR state: | |
| # lspci -vvv -s <BDF> | grep -i "memory\|bar\|resizable" | |
| # cat /sys/bus/pci/devices/<BDF>/resource | |
| # | |
| # IOMMU groups (for GPUDirect topology verification): | |
| # find /sys/kernel/iommu_groups -type l | sort -V | |
| # | |
| # RTD3 / power state: | |
| # cat /proc/driver/nvidia/gpus/*/power | |
| # cat /sys/bus/pci/devices/<BDF>/power/runtime_status | |
| # | |
| # IMEX channel nodes: | |
| # ls /dev/nvidia-caps-imex-channels/ | |
| # cat /proc/devices | grep nvidia | |
| # | |
| # Enumerate GSP/RM RegistryDwords keys from firmware blobs: | |
| # rg -zaoN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \ | |
| # | cut -d: -f2- | sort -u | |
| # rg -zaioN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \ | |
| # | cut -d: -f2- | sort -u | |
| # ============================================================================== | |
| # Active Configuration | |
| # ============================================================================== | |
| # NVreg_DynamicPowerManagement is also configured via udev: | |
| # /lib/udev/rules.d/80-nvidia-pm.rules | |
| # https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/dynamicpowermanagement.html#AutomatedSetup803b0 | |
| # NVreg_EnableGpuFirmware=0x00 disables GSP entirely. Valid for the proprietary | |
| # driver only. The open kernel modules cannot operate without GSP; use 0x12 | |
| # (the compiled default) or omit this line entirely when using open modules. | |
| options nvidia \ | |
| NVreg_UsePageAttributeTable=1 \ | |
| NVreg_DynamicPowerManagement=0x02 \ | |
| NVreg_EnableGpuFirmware=0x00 \ | |
| NVreg_RegistryDwords="RMIntrLockingMode=1;" | |
| # nvidia_drm.modeset=1 is the compiled default since driver ~560. | |
| # Confirm the active state with: cat /sys/module/nvidia_drm/parameters/modeset | |
| # options nvidia_drm modeset=1 | |
| # i2c_nvidia_gpu: in-kernel driver for I2C over the GPU's USB Type-C / | |
| # DisplayPort Alt Mode port. Conflicts with the proprietary NVIDIA driver's own | |
| # I2C stack -- causing duplicate bus registrations, DDC/CI failures, or driver | |
| # load errors on some configurations. Blacklisted here in favour of the NVIDIA | |
| # driver handling I2C internally. Remove if you use Type-C DP Alt Mode and | |
| # encounter display detection issues. | |
| blacklist i2c_nvidia_gpu | |
| # nova_core / nova_drm: NVIDIA's experimental in-tree Rust-based GPU driver | |
| # (Nova), present on kernels built with CONFIG_NOVA_CORE. Conflicts with the | |
| # out-of-tree nvidia.ko / nvidia_drm.ko. Blacklisted automatically by | |
| # nvidia-utils; add the lines below on custom installs without nvidia-utils. | |
| # blacklist nova_core | |
| # blacklist nova_drm |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ############################################################################### | |
| # /etc/environment | |
| # | |
| # To reload the Wayland environment, run: | |
| # kwin_wayland --replace | |
| # env KEY=VAL KEY2=VAL2 ... kwin_wayland --replace | |
| ############################################################################### | |
| ############################################################################### | |
| # Vendor / Graphics Driver Settings | |
| ############################################################################### | |
| # __GL_VRR_ALLOWED | |
| # Enables Variable Refresh Rate (VRR) support for NVIDIA drivers. | |
| # Set to 1 to allow VRR for smoother display output on compatible monitors. | |
| #__GL_VRR_ALLOWED=1 | |
| # __GL_GSYNC_ALLOWED | |
| # Enables NVIDIA G-SYNC functionality for supported displays. | |
| # Set to 1 to allow G-SYNC for reduced screen tearing. | |
| #__GL_GSYNC_ALLOWED=1 | |
| # __GL_SYNC_TO_VBLANK | |
| # Synchronizes OpenGL rendering with the display’s vertical blank. | |
| # Set to 1 to enable vertical synchronization (vsync) and minimize tearing. | |
| #__GL_SYNC_TO_VBLANK=1 | |
| # __GL_THREADED_OPTIMIZATIONS | |
| # Enables threaded optimizations in OpenGL. | |
| # Set to 1 to allow multi-threaded improvements in rendering performance. | |
| #__GL_THREADED_OPTIMIZATIONS=1 | |
| # __GL_YIELD | |
| # Controls whether OpenGL should yield processing time to other threads. | |
| # Set to 1 to yield processor time during intensive rendering. | |
| #__GL_YIELD=1 | |
| # __GLX_VENDOR_LIBRARY_NAME | |
| # Specifies the vendor library to use for GLX. | |
| # This variable is used to select the appropriate graphics driver. | |
| # For NVIDIA proprietary drivers, set to "nvidia". | |
| #__GLX_VENDOR_LIBRARY_NAME=nvidia | |
| # LIBGL_DEBUG | |
| # Activates debug output for Mesa’s libGL. | |
| # Useful for troubleshooting OpenGL issues (e.g., set to "verbose"). | |
| #LIBGL_DEBUG=verbose | |
| # MESA_DEBUG | |
| # Enables additional debugging output from the Mesa graphics library. | |
| # Set to 1 for enhanced debugging information. | |
| #MESA_DEBUG=1 | |
| # MESA_NO_ERROR | |
| # Disables Mesa’s error checking to improve performance. | |
| # Set to 1 to disable error reporting (use with caution). | |
| #MESA_NO_ERROR=1 | |
| # MESA_GL_VERSION_OVERRIDE | |
| # Overrides the OpenGL version reported by Mesa. | |
| # Useful for testing compatibility with specific OpenGL versions. | |
| #MESA_GL_VERSION_OVERRIDE=... | |
| # MESA_GLES_VERSION_OVERRIDE | |
| # Overrides the OpenGL ES version reported by Mesa. | |
| # Useful for compatibility testing on mobile or embedded systems. | |
| #MESA_GLES_VERSION_OVERRIDE=... | |
| # MESA_SHADER_CACHE_DISABLE | |
| # Disables the shader caching mechanism in Mesa. | |
| # Set to 1 to disable caching (typically for debugging purposes). | |
| #MESA_SHADER_CACHE_DISABLE=1 | |
| # VDPAU_DRIVER | |
| # Specifies the VDPAU (Video Decode and Presentation API for Unix) driver to use. | |
| # For NVIDIA, set to "nvidia" to enable proper video decoding acceleration. | |
| #VDPAU_DRIVER=nvidia | |
| # __NV_PRIME_RENDER_OFFLOAD | |
| # Enables NVIDIA Prime Render Offload for offloading rendering tasks to the NVIDIA GPU. | |
| # Set to 1 to activate offloading for hybrid graphics configurations. | |
| #__NV_PRIME_RENDER_OFFLOAD=1 | |
| ############################################################################### | |
| # Additional OpenGL Driver Options | |
| ############################################################################### | |
| # __GL_ALLOW_FXAA_USAGE | |
| # Allows the use of Fast Approximate Anti-Aliasing (FXAA) to smooth jagged edges. | |
| # Set to 1 to enable FXAA. | |
| #__GL_ALLOW_FXAA_USAGE=1 | |
| # __GL_ALLOW_UNOFFICIAL_PROTOCOL | |
| # Allows usage of unofficial or non-standard OpenGL protocols. | |
| # Set to 1 to enable such protocols. | |
| #__GL_ALLOW_UNOFFICIAL_PROTOCOL=1 | |
| # __GL_ConformantBlitFramebufferScissor | |
| # Enforces conformant scissor behavior during framebuffer blit operations. | |
| # Set to 1 to standardize scissor operations during blit. | |
| #__GL_ConformantBlitFramebufferScissor=1 | |
| # __GL_DOOM3 | |
| # Enables specific optimizations or compatibility features for the Doom 3 engine. | |
| # Set to 1 to activate Doom 3–related rendering adjustments. | |
| #__GL_DOOM3=1 | |
| # __GL_ExtensionStringVersion | |
| # Overrides the reported version of the OpenGL extension string. | |
| # Useful for compatibility with applications expecting a specific extension version. | |
| #__GL_ExtensionStringVersion=... | |
| # __GL_FSAA_MODE | |
| # Sets the Full-Scene Anti-Aliasing (FSAA) mode for rendering. | |
| # Specify an integer value corresponding to the desired FSAA level. | |
| #__GL_FSAA_MODE=... | |
| # __GL_IGNORE_GLSL_EXT_REQS | |
| # Instructs the driver to ignore certain GLSL extension requirements. | |
| # Set to 1 to bypass strict GLSL extension checks. | |
| #__GL_IGNORE_GLSL_EXT_REQS=1 | |
| # __GL_LOG_MAX_ANISO | |
| # Defines the maximum anisotropic filtering level to be logged for debugging. | |
| # Set a numeric value to specify the maximum anisotropy level. | |
| #__GL_LOG_MAX_ANISO=... | |
| # __GL_NO_DSO_FINALIZER | |
| # Disables finalization routines for dynamically loaded shared objects (DSO). | |
| # Set to 1 to disable finalizers when troubleshooting cleanup issues. | |
| #__GL_NO_DSO_FINALIZER=1 | |
| # __GL_SELINUX_BOOLEANS | |
| # Configures SELinux booleans related to OpenGL driver behavior. | |
| # Set the appropriate booleans for your security context. | |
| #__GL_SELINUX_BOOLEANS=... | |
| # __GL_SHADER_DISK_CACHE | |
| # Enables or disables the use of a disk cache for compiled shaders. | |
| # Set to 1 to enable caching for improved shader load performance. | |
| #__GL_SHADER_DISK_CACHE=1 | |
| # __GL_SHADER_DISK_CACHE_PATH | |
| # Specifies the file system path for storing the shader disk cache. | |
| # Set this to a directory where cached shaders should be stored. | |
| #__GL_SHADER_DISK_CACHE_PATH=/path/to/shader/cache | |
| # __GL_SHARPEN_ENABLE | |
| # Enables a sharpening filter in the OpenGL rendering pipeline. | |
| # Set to 1 to activate image sharpening. | |
| #__GL_SHARPEN_ENABLE=1 | |
| # __GL_SHARPEN_IGNORE_FILM_GRAIN | |
| # Configures the sharpening filter to ignore film grain effects. | |
| # Set to 1 to bypass film grain during the sharpening process. | |
| #__GL_SHARPEN_IGNORE_FILM_GRAIN=1 | |
| # __GL_SHARPEN_VALUE | |
| # Sets the intensity value for the sharpening filter. | |
| # Use a numeric value to define the level of sharpening applied. | |
| #__GL_SHARPEN_VALUE=... | |
| # __GL_SHOW_GRAPHICS_OSD | |
| # Displays an on-screen display (OSD) for graphics diagnostics and performance. | |
| # Set to 1 to enable the graphics OSD. | |
| #__GL_SHOW_GRAPHICS_OSD=1 | |
| # __GL_SINGLE_THREADED | |
| # Forces OpenGL operations to run in a single-threaded mode. | |
| # Set to 1 to disable multi-threading, which may help in debugging. | |
| #__GL_SINGLE_THREADED=1 | |
| # __GL_SORT_FBCONFIGS | |
| # Enables sorting of framebuffer configurations for optimal selection. | |
| # Set to 1 to automatically sort and choose the best framebuffer configuration. | |
| #__GL_SORT_FBCONFIGS=1 | |
| # __GL_SYNC_DISPLAY_DEVICE | |
| # Synchronizes rendering with a specific display device. | |
| # Set this variable to the identifier of the target display device. | |
| #__GL_SYNC_DISPLAY_DEVICE=... | |
| # __GL_WRITE_TEXT_SECTION | |
| # Controls whether textual sections of shaders are written for debugging purposes. | |
| # Set to 1 to enable writing of shader text sections. | |
| #__GL_WRITE_TEXT_SECTION=1 | |
| ############################################################################### | |
| # Platform and Environment Settings | |
| ############################################################################### | |
| # XDG_SESSION_TYPE | |
| # Defines the type of session (e.g., "x11" or "wayland"). | |
| # This setting determines which window system will be used. | |
| #XDG_SESSION_TYPE=wayland | |
| # CLUTTER_BACKEND | |
| # Sets the backend for Clutter applications. | |
| # Common values include "x11" or "wayland" depending on your environment. | |
| #CLUTTER_BACKEND=wayland | |
| # GBM_BACKEND | |
| # Specifies the backend for the Generic Buffer Manager (GBM). | |
| # Used in rendering systems that support GBM. | |
| #GBM_BACKEND=... | |
| # LIBVA_DRIVER_NAME | |
| # Defines the driver for VA-API (Video Acceleration API) for hardware video decoding. | |
| # Common values might be "i965", "vaapi", or "nvidia" for NVIDIA proprietary drivers. | |
| #LIBVA_DRIVER_NAME=nvidia | |
| # QT_ENABLE_HIGHDPI_SCALING | |
| # Enables High DPI scaling for Qt applications. | |
| # Set to 1 to automatically adjust application scaling on high-resolution displays. | |
| QT_ENABLE_HIGHDPI_SCALING=1 | |
| # QT_AUTO_SCREEN_SCALE_FACTOR | |
| # Allows Qt to automatically scale the user interface based on screen DPI. | |
| # Uncomment and set to 1 if you want automatic DPI adjustments. | |
| #QT_AUTO_SCREEN_SCALE_FACTOR=1 | |
| # QT_SCALE_FACTOR | |
| # Manually sets the scaling factor for Qt applications. | |
| # Useful for overriding automatic scaling; default is typically 1.0. | |
| #QT_SCALE_FACTOR=1.0 | |
| # QT_QPA_PLATFORM | |
| # Determines the Qt platform plugin to use. | |
| # Valid options include "xcb" for X11 and "wayland" for Wayland. | |
| #QT_QPA_PLATFORM=wayland | |
| # QT_QPA_PLATFORMTHEME | |
| # Sets the platform theme for Qt applications. | |
| # Common themes include "gtk2", "qt5ct", etc. | |
| QT_QPA_PLATFORMTHEME=qt5ct | |
| # QT_LOGGING_CONF | |
| # Specifies the file path for Qt’s logging configuration. | |
| # Use this to define custom logging settings for Qt applications. | |
| #QT_LOGGING_CONF=/path/to/logging.conf | |
| ############################################################################### | |
| # Window Manager and Compositor Settings | |
| ############################################################################### | |
| # QT_XCB_NO_COMPOSITE | |
| # Disables Qt’s internal compositing on XCB (X11). | |
| # Set to 1 if you want to force the use of an external compositor. | |
| #QT_XCB_NO_COMPOSITE=1 | |
| # QT_WAYLAND_DISABLE_WINDOWDECORATION | |
| # Disables Qt’s internal window decorations under Wayland. | |
| # This allows the compositor (e.g., KWin) to manage window borders and title bars. | |
| QT_WAYLAND_DISABLE_WINDOWDECORATION=1 | |
| # KWIN_X11_FORCE_SOFTWARE_VSYNC | |
| # Forces KWin to use software vsync on X11. | |
| # Useful for testing or when hardware vsync causes issues. | |
| #KWIN_X11_FORCE_SOFTWARE_VSYNC=1 | |
| # KWIN_X11_REFRESH_RATE | |
| # Specifies the refresh rate (in Hz) for KWin on X11. | |
| # Define your display's refresh rate here (e.g., 60, 144). | |
| #KWIN_X11_REFRESH_RATE=60 | |
| # KWIN_TRIPLE_BUFFER | |
| # Enables triple buffering in KWin. | |
| # Triple buffering may smooth display output at the cost of increased latency. | |
| #KWIN_TRIPLE_BUFFER=1 | |
| # KWIN_DRM_NO_AMS | |
| # Disables Atomic Modesetting (AMS) in KWin's DRM backend. | |
| # Use this setting to troubleshoot display issues on some hardware configurations. | |
| #KWIN_DRM_NO_AMS=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment