Damn this post and the linked/related ones are a great way to understand how things work under the hood ! ^^
Just a noob remark, have you tried by blacklisting amdgpu
in dom0 and assigning the device to xen-pciback
? I read nowhere that you tried it.
This would prevent dom0 and/or the driver from doing nasty things with your GPU before PT-ing !
Below is my working method for a RX580, maybe that works for you too ?
Some notes before
- I know the RX580 is not a iGPU, and I’m using it in a Ryzen desktop CPU (Ryzen 1700X), and there are many things I don’t know, but this method may be of help to others
- the RX580 card has no FLR, is on the primary x16 PCI slot, so it’s used for displaying BIOS POST and early kernel messages, then
xen-pciback
seizes it, and the display switches to my other GPU, fortunately an Nvidia (so no driver conflict). - those instructions are for a Debian-based dom0, please carefully adapt. I just started Qubes, so I don’t know the correct paths and don’t wanna say 5h!t ! ^^
- the RX580 must NEVER leave the pci-assignable pool, or hell will fall on you.
Steps
1. Modules config
- First ensure that
/etc/modules
ormodprobe.d/
contains this
(PS: it’s already done on Qubes, in/etc/sysconfig/modules/qubes-dom0.modules
)
xen-pciback
- In
/etc/modprobe.d/atigpu-blacklist.conf
(for Qubes/etc/sysconfig/modules/atigpu-blacklist.conf
seems the right place)
blacklist amdgpu
As you also have an AMD dGPU, I think you need an extra step to reload the driver once the domU containing the iGPU is started, but I’ve not tested it : my setup uses a Nvidia GPU for dom0, so it’s easier.
2. initramfs config
- Create a new script like
/usr/share/initramfs-tools/scripts/init-top/zload_xen-pciback
, and don’t forget tochmod +x zload_xen-pciback
, it’s a sh script.
PS: no idea where this script should be in Qubes !
#!/bin/sh
modprobe xen-pciback hide=\(0000:25:00.0\)\(0000:25:00.1\)
- In
/usr/share/initramfs-tools/scripts/init-top/udev
PS: no idea where this script should be in Qubes !
# change
PREREQS=""
# to
PREREQS="zload_xen-pciback"
- Last thing, don’t forget to regenerate your
initramfs
(this too I dunno how to do on Qubes/Fedora). - To correctly adapt the paths to Qubes, read the “credit link” below. In short, in Debian,
initramfs
scripts in/usr
take precedence overinitramfs
scripts in/etc
.
3. End credits ^^
Voilà, I hope it works for you !
For more detailed explanations of how and why it works, and the credit for inspiration, check this link.