Force Host Device to use Xe instead of vfio-pci

10fingertyping

New Member
Apr 14, 2026
3
0
1
Hi all,

Question:
Is there any way to force proxmox to use the Xe driver for the Arc B50 or to block it from unbinding the driver from the PCI device?

Context:
I currently have an Intel Arc B50 installed and currently running the latest firmware (VF=2). The driver in use for the GPU is Intel Xe driver to enable the SRIOV functionality.

PVE: 9.1.1
Kernel: 6.17.2-1-pve

Code:
lspci | grep Battlemage
03:00.0 VGA compatible controller: Intel Corporation Battlemage G21 [Intel Graphics]
03:00.1 VGA compatible controller: Intel Corporation Battlemage G21 [Intel Graphics]
03:00.2 VGA compatible controller: Intel Corporation Battlemage G21 [Intel Graphics]
  • 0000:03:00.0 - physical function/host device
  • 0000:03:00.1 - virtual function 1 (vf1)
  • 0000:03:00.2 - virtual function 2 (vf2)
I've mapped the individual virtual functions in the datacenter resource mappings.
  • 03:00.1 - assigned to VM running Jellyfin
  • 03:00.2 - assigned to VM running Docker > Immich
Whenever I try to start either VM, proxmox will unbind the Intel Xe driver and bind vfio-pci to 03:00.0. The problem is that the virtual functions are dependent on the Intel Xe driver being bound to the physical function. This results in the error message because the mapped VF doesn't exist anymore.

I've used unbind/bind for vfio-pci/xe, respectively, but it will ultimately override to vfio-pci and fail to boot.
Code:
echo -n "0000:03:00.0" > /sys/bus/pci/drivers/vfio-pci/unbind
echo -n "0000:03:00.0" > /sys/bus/pci/drivers/xe/bind


Code:
03:00.0 VGA compatible controller [0300]: Intel Corporation Battlemage G21 [Intel Graphics] [8086:e212] (prog-if 00 [VGA controller])
        Subsystem: Intel Corporation Device [8086:1114]
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin ? routed to IRQ 85
        IOMMU group: 0
        Region 0: Memory at 7c02000000 (64-bit, prefetchable) [size=16M]
        Region 2: Memory at 7400000000 (64-bit, prefetchable) [size=16G]
        Expansion ROM at fc000000 [disabled] [size=2M]
        Capabilities: [40] Vendor Specific Information: Len=0c <?>
        Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W TEE-IO-
                DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
                        RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, LnkDisable- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1
                        TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
                         10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS- TPHComp- ExtTPHComp-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
                         AtomicOpsCtl: ReqEn-
                         IDOReq- IDOCompl- LTR- EmergencyPowerReductionReq-
                         10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
                         EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
                         Retimer- 2Retimers- CrosslinkRes: unsupported
        Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit+
                Address: 00000000fee00000  Data: 0000
                Masking: 00000000  Pending: 00000000
        Capabilities: [d0] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
                Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [100 v1] Alternative Routing-ID Interpretation (ARI)
                ARICap: MFVC- ACS-, Next Function: 0
                ARICtl: MFVC- ACS-, Function Group: 0
        Capabilities: [110 v1] Null
        Capabilities: [200 v1] Address Translation Service (ATS)
                ATSCap: Invalidate Queue Depth: 00
                ATSCtl: Enable+, Smallest Translation Unit: 00
        Capabilities: [420 v1] Physical Resizable BAR
                BAR 2: current size: 16GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB 16GB
        Capabilities: [220 v1] Virtual Resizable BAR
                BAR 2: current size: 8GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB 16GB
        Capabilities: [320 v1] Single Root I/O Virtualization (SR-IOV)
                IOVCap: Migration- 10BitTagReq+ IntMsgNum 0
                IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+ 10BitTagReq-
                IOVSta: Migration-
                Initial VFs: 2, Total VFs: 2, Number of VFs: 0, Function Dependency Link: 00
                VF offset: 1, stride: 1, Device ID: e212
                Supported Page Size: 00000553, System Page Size: 00000001
                Region 0: Memory at 0000007c00000000 (64-bit, prefetchable)
                Region 2: Memory at 0000007800000000 (64-bit, prefetchable)
                VF Migration: offset: 00000000, BIR: 0
        Capabilities: [400 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Kernel driver in use: vfio-pci
        Kernel modules: xe

Code:
Use of uninitialized value $name in concatenation (.) or string at /usr/share/perl5/PVE/SysFSTools.pm line 324.
Use of uninitialized value $name in concatenation (.) or string at /usr/share/perl5/PVE/SysFSTools.pm line 324.
failed to reset PCI device '0000:03:00.1', but trying to continue as not all devices need a reset
kvm: -device vfio-pci,host=0000:03:00.1,id=hostpci0,bus=pci.0,addr=0x10: vfio /sys/bus/pci/devices/0000:03:00.1: no such host device: No such file or directory
PCI device mapping invalid (hardware probably changed): pci device '0000:03:00.1' not found

TASK ERROR: start failed: QEMU exited with code 1
 
Last edited:
It is not normal for the VM to switch from Xe to vfio-pci at startup even though 03:00.0 has not been specified for the VM you are attempting to start.

When specifying 03:00.1 or 03:00.2 for the VM, did you select “ALL Functions”?