Dedicated AMD GPU as Primary GPU (and sole output) on Desktop

Hi,
I have an Intel i5-4690K with integrated graphics (disabled in the BIOS, PEG mode) and an AMD R9 390 graphics card in my desktop. I would like to use the output on the dGPU exclusively without using the iGPU at all (separate cables, requires a BIOS change to use the iGPU, Windows uses the dGPU already etc, basically its a pain).

I have read about DRI_PRIME and Reverse Prime and I don’t think they quite solve my issue, however this section in the PRIME Arch wiki page does sound promising (PRIME - ArchWiki).

I created a 10-gpu.conf file based on the wiki entry, making some educated guesses (omitting the intel entries because the iGPU is disabled):

Section "ServerLayout"
	Identifier	"layout"
	Screen 0	"amd"
EndSection

Section "Device"
	Identifier	"amd"
	Driver		"video-linux"
	BusID		"PCI:1:0:0"
EndSection

Section "Screen"
	Identifier	"amd"
	Device		"amd"
EndSection

based on the output of these commands:

> mhwd -li
Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
           video-linux            2018.05.04                true            PCI


Warning: No installed USB configs!

> lspci | grep -e VGA -e 3D
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290/390] (rev 80)

I had no output at all before creating the file but I have now got as far as seeing a blank screen with the following output:

/dev/sdb2: clean, 286552/140057472 files, 28979834/324349879874 blocks

Which I understand is not an error, however my system wont boot any further. I can reach the tty using ctrl+alt+F2 and I am comfortable using the terminal, though this is my first try with an Arch based distro (fresh install, not worried about borking). I feel like I am tantalizingly close to being up and running, can anyone advise on how I can investigate from here?

In case it helps:

> inxi --admin --verbosity=7 --filter --no-host --width
System:
  Kernel: 5.10.32-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.10-x86_64 
  root=UUID=23a151d6-49a2-4408-8f64-c32f0b3c1853 rw quiet apparmor=1 
  security=apparmor resume=UUID=52bb9e27-cf4d-4d01-93fe-14fd77c8b0f2 
  udev.log_priority=3 
  Console: tty 2 DM: LightDM 1.30.0 Distro: Manjaro Linux base: Arch Linux 
Machine:
  Type: Desktop Mobo: MSI model: Z97 GAMING 5 (MS-7917) v: 1.0 
  serial: <filter> UEFI: American Megatrends v: 1.11 date: 05/28/2015 
Battery:
  Message: No system battery data found. Is one present? 
Memory:
  RAM: total: 15.58 GiB used: 430.4 MiB (2.7%) 
  RAM Report: permissions: Unable to run dmidecode. Root privileges required. 
CPU:
  Info: Quad Core model: Intel Core i5-4690K bits: 64 type: MCP arch: Haswell 
  family: 6 model-id: 3C (60) stepping: 3 microcode: 28 cache: L2: 6 MiB 
  bogomips: 27998 
  Speed: 2988 MHz min/max: 800/3900 MHz Core speeds (MHz): 1: 2988 2: 2945 
  3: 2804 4: 2667 
  Flags: abm acpi aes aperfmperf apic arat arch_perfmon avx avx2 bmi1 bmi2 bts 
  clflush cmov constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64 dtherm 
  dts ept ept_ad erms est f16c flexpriority flush_l1d fma fpu fsgsbase fxsr ht 
  ibpb ibrs ida invpcid invpcid_single lahf_lm lm mca mce md_clear mmx monitor 
  movbe msr mtrr nonstop_tsc nopl nx pae pat pbe pcid pclmulqdq pdcm pdpe1gb 
  pebs pge pln pni popcnt pse pse36 pti pts rdrand rdtscp rep_good sdbg sep 
  smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm tm2 tpr_shadow 
  tsc tsc_adjust tsc_deadline_timer vme vmx vnmi vpid x2apic xsave xsaveopt 
  xtopology xtpr 
  Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
  Type: l1tf 
  mitigation: PTE Inversion; VMX: conditional cache flushes, SMT disabled 
  Type: mds mitigation: Clear CPU buffers; SMT disabled 
  Type: meltdown mitigation: PTI 
  Type: spec_store_bypass 
  mitigation: Speculative Store Bypass disabled via prctl and seccomp 
  Type: spectre_v1 
  mitigation: usercopy/swapgs barriers and __user pointer sanitization 
  Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, 
  IBRS_FW, STIBP: disabled, RSB filling 
  Type: srbds mitigation: Microcode 
  Type: tsx_async_abort status: Not affected 
Graphics:
  Device-1: AMD Hawaii PRO [Radeon R9 290/390] vendor: Micro-Star MSI 
  driver: radeon v: kernel alternate: amdgpu bus-ID: 01:00.0 
  chip-ID: 1002:67b1 class-ID: 0300 
  Display: server: X.org 1.20.11 driver: loaded: radeon 
  note: n/a (using device driver) tty: 240x67 
  Message: Advanced graphics data unavailable in console. Try -G --display 
Audio:
  Device-1: Intel 9 Series Family HD Audio vendor: Micro-Star MSI 
  driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:8ca0 
  class-ID: 0403 
  Device-2: AMD Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X] 
  vendor: Micro-Star MSI driver: snd_hda_intel v: kernel bus-ID: 01:00.1 
  chip-ID: 1002:aac8 class-ID: 0403 
  Sound Server-1: ALSA v: k5.10.32-1-MANJARO running: yes 
  Sound Server-2: JACK v: 0.125.0 running: no 
  Sound Server-3: PulseAudio v: 14.2 running: no 
  Sound Server-4: PipeWire v: 0.3.26 running: no 
Network:
  Device-1: Qualcomm Atheros Killer E220x Gigabit Ethernet 
  vendor: Micro-Star MSI driver: alx v: kernel port: d000 bus-ID: 03:00.0 
  chip-ID: 1969:e091 class-ID: 0200 
  IF: enp3s0 state: down mac: <filter> 
  Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel port: d000 
  bus-ID: 04:00.0 chip-ID: 8086:2723 class-ID: 0280 
  IF: wlp4s0 state: up mac: <filter> 
  IP v4: <filter> type: dynamic noprefixroute scope: global 
  broadcast: <filter> 
  IP v6: <filter> type: dynamic noprefixroute scope: global 
  IP v6: <filter> type: noprefixroute scope: link 
  WAN IP: <filter> 
Bluetooth:
  Device-1: Intel AX200 Bluetooth type: USB driver: btusb v: 0.8 bus-ID: 3-8:2 
  chip-ID: 8087:0029 class-ID: e001 
  Report: rfkill ID: hci0 rfk-id: 1 state: down bt-service: enabled,running 
  rfk-block: hardware: no software: yes address: see --recommends 
Logical:
  Message: No logical block device data found. 
RAID:
  Message: No RAID data found. 
Drives:
  Local Storage: total: 700.52 GiB used: 6.25 GiB (0.9%) 
  SMART Message: Required tool smartctl not installed. Check --recommends 
  ID-1: /dev/sda maj-min: 8:0 vendor: SanDisk model: SDSSDHII480G 
  size: 447.13 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s 
  rotation: SSD serial: <filter> rev: 00RL scheme: GPT 
  ID-2: /dev/sdb maj-min: 8:16 vendor: Kingston model: SA400S37240G 
  size: 223.57 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s 
  rotation: SSD serial: <filter> rev: 1103 scheme: GPT 
  ID-3: /dev/sdd maj-min: 8:48 type: USB vendor: Generic model: MicroSD M2 
  size: 29.81 GiB block-size: physical: 512 B logical: 512 B rotation: SSD 
  serial: <filter> rev: 1.08 scheme: MBR 
  Message: No optical or floppy data found. 
Partition:
  ID-1: / raw-size: 214.47 GiB size: 210.05 GiB (97.94%) used: 6.25 GiB (3.0%) 
  fs: ext4 dev: /dev/sdb2 maj-min: 8:18 label: N/A 
  uuid: 23a151d6-49a2-4408-8f64-c32f0b3c1853 
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%) 
  used: 296 KiB (0.1%) fs: vfat dev: /dev/sdb1 maj-min: 8:17 label: NO_LABEL 
  uuid: DC7D-9DD9 
  ID-3: /mnt/usb raw-size: 29.81 GiB size: 29.8 GiB (99.97%) 
  used: 6.1 MiB (0.0%) fs: vfat dev: /dev/sdd1 maj-min: 8:49 label: N/A 
  uuid: 9016-4EF8 
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) 
  ID-1: swap-1 type: partition size: 8.8 GiB used: 0 KiB (0.0%) priority: -2 
  dev: /dev/sdb3 maj-min: 8:19 label: N/A 
  uuid: 52bb9e27-cf4d-4d01-93fe-14fd77c8b0f2 
Unmounted:
  ID-1: /dev/sda1 maj-min: 8:1 size: 450 MiB fs: ntfs label: Recovery 
  uuid: 94C057CCC057B36A 
  ID-2: /dev/sda2 maj-min: 8:2 size: 99 MiB fs: vfat label: N/A 
  uuid: 7858-3BB7 
  ID-3: /dev/sda3 maj-min: 8:3 size: 16 MiB fs: <superuser required> 
  label: N/A uuid: N/A 
  ID-4: /dev/sda4 maj-min: 8:4 size: 446.06 GiB fs: ntfs label: N/A 
  uuid: 2ACC5A59CC5A1F7F 
  ID-5: /dev/sda5 maj-min: 8:5 size: 527 MiB fs: ntfs label: N/A 
  uuid: 005A60445A603894 
USB:
  Hub-1: 1-0:1 info: Full speed (or root) Hub ports: 2 rev: 2.0 
  speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900 
  Hub-2: 1-1:2 info: Intel ports: 6 rev: 2.0 speed: 480 Mb/s 
  chip-ID: 8087:8009 class-ID: 0900 
  Hub-3: 2-0:1 info: Full speed (or root) Hub ports: 2 rev: 2.0 
  speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900 
  Hub-4: 2-1:2 info: Intel Integrated Hub ports: 8 rev: 2.0 speed: 480 Mb/s 
  chip-ID: 8087:8001 class-ID: 0900 
  Hub-5: 3-0:1 info: Full speed (or root) Hub ports: 14 rev: 2.0 
  speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900 
  Device-1: 3-8:2 info: Intel AX200 Bluetooth type: Bluetooth driver: btusb 
  interfaces: 2 rev: 2.0 speed: 12 Mb/s power: 100mA chip-ID: 8087:0029 
  class-ID: e001 
  Hub-6: 3-11:3 info: Microchip Massdrop Hub ports: 2 rev: 2.0 speed: 12 Mb/s 
  chip-ID: 04d8:eec5 class-ID: 0900 
  Device-1: 3-11.2:4 info: Microchip ALT Keyboard type: Keyboard,HID 
  driver: hid-generic,usbhid interfaces: 3 rev: 2.0 speed: 12 Mb/s 
  power: 500mA chip-ID: 04d8:eed3 class-ID: 0300 serial: <filter> 
  Device-2: 3-13:6 info: Alcor Micro Flash Card Reader/Writer 
  type: Mass Storage driver: usb-storage interfaces: 1 rev: 2.1 
  speed: 480 Mb/s power: 100mA chip-ID: 058f:8468 class-ID: 0806 
  serial: <filter> 
  Hub-7: 4-0:1 info: Full speed (or root) Hub ports: 6 rev: 3.0 speed: 5 Gb/s 
  chip-ID: 1d6b:0003 class-ID: 0900 
Sensors:
  System Temperatures: cpu: 29.8 C mobo: 27.8 C gpu: radeon temp: 40.0 C 
  Fan Speeds (RPM): N/A 
Info:
  Processes: 131 Uptime: 23m wakeups: 0 Init: systemd v: 247 tool: systemctl 
  Compilers: gcc: N/A Packages: pacman: 1057 lib: 298 flatpak: 0 
  Shell: Bash (login) v: 5.1.0 running-in: tty 2 inxi: 3.3.04 

Update:

I removed the quiet boot flag and saw this:

[FAILED] Failed to start Light Display Manager

So I ran a debug test using >lightdm --debug --test-mode and saw the following line amongst the output:

Could not enumerate user data directory /var/lib/lightdm/data: Error opening directory '/var/lib/lightdm/data': Permission denied

Based on another post on this forum I ran the following to grant it permission:

>sudo chown root:lightdm /var/lib/lightdm-data
>sudo systemctl restart lightdm

That made the failure message at the top of this post go away, but otherwise nothing had changed. I tried starting the X server using >startx and saw a message along the lines of “(EE) no monitor specified”. I updated my 10-gpu.conf file based on a solved issue on the Arch forum to include the following

Section "Monitor"
    Identifier    "Monitor0"
EndSection

Section "Screen"
    Identifier    "Screen0"
    Device        "amd"
    Monitor       "Monitor0"
    DefaultDepth  16
    SubSection "Display"
        Depth     16
        Modes     "1920x1080_144.00"
    EndSubSection
EndSection

That solved the monitor issue, but now I have the error:

(II) LoadModule: "video-linux"
(WW) Warning, couldn't open module video-linux
(EE) Failed to load module "video-linux" (module does not exist, 0)
(EE) No drivers available.
(EE) Fatal server error:
(EE) no screens found (EE)

I followed the Arch wiki (Kernel mode setting - ArchWiki) to add the modules to my /etc/mkinitcpio.conf file MODULES=(amdgpu radeon) and regenerated the initramfs using >mkinitcpio -P which seemed to work fine, but nothing has changed.

I’m a bit closer, I guess?

I see it is using radeon driver, you could try to force using amdgpu driver. Not sure how to do it, but I guess installing amdgpu-experimental package will add the proper config file, if I recall correctly.

Thanks for taking the time to look through my rambling. After doing all of the above the graphics section of my inxi output looks a bit different

Graphics:
  Device-1: AMD Hawaii PRO [Radeon R9 290/390] vendor: Micro-Star MSI 
  driver: amdgpu v: kernel alternate: radeon bus-ID: 01:00.0 
  chip-ID: 1002:67b1 class-ID: 0300 
  Display: server: X.org 1.20.11 driver: loaded: amdgpu 
  note: n/a (using device driver) tty: 240x67 
  Message: Advanced graphics data unavailable in console. Try -G --display 

So it does seem to be using amdgpu driver now which is good!

Did that fix anything?

Sadly not, I followed the instructions here:
https://discover.manjaro.org/packages/amdgpu-experimental
And it installed without erroring but there is no noticeable difference. 10-gpu.conf seems unchanged and inxi -G still shows amdgpu as the driver in use. I took a guess and added amdgpu-experimental to my MODULES inside mkinitcpio.conf but it would not regenerate without throwing an error stating “unknown module amdgpu-experimental”

No, the package amdgpu-experimental places config files in a system folder (I eventually downloaded the package to see what’s inside):

/usr/lib/modprobe.d/x-amdgpu-radeon.cik_support.conf
/usr/lib/modprobe.d/x-amdgpu-radeon.si_support.conf
/usr/lib/modprobe.d/x-amdgpu.dc.conf
/usr/lib/modprobe.d/x-amdgpu.deep_color.conf
/usr/lib/modprobe.d/x-amdgpu.exp_hw_support.conf
/usr/share/libalpm/hooks/98-amdgpu-experimental.hook

it is not a module.

Maybe try removing your own config files you made previously (temporarily, keep them somewhere safe for putting them back later if you want to) and see if that helps, with just the config files from the package amdgpu-experimental? Basically just test the defaults with just the amdgpu-experimental config files.

1 Like

I followed your suggestion, and it’s appeared!

Thank you very much for taking the time to help me with this!

Wow it was just random guesses for the sake of trying, but cool if it helped :stuck_out_tongue:

As the amdgpu-experimental package adds multiple config file, you may or may not have other issues regarding everything it enables/disables. You may want to look at these config files and eventually remove the package and add you own set of configs depending on what is best for your system.

Or you may just keep this package and not think about it, if you have no issue :stuck_out_tongue:

I think, normally it should be sufficient to just make an xorg.conf file with:

F.e.:

/etc/X11/xorg.conf.d/20-amdgpu.conf

Section "Device"
     Identifier "AMD"
     Driver "amdgpu"
     Option "TearFree" "true" #optional
EndSection

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.