GuC firmware signature verification failed on MilkV Pioneer
I'm setting up an experimental workstation based on the new MilkV Pioneer board with a Sophgo Sophon SG2042 RISC-V CPU and I paired it with an Intel ARC A750 for some extra misery. Sophgo is actively working on upstreaming support for the board, but for now I'm stuck with their Linux 6.1.72 fork. I backported the whole drm subsystem from drm-xe-next
up to b9b7db49 and cherry-picked a handful of patches from outside of drm plus a few tweaks to get a clean build. You can see the series of patches here.
The module loads and identifies my card, but fails uploading the firmware.
[ 150.102570] xe 0001:43:00.0: [drm] unbounded parent pci bridge, device won't support any PM support.
[ 150.102891] xe 0001:43:00.0: [drm:xe_pci_probe [xe]] XE_DG2 G10 56a1:0008 dgfx:1 gfx:Xe_HPG (12.55) media:Xe_HPM (12.55) display:yes dma_m_s:46 tc:1 gscfi:1
[ 150.125185] xe 0001:43:00.0: [drm:xe_pci_probe [xe]] Stepping = (G:C0, M:C0, D:C0, B:**)
[ 150.147478] xe 0001:43:00.0: [drm:xe_pci_probe [xe]] SR-IOV support: no (mode: none)
[ 150.170054] xe 0001:43:00.0: [drm] GT topology dss mask (geometry): 00000000,00000000,fff0ffff
[ 150.170066] xe 0001:43:00.0: [drm] GT topology dss mask (compute): 00000000,00000000,fff0ffff
[ 150.170073] xe 0001:43:00.0: [drm] GT topology EU mask per DSS: 0000ffff
[ 150.192926] xe 0001:43:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.20.0
[ 150.193848] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 0] = 0x00465fd3
[ 150.216144] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 1] = 0x00000000
[ 150.238440] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 2] = 0x00000000
[ 150.260747] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 3] = 0x00000003
[ 150.283050] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 4] = 0x000008f8
[ 150.305323] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 5] = 0x56a10008
[ 150.327668] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 6] = 0x00000000
[ 150.349957] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 7] = 0x00000000
[ 150.372286] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 8] = 0x00000000
[ 150.394595] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[ 9] = 0x00000000
[ 150.416905] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[10] = 0x00000000
[ 150.439159] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[11] = 0x00000000
[ 150.461430] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[12] = 0x00000000
[ 150.483759] xe 0001:43:00.0: [drm:xe_guc_init [xe]] GuC param[13] = 0x00000000
[ 150.506015] xe 0001:43:00.0: [drm:xe_wopcm_init [xe]] WOPCM: 4096K
[ 150.528295] xe 0001:43:00.0: [drm:xe_wopcm_init [xe]] GuC WOPCM is already locked [1440K, 544K)
[ 150.550571] xe 0001:43:00.0: [drm:xe_guc_db_mgr_init [xe]] GT0: using 256 doorbell(s)
[ 150.812469] xe 0001:43:00.0: [drm] GuC load failed: status = 0x400000A0
[ 150.812478] xe 0001:43:00.0: [drm] GuC load failed: status: Reset = 0, BootROM = 0x50, UKernel = 0x00, MIA = 0x00, Auth = 0x01
[ 150.812485] xe 0001:43:00.0: [drm] GuC firmware signature verification failed
[ 150.871681] xe 0001:43:00.0: [drm] *ERROR* mmio request 0x4100: no reply 0x4100
[ 150.871695] xe: probe of 0001:43:00.0 failed with error -110
I tried version 70.13.1 of the firmware as well and it had the same error. Other PCIe devices are working fine. Fully understand this platform is not a priority (but it is neat!), and there could be a million problems between my backport and the Sophgo sources, but just wanted to put this out there in case it's a known issue or you can point me in the right direction.
Attaching kernel config, build log, dmesg, and lspci output. Happy to provide anything else.