I acquired a QCN9274 Wi-Fi 7 module (says hw2.0, see logs below) and have issues with system crashing with it.
I run OpenWrt in a VM, currently stable 24.10.2 (r28739-d9340319c6).
Stock Ubuntu 24.04 host with HWE kernel 6.14 fails to find the board file, which is fine, I don’t plan to use it on the host system anyway:
ath12k_pci 0000:46:00.0: BAR 0 [mem 0x92400000-0x925fffff 64bit]: assigned
ath12k_pci 0000:46:00.0: MSI vectors: 16
ath12k_pci 0000:46:00.0: Hardware name: qcn9274 hw2.0
ath12k_pci 0000:46:00.0: memory type 10 not supported
ath12k_pci 0000:46:00.0: chip_id 0x0 chip_family 0xb board_id 0xff soc_id 0x401a2200
ath12k_pci 0000:46:00.0: fw_version 0x141580c7 fw_build_timestamp 2024-11-11 10:47 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
ath12k_pci 0000:46:00.0: failed to fetch board data for bus=pci,qmi-chip-id=0,qmi-board-id=255 from ath12k/QCN9274/hw2.0/board-2.bin
ath12k_pci 0000:46:00.0: failed to fetch board.bin from QCN9274/hw2.0
ath12k_pci 0000:46:00.0: qmi failed to load bdf:
ath12k_pci 0000:46:00.0: qmi failed to load board data file:-2
I assign it to KVM virtual machine using vfio and as soon as I start VM the whole PC hard resets.
After reboot motherboard BIOS says:
Warning: PCI-Express PERR/SERR error detected.
I then did what I have done with all other Qualcomm modules in the past (and forgot to do with this one initially): bind the device to vfio-pci
driver:
# /etc/modprobe.d/vfio.conf
options vfio-pci ids=17cb:1109
softdep ath12k pre: vfio-pci
softdep ath12k_pci pre: vfio-pci
Now I can boot the host and VM just fine.
The problem now is that the whole PC crashes again when trying to load ath12k
driver in the OpenWrt VM. The last lines I see before the machine resets itself are:
0000:01:00.0: MSI vectors: 1
0000:01:00.0: Hardware name: qcn9274 hw2.0
This all sounds like an issue on BPI boards fixed by https://github.com/openwrt/openwrt/pull/15945 and according to the repo branch it should already be included in the release of OpenWrt that I'm currently running (PR also says that it doesn't affect x86-64, but maybe there is something special about the fact that I'm using a VM?).
The PCIe pass-through config is very simple and worked fine with other Qualcomm devices I used for years in the past (libvirtd):
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x46" slot="0x00" function="0x0"/>
</source>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</hostdev>
Any ideas what else it could be? The fact that the whole physical machine just resets out of nowhere is particularly annoying.