Boot hold after hiding AMD GPU

I have the other Intel GPU, both GPUs work normal before hiding.

Log

[OK] Finished Qubes Dom0 startup setup.
[OK] Started Qubes memory information reporter.
     Starting Start Qubes VM sys-firewall...
     Starting Start Qubes VM sys-net...
     Starting Start Qubes VM sys-usb...
[OK] Finished Start Qubes VM sys-usb.
     Starting Permit User Sessions...
[OK] Finished Permit User Sessions.
[OK] Started Command Scheduler.
     Starting Light Display Manger...
     Starting Hold until boot process finishes up...

I think it may be caused by sys-net using wrong PCI devices, I have been aware that PCI device number updated after I plugging/unplugging AMD GPU, so I need to select correct PCI device for sys-net again. But in this situation I can boot into the machine.

We can see sys-usb without network finished starting but sys-firewall whose network VM is sys-net fails too.

How I hide:

  1. Get AMD PCI:
[user@dom0 ~]$ qvm-pci |grep AMD
dom0:01_00.0  VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon ...]  
dom0:01_00.1  Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon ...]
  1. Edit /etc/default/grub, and add the PCI hiding, update _ to : , so 01_00.1 becomes 01:00.1

    GRUB_CMDLINE_LINUX="... rd.qubes.hide_pci=01:00.0,01:00.1 "
    
  2. Run the command grub2-mkconfig -o /boot/efi/EFI/qubes/grub.cfg

According to Create a Gaming HVM

Looking at /proc/cmdline on my own system it looks to me like your grub parameters are incomplete, your PCI devices need to be listed after rd.qubes.hide_pci and xen-pciback.hide, I think the end of your grub should look like:

rd.qubes.hide_pci=01:00.0,01:00.1 xen-pciback.hide=(01:00.0)(01:00.1) xen-pciback.passthrough=1 xen-pciback.permissive

Where did you get left parameters beside rd.qubes.hide_pci?
I didn’t see it in windows-gaming-hvm tutorial

https://wiki.xenproject.org/wiki/Xen_PCI_Passthrough

Still can’t boot.
I stopped auto restart of all VMs except sys-usb.

# cat /etc/default/grub|grep rd.
GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-xxx rd.lvm.lv=qubes_dom0/root rd.lvm.lv=qubes_dom0/swap rd.driver.pre=btrfs rhgb quiet usbcore.authorized_default=0 rd.qubes.hide_pci=01:00.0,01:00.1 xen-pciback.hide=(01:00.0)(01:00.1) xen-pciback.passthrough=1 xen-pciback.permissive"

Partial log

[OK] Finished Start Qubes VM sys-usb
[OK] Finished Permit User SEssions

Starting LightDisplay Manager
Starting Hold until boot process finishes up...

hrm ok, I think in your shoes I’d boot into the rescue shell and have a look at the output of the following command:

sudo systemd-analyze blame

also check

sudo systemctl list-units --state=failed

as well as errors in the logs with:

sudo journalctl -b

(shows logs starting from the most recent boot)

and finally look for lines containing “EE” which is an error Xorg’s log file:

sudo less /var/log/Xorg.0.log

and check this really is a GPU/passthrough problem. I think the last time I got stuck at “Holding until boot process finishes up” it was LVM waiting for all the PVS to become available.

This gives me a direction to debug. Can you format commands in your post with `` so I can know how to find relevant log?

done

I just started with QubesOS and also run into same problem. Did you managed to solve it?

No, I can’t find relevant logs to locate problem.