graphics driver for AMD GPUs on Linux
AMDGPU_boot_log_screenshot.png
AMDgpu is an open source device driver for the Linux operating system developed by AMD to support its Radeon lineup of graphics cards (GPUs). It was announced in 2014 as the successor … Wikipedia
Factsheet
Developer AMD
Release 1.0 / 20 April 2015; 11 years ago (2015-04-20)
Stable release 6.16
/ 4 August 2025; 10 months ago (2025-08-04)
Factsheet
Developer AMD
Release 1.0 / 20 April 2015; 11 years ago (2015-04-20)
Stable release 6.16
/ 4 August 2025; 10 months ago (2025-08-04)
🌐
Gentoo Wiki
wiki.gentoo.org › wiki › AMDGPU › en
AMDGPU - Gentoo wiki
Section "OutputClass" Identifier "AMDgpu" MatchDriver "amdgpu" Driver "amdgpu" Option "TearFree" "true" EndSection · Note This issue has already been reported in the Gentoo forums: https://forums.gentoo.org/viewtopic-t-1160883.html · The suggested fix at upstream level is to set the sg_display module parameter like this: amdgpu.sg_display=0
🌐
Phoronix
phoronix.com › news › AMD-Scatter-Gather-Re-Enabled
AMD Re-Enables Scatter/Gather Support For All APUs On Linux - Phoronix
February 9, 2023 - Among those originally reporting ... to being enabled while if you encounter any flickering or display issues, try the new amdgpu.sg_display=0 option to disable Scatter/Gather....
🌐
ArchWiki
wiki.archlinux.org › title › AMDGPU
AMDGPU - ArchWiki
May 28, 2026 - When you change resolution or connect to an external monitor, if the screen flickers or stays white, add amdgpu.sg_display=0 as a kernel parameter.
🌐
Framework Community
community.frame.work › framework laptop 13 › linux
[RESOLVED] FW13 AMD 7840U Arch Graphics Output Corruption - Linux - Framework Community
January 24, 2024 - Hi all, this problem only seemed ... like they’re being written to, but I assume its something to do with the AMD GPU Linux driver. I have the amdgpu.sg_display=0 in my kernel parameters which resolved the issue where parts of the screen ......
🌐
GitHub
gist.github.com › danielrosehill › 6a531b079906f160911a87dea50e1507
A Dummy's Guide to AMD GPU Issues on Linux - Understanding RDNA3, TLB Fences, and Kernel Parameters · GitHub
amdgpu.sg_display=0 · What: Disables scatter-gather for display · Why: Reduces DMA fence timeouts · When to use: Display issues, TLB fence timeouts · amdgpu.dcdebugmask=0x10 · What: Disables certain Display Core debugging features · Why: ...
🌐
Reddit
reddit.com › r/fedora › trying to set amdgpu.sg_display=0
r/Fedora on Reddit: Trying to set amdgpu.sg_display=0
November 17, 2023 -

M might just be stupid, but I can't figure out how to set amdgpu.sg_display equal to 0. I think it might fix screen flashing issues, but I don't know how to access that setting.

🌐
Ubuntu
bugs.launchpad.net › bugs › 2030680
Bug #2030680 “AMD 6800h internal graphics: flickering white scre...” : Bugs : linux-oem-6.1 package : Ubuntu
August 7, 2023 - 64 GB of RAM. amdgpu.sg_display=0 works to stop the flickering (currently on 6.4.8 from the mainline package, but I would love to be able to turn back on secure boot)
🌐
Arch Linux Forums
bbs.archlinux.org › viewtopic.php
[SOLVED] amdgpu framework [drm] dc_dmub_srv_log_diagnostic_data / Kernel & Hardware / Arch Linux Forums
January 11, 2025 - journalctl -k -b-1 | grep amdgpu Jan 11 09:58:42 archlinux kernel: Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=74471d0a-1b6e-4dea-a165-539ea963f5d8 rw loglevel=3 rd.luks.name=e2b73488-45b2-4d30-80a1-c577d1f4de9a=root root=/dev/mapper/root amdgpu.sg_display=0 Jan 11 09:58:42 archlinux kernel: Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=74471d0a-1b6e-4dea-a165-539ea963f5d8 rw loglevel=3 rd.luks.name=e2b73488-45b2-4d30-80a1-c577d1f4de9a=root root=/dev/mapper/root amdgpu.sg_display=0 Jan 11 09:58:44 archlinux kernel: [drm] amdgpu kernel modesetting enabled.
Find elsewhere
🌐
The Mail Archive
mail-archive.com › amd-gfx@lists.freedesktop.org › msg87674.html
Re: drm/amdgpu: add force_sg_display module parameter
Add a module parameter to force sg (scatter/gather) display on APUs. Normally we allow displays in both VRAM and GTT, but this option forces displays into GTT so we can explicitly test more scenarios with GTT. Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h ...
🌐
ArchWiki
wiki.archlinux.org › title › AMDGPU_(Magyar)
AMDGPU (Magyar) - ArchWiki
April 14, 2026 - When you change resolution or connect to an external monitor, if the screen flickers or stays white, add amdgpu.sg_display=0 as a kernel parameter.
🌐
Ubuntu
bugs.launchpad.net › bugs › 2009952
Bug #2009952 “[amdgpu][psr] Screen flickering/ tearing on 6.1/6....” : Bugs : linux-oem-6.1 package : Ubuntu
March 10, 2023 - Test 1: amdgpu. ... Test 2: amggpu.sg_display=0 Flicker/tear is back, and a full screen freeze within 10 minutes.
🌐
GitHub
github.com › NixOS › nixos-hardware › issues › 817
Fix for framework 13 AMD white screen / flickering issue on kernels >6.1 · Issue #817 · NixOS/nixos-hardware
December 31, 2023 - # if using this or any version >6.1 boot.kernelPackages = pkgs.linuxPackages_latest; # then this is needed to stop the flickering issue boot.kernelParams = ["amdgpu.sg_display=0"];
Author   NixOS
🌐
GitHub
github.com › torvalds › linux › blob › master › drivers › gpu › drm › amd › amdgpu › amdgpu_drv.c
linux/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c at master · torvalds/linux
module_param_named(sg_display, amdgpu_sg_display, int, 0444); · /** * DOC: umsch_mm (int) * Enable Multi Media User Mode Scheduler. This is a HW scheduling engine for VCN and VPE.
Author   torvalds
🌐
Arch Linux Forums
bbs.archlinux.org › viewtopic.php
GPU driver failing? / Laptop Issues / Arch Linux Forums
Does it help to add "amdgpu.sg_display=0"? How to upload text · How to boot w/o GUI · Disable Windows Fast-Start! · Fix your xinitrc · Offline · Sveske-juice · Member · From: Denmark · Registered: 2022-06-12 · Posts: 18 · Using · amdgpu.sg_display=0 ·
🌐
Reddit
reddit.com › r/pop_os › permanently adding kernel parameter in systemd-boot?
r/pop_os on Reddit: Permanently adding kernel parameter in systemd-boot?
August 28, 2023 - My Ryzen desktop requires adding "amdgpu.sg_display=0" to the kernel boot options for the graphics output. Currently, I do this by manually editing…
🌐
Linux Kernel
docs.kernel.org › gpu › amdgpu › module-parameters.html
Module Parameters — The Linux Kernel documentation
Override for runtime power management control for dGPUs. The amdgpu driver can dynamically power down the dGPUs when they are idle if supported. The default is -1 (auto enable). Setting the value to 0 disables this functionality. Setting the value to -2 is auto enabled with power down when ...
🌐
Arch Linux Forums
bbs.archlinux.org › viewtopic.php
[SOLVED] Random horizontal strips of visual artifacts with an AMD GPU / Applications & Desktop Environments / Arch Linux Forums
amdgpu.sg_display=0 · parameter, thanks. Offline · O239 · Member · Registered: 2024-03-01 · Posts: 7 · The · amdgpu.dcdebugmask=0x10 · kernel parameter (which disables Panel Self Refresh) seems to have worked for me. Also, there's another existing bug report for this issue (this time for the amdgpu driver): https://gitlab.freedesktop.org/drm/amd/-/issues/3388 ·
Top answer
1 of 1
8

Here are some answers to your questions:

Is there somewhere that lists the options and how to set them and what they do?

(Short answer, so I'm placing this first)

modinfo amdgpu

Look for param: in the output. These are all the available parameter options for this kernel module. The Linux kernel documentation also has some good information regarding these:

  • drm/amdgpu AMDgpu driver: Module Parameters

How do you set amdgpu options?

(Longer answer, because there are many ways)

As we saw above, amdgpu is the name for the Open Source AMD graphics card drivers that exist in the Linux Kernel source tree. They are included with Ubuntu's stock kernel.

Kernel modules (a.k.a. drivers) have parameters which can be set in multiple ways:

  1. Set via Grub Kernel command-line
  • There are two ways to do this depending on whether you want the options to persist across reboots or not.
    1. Temporary method via GRUB command line
      • Start your system and wait for the GRUB menu to show (if you don't see a GRUB menu, press and hold the left Shift key right after starting the system). Some systems use UEFI boot and skip this screen, while others still support the older MBR boot method and do not skip it.
      • At GRUB kernel selection screen, highlight the kernel version entry you want to use.
      • Press e to edit that kernel command line.
      • The line you want to find looks like this: linux /boot/vmlinuz-6.2.0-20-generic ROOT=UUID=1234567-ABCD ro quiet splash
      • Add your kernel options and kernel module options at the end of this line.
      • Kernel-level parameters can be passed directly (e.g. noacpi, nomodeset, etc...)
      • Kernel Module-level parameters can be passed using the name + dot modulename.param syntax: (e.g.: amdgpu.dpm=0, amdgpu.aspm=0, etc...)
    2. Persistent method via generated GRUB config command line
      • Edit the /etc/default/grub file as root (e.g.: sudo vi /etc/default/grub, or sudo nano /etc/default/grub)
      • Find the line with GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
      • Inside the last double-quote, add your Linux kernel boot parameters and/or Module-level parameters.
      • Note: The syntax for Module-level parameters is the same as the Temporary GRUB command line method above. (e.g. amdgpu.dpm=0, amdgpu.aspm=0, etc...)
      • Update Grub: sudo update-grub
      • Reboot and your parameters should now be added every time the kernel boots. (This can be viewed and verified to be the case using the e edit GRUB boot line method as above)
  1. Set via Modprobe Drop-In directory

    • This method is also persistent, and applies slightly later in the boot process when modprobe is loading kernel modules

      • You can not set Kernel-level parameters this way, only Module-level parameters.
      • This only works for Loadable Kernel Modules (not those compiled-in, but as a module. See Gentoo Wiki for details)
      • Note: The syntax for these config files is a bit different, as you do not need the modulename.param syntax here. (See man modprobe.d for full documentation of /etc/modprobe.d Drop-In config file syntax.)
    • Add a new Drop-In config file for your GPU

      • For example, to set both dpm=0 and aspm=0:

        echo 'options amdgpu dpm=0 aspm=0' | sudo tee /etc/modprobe.d/amdgpu-options.conf
        
    • Regenerate the initramfs

        sudo update-initramfs -u -k all
      
    • Reboot!

  2. Loading a Module with Temporary Changes

    • Usually this works for testing temporary changes for plug-and-play devices

    • However, this may not be the ideal method for something such as a GPU which is in use very early in the UEFI -> Kernel boot -> Init boot phases.

    • If your system has an integrated graphics card (e.g. Intel Corporation HD Graphics 630 or similar), this could be helpful when diagnosing or testing kernel module parameters for the secondary GPU.

      sudo modprobe <module_name> [parameter=value]
      
    • Where [parameter=value] represents a list of customized parameters available to that module, and <module_name> would be the name of the kernel module (amdgpu in this case)

    • See more detailed information in RedHat's documentation here

Testing Temporary Kernel Module Parameters on a Dual-GPU System

The last method can be useful when testing a system which has both an integrated GPU, and a secondary PCIe GPU (such as AMD / Nvidia / Intel ARC). It is especially helpful when diagnosing basic card initialization issues, when using VFIO and/or IOMMU, and other use-cases. Note: If in doubt and you're unsure about these more advanced topics, then try one of the other easier methods above first.

To follow this method, you usually need to go into the BIOS of a motherboard (assuming it supports this) and enable the Integrated GPU as the primary / default display GPU. Then, we must boot into Linux and check Kernel log messages in one terminal while unloading the kernel module and resetting the other secondary PCIe GPU in another terminal.

For an AMD secondary GPU using the amdgpu kernel module, the process looks like this:

  1. Open a terminal and run: sudo dmesg -H --nopager --follow

    • Look for messages from your GPU driver (e.g. amdgpu). There may be some helpful error messages to diagnose the issue.
    • It may be helpful to press enter a few times in this terminal to give some spacing so new messages will be easily visible at the end.
  2. Open another terminal and run: sudo rmmod amdgpu (or whichever driver name or kernel module the secondary GPU uses)

    • Check that the module has been unloaded with: sudo lsmod | grep -i amdgpu
    • You should see no output if it is not currently loaded in the kernel.
  3. Find the PCIe bus ID of the secondary GPU:

    • Run: sudo lspci

    • Look for AMD in the output, for example on my system I see:

      $ sudo lspci | grep -i amd
      01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev c1)
      02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
      03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] (rev c1)
      03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21/23 HDMI/DP Audio Controller
      
    • On this system, the AMD RX 6600 shows up on PCI bus ID: 03:00.0

    • Note that internal to the GPU card, there are multiple PCIe ports / switches, and an Intel HDA-based HDMI audio device which we can ignore. (The switches are essentially pass-through to the GPU + Intel HDA sound card. The sound card uses snd_hda_intel Kernel module in this case)

  4. Simulate removal of the PCIe device using the bus ID found above:

    • For example:

      # To reset PCI bus ID: 03:00.0
      echo 1 | sudo tee /sys/bus/pci/devices/0000\:03\:00.0/remove
      
  5. Rescan the PCIe bus, and immediately reload the GPU driver module with params:

      # The semicolon separates two commands and runs them in quick succession
      # The reasoning here is that once you write '1' to 'rescan' via sysfs, the kernel might decide to auto-load the amdgpu module automatically without your specified parameters.
      # As such, sometimes it's best to use /etc/modprobe.d or another method for specifying parameters, although reboots can be slower to test.  
      echo 1 | sudo tee /sys/bus/pci/rescan ; sudo modprobe amdgpu dpm=0 aspm=0
    
  6. Check that the loaded module parameters look set correctly like you intended:

      module=amdgpu; 
      ls /sys/module/$module/parameters/ | while read parameter; do \
        echo -n "Parameter: $parameter --> "; \
        sudo cat /sys/module/$module/parameters/$parameter; \
      done;
    
    • If the settings do not match what you passed to modprobe, the driver may have loaded automatically before your options could be applied.
    • If the modprobe param=foo settings did not work, try using the /etc/modprobe.d/ method for setting the option instead, then retry.
  7. Check your dmesg output in the other terminal.

    • Are the previous errors still there?
    • Anything changed or new since the param value was changed?
  8. Repeat again and tweak parameters until you find something that might solve the issue (or crashes the kernel completely & needs a reboot!)