On Intel Arc B580 (Battlemage, xe kernel driver), Forza Horizon 5 and Forza
Horizon 6 either crash with FHC00 "Video Card Crash" or fully freeze the
system shortly after launch (input dies, GPU hangs, hard reboot required).
Root cause appears to be that vkd3d-proton issues a DRM_IOCTL_XE_VM_BIND
that the kernel rejects with -EOPNOTSUPP, then retries the same bind in a
tight loop instead of failing the operation. The kernel logs a WARNING at drivers/gpu/drm/xe/xe_vm.c:1169 on every retry, and eventually the system
locks up.
Other DX12 games on the same hardware/setup via vkd3d-proton work fine.
Forza titles are reported working under vkd3d-proton on AMD/Nvidia per
ProtonDB — only Intel Arc / xe users report this failure mode (cross-
referenced across FH5 and FH6 reports).
The xe driver returns -EOPNOTSUPP from a particular VM_BIND path.
Whatever bind operation vkd3d-proton is requesting either:
isn't supported by xe at all yet, or
is being constructed in a way xe doesn't accept for Battlemage
Either way, vkd3d-proton appears to retry the same failing bind (same target
address CR2: 0x61785000 every iteration) rather than failing the operation
or falling back. The retry loop is what eventually locks the system.
A companion kernel bug is filed against xe to investigate the EOPNOTSUPP
itself: .
Asks
Defensive handling for VM_BIND returning -EOPNOTSUPP — even if/when
xe is fixed, gracefully failing or falling back here would prevent system
freezes from any future driver edge case across all kernel drivers, not
just xe.
Is there a VKD3D_CONFIG flag that avoids whatever specific bind
operation pattern is being rejected by xe? Worth knowing if there's a
known-good codepath for Battlemage to recommend in the meantime.
Forza titles are known to use unusual DX12 placed-resource / tiled-resource
memory patterns. If vkd3d-proton has any per-game quirks or per-driver-id
workarounds, Forza on xe may need one until xe matures.
Description
On Intel Arc B580 (Battlemage,
xekernel driver), Forza Horizon 5 and ForzaHorizon 6 either crash with
FHC00 "Video Card Crash"or fully freeze thesystem shortly after launch (input dies, GPU hangs, hard reboot required).
Root cause appears to be that
vkd3d-protonissues aDRM_IOCTL_XE_VM_BINDthat the kernel rejects with
-EOPNOTSUPP, then retries the same bind in atight loop instead of failing the operation. The kernel logs a
WARNINGatdrivers/gpu/drm/xe/xe_vm.c:1169on every retry, and eventually the systemlocks up.
Other DX12 games on the same hardware/setup via vkd3d-proton work fine.
Forza titles are reported working under vkd3d-proton on AMD/Nvidia per
ProtonDB — only Intel Arc /
xeusers report this failure mode (cross-referenced across FH5 and FH6 reports).
System
xeDRIVER_ID_INTEL_OPEN_SOURCE_MESA), Vulkan 1.4.348Affected games
Other vkd3d-proton DX12 titles on this setup are unaffected.
Symptom
FHC00(vkd3d-proton's DX12 device-removed surface),or freezes the entire system (full GPU hang requiring hard reboot)
dmesgshows the kernel WARN below repeating indefinitely until thevkd3d_queuethread is killed or the system hangsKernel splat (one iteration; repeats)
What I think is happening on the vkd3d side
The
xedriver returns-EOPNOTSUPPfrom a particularVM_BINDpath.Whatever bind operation vkd3d-proton is requesting either:
xeat all yet, orxedoesn't accept for BattlemageEither way, vkd3d-proton appears to retry the same failing bind (same target
address
CR2: 0x61785000every iteration) rather than failing the operationor falling back. The retry loop is what eventually locks the system.
A companion kernel bug is filed against xe to investigate the EOPNOTSUPP
itself: .
Asks
Defensive handling for
VM_BINDreturning-EOPNOTSUPP— even if/whenxe is fixed, gracefully failing or falling back here would prevent system
freezes from any future driver edge case across all kernel drivers, not
just xe.
Is there a
VKD3D_CONFIGflag that avoids whatever specific bindoperation pattern is being rejected by xe? Worth knowing if there's a
known-good codepath for Battlemage to recommend in the meantime.
Forza titles are known to use unusual DX12 placed-resource / tiled-resource
memory patterns. If vkd3d-proton has any per-game quirks or per-driver-id
workarounds, Forza on
xemay need one until xe matures.Workarounds tried (all unsuccessful)
VKD3D_CONFIG=virtual_heaps,no_upload_hvv,single_queue