[SOLVED] GPU being taken over by vfio driver, looking for some help.

tehNiemer

Member
Feb 26, 2024
17
0
6
I'm looking for some help trying to solve a problem of my discreet graphics card being hijacked by vfio. I've gotten about as far as I can troubleshooting this on my own and could use some help.

I've tried blacklisting the vfio driver and forcing i915 for the card to no avail. Can anyone help me solve this issue?

Some relevant information below.

Code:
root@pve01:~# lspci
00:00.0 Host bridge: Intel Corporation Comet Lake-S 6c Host Bridge/DRAM Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) (rev 03)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8) (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Comet Lake-S GT2 [UHD Graphics P630] (rev 03)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Comet Lake PCH Thermal Controller
00:14.0 USB controller: Intel Corporation Comet Lake USB 3.1 xHCI Host Controller
00:14.2 RAM memory: Intel Corporation Comet Lake PCH Shared SRAM
00:16.0 Communication controller: Intel Corporation Comet Lake HECI Controller
00:16.3 Serial controller: Intel Corporation Comet Lake Keyboard and Text (KT) Redirection
00:17.0 SATA controller: Intel Corporation Comet Lake SATA AHCI Controller
00:1c.0 PCI bridge: Intel Corporation Comet Lake PCIe Root Port #1 (rev f0)
00:1c.5 PCI bridge: Intel Corporation Comet Lake PCIe Port #6 (rev f0)
00:1c.7 PCI bridge: Intel Corporation Comet Lake PCIe Port #8 (rev f0)
00:1d.0 PCI bridge: Intel Corporation Comet Lake PCI Express Root Port #9 (rev f0)
00:1f.0 ISA bridge: Intel Corporation W480 Chipset LPC/eSPI Controller
00:1f.3 Audio device: Intel Corporation Comet Lake PCH cAVS
00:1f.4 SMBus: Intel Corporation Comet Lake PCH SMBus Controller
00:1f.5 Serial bus controller: Intel Corporation Comet Lake PCH SPI Controller
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (11) I219-LM
01:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3224 PCI-Express Fusion-MPT SAS-3 (rev 01)
02:00.0 PCI bridge: Intel Corporation Device 4fa1 (rev 01)
03:01.0 PCI bridge: Intel Corporation Device 4fa4
03:04.0 PCI bridge: Intel Corporation Device 4fa4
04:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A310] (rev 05)
05:00.0 Audio device: Intel Corporation DG2 Audio Controller
07:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
08:00.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch
09:03.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch
09:07.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch
0a:00.0 System peripheral: Global Unichip Corp. Coral Edge TPU
0b:00.0 System peripheral: Global Unichip Corp. Coral Edge TPU
0c:00.0 Non-Volatile memory controller: Silicon Motion, Inc. SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers (rev 03)

Code:
root@pve01:~# lspci -k -s 04:00.0
04:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A310] (rev 05)
        Subsystem: Sparkle Computer Co., Ltd. Device 4019
        Kernel driver in use: vfio-pci
        Kernel modules: i915, xe
root@pve01:~# lspci -k -s 00:02.0
00:02.0 VGA compatible controller: Intel Corporation Comet Lake-S GT2 [UHD Graphics P630] (rev 03)
        Subsystem: Super Micro Computer Inc Device 1b6c
        Kernel driver in use: i915
        Kernel modules: i915

Code:
root@pve01:~# journalctl -k --since "10 min ago" | grep -E "vfio|04:00|56a6|i915"
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: [8086:56a6] type 00 class 0x030000 PCIe Endpoint
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: BAR 0 [mem 0xa0000000-0xa0ffffff 64bit]
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: BAR 2 [mem 0x6000000000-0x600fffffff 64bit pref]
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: ROM [mem 0xa1000000-0xa11fffff pref]
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: ASPM: overriding L1 acceptable latency from 0x0 to 0x7
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: PME# supported from D0 D3hot
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: vgaarb: bridge control possible
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
Jun 30 07:58:27 pve01 kernel: pci 0000:04:00.0: Adding to iommu group 2
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] Found cometlake (device ID 9be6) integrated display version 9.00 stepping N/A
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: Incompatible option enable_guc=3 - GuC submission is N/A
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] VT-d active for gfx access
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: vgaarb: deactivate vga console
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] Using Transparent Hugepages
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] [ENCODER:109:DDI A/PHY A] failed to retrieve link info, disabling eDP
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: GuC firmware i915/kbl_guc_70.1.1.bin version 70.1.1
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: HuC firmware i915/kbl_huc_4.0.0.bin version 4.0.0
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: GUC: submission disabled
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] GT0: GUC: SLPC disabled
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] *ERROR* Failed to probe lspcon
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] Registered 3 planes with drm panic
Jun 30 07:58:27 pve01 kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
Jun 30 07:58:27 pve01 kernel: fbcon: i915drmfb (fb0) is primary device
Jun 30 07:58:27 pve01 kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: enabling device (0000 -> 0002)
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Found dg2/g11 (device ID 56a6) discrete display version 13.00 stepping C0
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] VT-d active for gfx access
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem 0x6000000000-0x600fffffff 64bit pref]: releasing
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem size 0x100000000 64bit pref]: can't assign; no space
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem size 0x100000000 64bit pref]: failed to assign
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem size 0x100000000 64bit pref]: can't assign; no space
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem size 0x100000000 64bit pref]: failed to assign
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: BAR 2 [mem 0x6000000000-0x600fffffff 64bit pref]: old value restored
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Failed to resize BAR2 to 4096M (-ENOSPC)
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.53.0
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] GT0: HuC firmware i915/dg2_huc_gsc.bin version 7.10.16
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] GT0: GUC: submission enabled
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] GT0: GUC: SLPC enabled
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] GT0: GUC: RC enabled
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Registered 4 planes with drm panic
Jun 30 07:58:27 pve01 kernel: [drm] Initialized i915 1.6.0 for 0000:04:00.0 on minor 0
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Cannot find any crtc or sizes
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Cannot find any crtc or sizes
Jun 30 07:58:27 pve01 kernel: i915 0000:04:00.0: [drm] Cannot find any crtc or sizes
Jun 30 07:58:28 pve01 kernel: mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
Jun 30 07:58:28 pve01 kernel: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
Jun 30 07:58:28 pve01 kernel: snd_hda_intel 0000:05:00.0: bound 0000:04:00.0 (ops intel_audio_component_bind_ops [i915])
Jun 30 07:58:29 pve01 kernel: i915 0000:04:00.0: [drm] GT0: HuC: authenticated for all workloads
Jun 30 07:58:29 pve01 kernel: mei_pxp i915.mei-gsc.1024-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:04:00.0 (ops i915_pxp_tee_component_ops [i915])
Jun 30 07:58:34 pve01 kernel: vfio-pci 0000:04:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io
Jun 30 07:58:34 pve01 kernel: vfio-pci 0000:01:00.0: resetting
Jun 30 07:58:34 pve01 kernel: vfio-pci 0000:01:00.0: reset done
Jun 30 07:58:36 pve01 kernel: vfio-pci 0000:01:00.0: resetting
Jun 30 07:58:36 pve01 kernel: vfio-pci 0000:01:00.0: reset done
Jun 30 07:58:36 pve01 kernel: vfio-pci 0000:01:00.0: resetting
Jun 30 07:58:36 pve01 kernel: vfio-pci 0000:01:00.0: reset done
 
Please share
Bash:
find /etc/modprobe.d/* -exec tail -n+1 {} +
tail -n+1 /proc/cmdline /etc/kernel/cmdline /etc/default/grub
grep -sR "hostpci" /etc/pve
 
Sure thing!

Code:
root@pve01:~# find /etc/modprobe.d/* -exec tail -n+1 {} +
tail -n+1 /proc/cmdline /etc/kernel/cmdline /etc/default/grub
grep -sR "hostpci" /etc/pve
==> /etc/modprobe.d/dkms.conf <==
# modprobe information used for DKMS modules
#
# This is a stub file, should be edited when needed,
# used by default by DKMS.

==> /etc/modprobe.d/hba-blacklist.conf <==
blacklist mpt2sas
blacklist mpt3sas
blacklist megaraid_sas
==> /etc/modprobe.d/intel-arc-i915.conf <==
options i915 enable_guc=3 enable_dc=0 force_probe=56a6

==> /etc/modprobe.d/intel-arc-vfio-blacklist.conf <==
blacklist vfio
blacklist vfio_pci
blacklist vfio_pci_core

==> /etc/modprobe.d/intel-microcode-blacklist.conf <==
# The microcode module attempts to apply a microcode update when
# it autoloads.  This is not always safe, so we block it by default.
blacklist microcode

==> /etc/modprobe.d/pve-blacklist.conf <==
# This file contains a list of modules which are not supported by Proxmox VE

# nvidiafb see bugreport https://bugzilla.proxmox.com/show_bug.cgi?id=701
# run 'update-initramfs -u' after any updates to this file
blacklist nvidiafb==> /proc/cmdline <==
BOOT_IMAGE=/boot/vmlinuz-7.0.12-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt pci=noaer pcie_ports=native pcie_aspm=off intel_idle.max_cstate=1 processor.max_cstate=1
tail: cannot open '/etc/kernel/cmdline' for reading: No such file or directory

==> /etc/default/grub <==
# If you change this file or any /etc/default/grub.d/*.cfg file,
# run 'update-grub' afterwards to update /boot/grub/grub.cfg.
# For full documentation of the options in these files, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`( . /etc/os-release && echo ${NAME} )`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pci=noaer pcie_ports=native pcie_aspm=off intel_idle.max_cstate=1 processor.max_cstate=1"
GRUB_CMDLINE_LINUX=""

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE/GOP/UGA
# you can see them in real GRUB with the command `videoinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
/etc/pve/local/qemu-server/101.conf:hostpci0: 0000:01:00,rombar=0
/etc/pve/local/qemu-server/100.conf:hostpci0: 0000:01:00,rombar=0
/etc/pve/qemu-server/101.conf:hostpci0: 0000:01:00,rombar=0
/etc/pve/qemu-server/100.conf:hostpci0: 0000:01:00,rombar=0
/etc/pve/nodes/pve01/qemu-server/101.conf:hostpci0: 0000:01:00,rombar=0
/etc/pve/nodes/pve01/qemu-server/100.conf:hostpci0: 0000:01:00,rombar=0
 
Last edited:
Hmm. Please share the IOMMU groups too
Bash:
{
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
    echo "IOMMU Group ${g##*/}:"
    for d in $g/devices/*; do
        echo -e "\t$(lspci -nns ${d##*/})"
    done;
done;
}
I'd remove /etc/modprobe.d/intel-arc-vfio-blacklist.conf again.
 
Last edited:
Here you go.

Code:
IOMMU Group 0:
        00:02.0 VGA compatible controller [0300]: Intel Corporation Comet Lake-S GT2 [UHD Graphics P630] [8086:9be6] (rev 03)
IOMMU Group 1:
        00:00.0 Host bridge [0600]: Intel Corporation Comet Lake-S 6c Host Bridge/DRAM Controller [8086:9b53] (rev 03)
IOMMU Group 2:
        00:01.0 PCI bridge [0604]: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 03)
        00:01.1 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8) [8086:1905] (rev 03)
        01:00.0 Serial Attached SCSI controller [0107]: Broadcom / LSI SAS3224 PCI-Express Fusion-MPT SAS-3 [1000:00c4] (rev 01)
        02:00.0 PCI bridge [0604]: Intel Corporation Device [8086:4fa1] (rev 01)
        03:01.0 PCI bridge [0604]: Intel Corporation Device [8086:4fa4]
        03:04.0 PCI bridge [0604]: Intel Corporation Device [8086:4fa4]
        04:00.0 VGA compatible controller [0300]: Intel Corporation DG2 [Arc A310] [8086:56a6] (rev 05)
        05:00.0 Audio device [0403]: Intel Corporation DG2 Audio Controller [8086:4f92]
IOMMU Group 3:
        00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model [8086:1911]
IOMMU Group 4:
        00:12.0 Signal processing controller [1180]: Intel Corporation Comet Lake PCH Thermal Controller [8086:06f9]
IOMMU Group 5:
        00:14.0 USB controller [0c03]: Intel Corporation Comet Lake USB 3.1 xHCI Host Controller [8086:06ed]
        00:14.2 RAM memory [0500]: Intel Corporation Comet Lake PCH Shared SRAM [8086:06ef]
IOMMU Group 6:
        00:16.0 Communication controller [0780]: Intel Corporation Comet Lake HECI Controller [8086:06e0]
        00:16.3 Serial controller [0700]: Intel Corporation Comet Lake Keyboard and Text (KT) Redirection [8086:06e3]
IOMMU Group 7:
        00:17.0 SATA controller [0106]: Intel Corporation Comet Lake SATA AHCI Controller [8086:06d2]
IOMMU Group 8:
        00:1c.0 PCI bridge [0604]: Intel Corporation Comet Lake PCIe Root Port #1 [8086:06b8] (rev f0)
IOMMU Group 9:
        00:1c.5 PCI bridge [0604]: Intel Corporation Comet Lake PCIe Port #6 [8086:06bd] (rev f0)
IOMMU Group 10:
        00:1c.7 PCI bridge [0604]: Intel Corporation Comet Lake PCIe Port #8 [8086:06bf] (rev f0)
IOMMU Group 11:
        00:1d.0 PCI bridge [0604]: Intel Corporation Comet Lake PCI Express Root Port #9 [8086:06b0] (rev f0)
IOMMU Group 12:
        00:1f.0 ISA bridge [0601]: Intel Corporation W480 Chipset LPC/eSPI Controller [8086:0697]
        00:1f.3 Audio device [0403]: Intel Corporation Comet Lake PCH cAVS [8086:06c8]
        00:1f.4 SMBus [0c05]: Intel Corporation Comet Lake PCH SMBus Controller [8086:06a3]
        00:1f.5 Serial bus controller [0c80]: Intel Corporation Comet Lake PCH SPI Controller [8086:06a4]
        00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (11) I219-LM [8086:0d4c]
IOMMU Group 13:
        07:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller I225-V [8086:15f3] (rev 03)
IOMMU Group 14:
        08:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch [1b21:1182]
IOMMU Group 15:
        09:03.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch [1b21:1182]
        0a:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a]
IOMMU Group 16:
        09:07.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch [1b21:1182]
        0b:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a]
IOMMU Group 17:
        0c:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers [126f:2263] (rev 03)
 
01:00 and 04:00 share IOMMU group 2. You cannot give your VM (why give it to both 100 and 101?) 01:00 without taking all the other devices in the group with it. Also see here.
You could try to put the GPU/HBA in a different PCI(e) slot. Note that IOMMU groups will likely change when doing that so take precautions to not make your system break.
 
Last edited:
Got it, thanks for the help. Is there any way to get the two PCIe slots (x16 and x8) to be in different IOMMU groups or is that a hardware limitation?

100 and 101 are different versions of the same VM I'm testing and they aren't running at the same time.

edit:
I think I may have answered my own question going through one of those links. I think this might be the answer if my motherboard supports it?
To have separate IOMMU groups, your processor needs to have support for a feature called ACS (Access Control Services). Make sure you enable the corresponding setting in your BIOS for this.

If you don't have dedicated IOMMU groups, you can try moving the card to another PCI slot.

Should that not work, you can try using Alex Williamson's ACS override patch. However, this should be seen as a last option and is not without risks.

As of writing, the ACS patch is part of the Proxmox VE kernel and can be invoked via Editing the kernel command line. Add

pcie_acs_override=downstream

to the kernel boot command line (grub or systemd-boot) options.

More information can be found at Alex Williamson's blog.
 
Last edited:
As mentioned you can try to switch the Slots. Otherwise as last resort try the pcie_acs_override kernel option from my link. What Hardware/Mainboard do you have? What is plugged into where?
 
Last edited:
  • Like
Reactions: tehNiemer
I am using a Supermicro X12SAE, the HBA I'm using takes up two slots so it's in the first x16 slot, the GPU is in the second x16 slot, the coral is in the x1 slot and the x4 slot is unused. I'm not sure the x4 slot will work with my x8 HBA though.
 
I'd expect this board to have some options for better IOMMU separation. Check the UEFI for IOMMU/ACS/VT-D/Ari/SR-IOV and similar. You could try to put the GPU into the x4 Slot. I'd test that first.