No video output in Manjaro when a dGPU is installed alongside an iGPU

I just wanted to share with you the situation I found myself in, as well as the solution to the problem.

I am using an AMD Ryzen 7 5700G with integrated Vega graphics on a Gigabyte B550 Aorus Elite V2 and additionally have an RX 480 hooked up to it. My reason for this setup is to have the integrated graphics (iGPU) for running the host system (Manjaro) and to use the dedicated GPU (dGPU) to pass through to a Windows virtual machine (VM). For that reason, I have bound the RX 480 to the vfio kernel driver instead of amdgpu using kernel module options effectively making the dGPU not available to the host system – which is what I want.

But for some reason, the X11-server on Manjaro seems to suffer from some hickups concerning my specific configuration and tries to output video on the RX 480 instead, failing miserably because vfio does not seem to talk to X11. So instead of just outputting video on the iGPU, it just halts and does nothing.

Well, even if you have a different setup and hardware, this could still apply to you, so it might be worth the shot.

To force X11 into using the iGPU you might want to try the following.

lspci | grep VGA

This gives you a prefiltered list of all VGA adapters connected via PCI. If your machine refuses to do so, you might want to coerce it into obeying by sudoing the command.

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev c7)
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne (rev c8)

Take note of the PCI bus address corresponding to the GPU you wish to enforce as primary, in this case I want the device on bus ID 06:00.0 to be used as my primary VGA adapter.

Create a new file in /etc/X11/xorg.conf.d/ following the scheme [integer]-[title].conf
for example: /etc/X11/xorg.conf.d/10-vga.conf and populate it with the following:

Section "Device"
Identifier     "Device0"
Driver         "amdgpu"
VendorName     "AMD"
BoardName      "Weak"
BusID          "PCI:6:0:0"
EndSection

The parameters “Driver” and “BusID” need to match your particular environment. If you happen to have an NVIDIA card “Driver” might have to be “nouveau”, if it is an Intel device it might be “i915” and so on. Please consult your distributions’ documentation on how your specific driver is named. The “BusID” refers to the BusID already identified further up in this article. Just omit leading zeroes and you should be good.

Save, reboot, and see if this has solved your problem!

Leave a Reply

Your email address will not be published. Required fields are marked *