So far I was not able to pass-through a ATH11k/WCN6855 device to a QEMU/KVM-Guest. On the host and guest-side the following messages appear in kernel-log: Guest-Syslog: Startup: Mai 30 19:23:23 wifi kernel: ath11k_pci 0000:05:00.0: BAR 0: assigned [mem 0xfe200000-0xfe3fffff 64bit] Mai 30 19:23:23 wifi kernel: ath11k_pci 0000:05:00.0: MSI vectors: 1 Mai 30 19:23:23 wifi kernel: ath11k_pci 0000:05:00.0: wcn6855 hw2.0 Mai 30 19:23:23 wifi kernel: mhi mhi0: Requested to power ON Mai 30 19:23:23 wifi kernel: mhi mhi0: Power on setup success Mai 30 19:23:24 wifi kernel: mhi mhi0: Wait for device to enter SBL or Mission mode Mai 30 19:23:24 wifi kernel: ath11k_pci 0000:05:00.0: chip_id 0x2 chip_family 0xb board_id 0xff soc_id 0x400c0200 Mai 30 19:23:24 wifi kernel: ath11k_pci 0000:05:00.0: fw_version 0x11090c35 fw_build_timestamp 2022-04-18 20:23 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-03125-QCAHS> Mai 30 19:23:24 wifi kernel: ath11k_pci 0000:05:00.0: leaving PCI ASPM disabled to avoid MHI M2 problems Mai 30 19:23:25 wifi kernel: ath11k_pci 0000:05:00.0: failed to receive control response completion, polling.. Mai 30 19:23:26 wifi kernel: ath11k_pci 0000:05:00.0: Service connect timeout Mai 30 19:23:26 wifi kernel: ath11k_pci 0000:05:00.0: failed to connect to HTT: -110 Mai 30 19:23:36 wifi kernel: ath11k_pci 0000:05:00.0: failed to wait wlan mode request (mode 4): -110 Mai 30 19:23:36 wifi kernel: ath11k_pci 0000:05:00.0: qmi failed to send wlan mode off: -110 Mai 30 19:23:36 wifi kernel: ath11k_pci 0000:05:00.0: failed to start core: -110 Host-Syslog: Guest-Startup: Mai 30 19:23:09 server kernel: vfio-pci 0000:02:00.0: vfio_ecap_init: hiding ecap 0x19@0x148 Mai 30 19:23:09 server kernel: vfio-pci 0000:02:00.0: vfio_ecap_init: hiding ecap 0x1e@0x1ec Mai 30 19:23:25 server kernel: DMAR: DRHD: handling fault status reg 2 Mai 30 19:23:25 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request Mai 30 19:23:25 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request Mai 30 19:23:25 server kernel: DMAR: DRHD: handling fault status reg 2 Mai 30 19:23:25 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request Mai 30 19:23:25 server kernel: DMAR: DRHD: handling fault status reg 2 Mai 30 19:23:25 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request Mai 30 19:23:25 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request Guest-Shutdown: Mai 30 19:29:38 server kernel: dmar_fault: 1957 callbacks suppressed Mai 30 19:29:38 server kernel: DMAR: DRHD: handling fault status reg 2 Mai 30 19:29:38 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x82 [fault reason 0x22] Present field in the IRTE entry is clear Mai 30 19:29:38 server kernel: DMAR: DRHD: handling fault status reg 2 Mai 30 19:29:38 server kernel: DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x82 [fault reason 0x22] Present field in the IRTE entry is clearfault index 0x82 [fault reason 0x2>
Having exactly the same issue with my setup. Using kernel 6.2.15 and the bug still exists.
I just tested also with an Sparklan WNFQ-269AX(BT) wifi module (WCN6856 chipset) on a Proxmox 7.4 host and I cannot passthrough the wifi module from the Host to the Guest VM. The guest VM was running ArchLinux with kernel 6.2.13. I'm using the latest available firmware for this chipset. lspci -vnn -s 02:00.0 02:00.0 Network controller [0280]: Qualcomm Device [17cb:1103] (rev 01) Subsystem: Lite-On Communications Inc Device [11ad:a85d] Flags: bus master, fast devsel, latency 0, IRQ 135, IOMMU group 14 Memory at 7fc00000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit- Capabilities: [70] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [148] Secondary PCI Express Capabilities: [158] Transaction Processing Hints Capabilities: [1e4] Latency Tolerance Reporting Capabilities: [1ec] L1 PM Substates Kernel driver in use: vfio-pci Kernel modules: ath11k_pci Dmesg output from the Proxmox host: dmesg | grep -E 'ath11|DMAR|vfio' [ 0.018957] ACPI: DMAR 0x00000000746BE000 000088 (v02 INTEL EDK2 00000002 01000013) [ 0.018989] ACPI: Reserving DMAR table memory at [mem 0x746be000-0x746be087] [ 0.077930] DMAR: IOMMU enabled [ 0.193626] DMAR: Host address width 39 [ 0.193629] DMAR: DRHD base: 0x000000fed90000 flags: 0x0 [ 0.193638] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 49e2ff0505e [ 0.193643] DMAR: DRHD base: 0x000000fed91000 flags: 0x1 [ 0.193649] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da [ 0.193654] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fbfffff [ 0.193659] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1 [ 0.193662] DMAR-IR: HPET id 0 under DRHD base 0xfed91000 [ 0.193664] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [ 0.195426] DMAR-IR: Enabled IRQ remapping in x2apic mode [ 0.376520] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics [ 0.457749] DMAR: No ATSR found [ 0.457751] DMAR: No SATC found [ 0.457753] DMAR: IOMMU feature fl1gp_support inconsistent [ 0.457754] DMAR: IOMMU feature pgsel_inv inconsistent [ 0.457756] DMAR: IOMMU feature nwfs inconsistent [ 0.457758] DMAR: IOMMU feature pds inconsistent [ 0.457760] DMAR: IOMMU feature eafs inconsistent [ 0.457761] DMAR: IOMMU feature prs inconsistent [ 0.457763] DMAR: IOMMU feature nest inconsistent [ 0.457764] DMAR: IOMMU feature mts inconsistent [ 0.457766] DMAR: IOMMU feature sc_support inconsistent [ 0.457768] DMAR: IOMMU feature dev_iotlb_support inconsistent [ 0.457770] DMAR: dmar0: Using Queued invalidation [ 0.457775] DMAR: dmar1: Using Queued invalidation [ 0.458251] DMAR: Intel(R) Virtualization Technology for Directed I/O [ 4.407659] ath11k_pci 0000:02:00.0: BAR 0: assigned [mem 0x7fc00000-0x7fdfffff 64bit] [ 4.407685] ath11k_pci 0000:02:00.0: enabling device (0000 -> 0002) [ 4.408857] ath11k_pci 0000:02:00.0: MSI vectors: 32 [ 4.408866] ath11k_pci 0000:02:00.0: wcn6855 hw2.1 [ 5.311774] ath11k_pci 0000:02:00.0: chip_id 0x12 chip_family 0xb board_id 0xff soc_id 0x400c1211 [ 5.311835] ath11k_pci 0000:02:00.0: fw_version 0x110b196e fw_build_timestamp 2022-12-22 12:54 fw_build_id WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23 [ 5.702364] ath11k_pci 0000:02:00.0 wlp2s0: renamed from wlan0 [ 15.776080] vfio-pci 0000:03:00.0: vfio_ecap_init: hiding ecap 0x1f@0x1f0 [ 15.776130] vfio-pci 0000:03:00.0: vfio_ecap_init: hiding ecap 0x1e@0x1e0 [ 29.667558] vfio-pci 0000:02:00.0: vfio_ecap_init: hiding ecap 0x19@0x148 [ 29.667605] vfio-pci 0000:02:00.0: vfio_ecap_init: hiding ecap 0x1e@0x1ec [ 68.104354] DMAR: DRHD: handling fault status reg 2 [ 68.104387] DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request [ 68.108626] DMAR: DRHD: handling fault status reg 2 [ 68.108649] DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request [ 68.110320] DMAR: DRHD: handling fault status reg 2 [ 68.110336] DMAR: [INTR-REMAP] Request device [02:00.0] fault index 0x0 [fault reason 0x25] Blocked a compatibility format interrupt request [ 68.112892] DMAR: DRHD: handling fault status reg 2 Dmesg output from the Archlinux guest VM dmesg | grep ath11 [ 15.549547] ath11k_pci 0000:01:00.0: BAR 0: assigned [mem 0xfe800000-0xfe9fffff 64bit] [ 15.552619] ath11k_pci 0000:01:00.0: MSI vectors: 1 [ 15.552822] ath11k_pci 0000:01:00.0: wcn6855 hw2.1 [ 17.146865] ath11k_pci 0000:01:00.0: chip_id 0x12 chip_family 0xb board_id 0xff soc_id 0x400c1211 [ 17.146872] ath11k_pci 0000:01:00.0: fw_version 0x110b196e fw_build_timestamp 2022-12-22 12:54 fw_build_id WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23 [ 17.337270] ath11k_pci 0000:01:00.0: leaving PCI ASPM disabled to avoid MHI M2 problems [ 18.346531] ath11k_pci 0000:01:00.0: failed to receive control response completion, polling.. [ 19.359874] ath11k_pci 0000:01:00.0: Service connect timeout [ 19.360147] ath11k_pci 0000:01:00.0: failed to connect to HTT: -110 [ 19.360727] ath11k_pci 0000:01:00.0: failed to start core: -110 [ 19.569855] ath11k_pci 0000:01:00.0: ignore reset dev flags 0x4000 [ 29.546594] ath11k_pci 0000:01:00.0: failed to wait wlan mode request (mode 4): -110 [ 29.546605] ath11k_pci 0000:01:00.0: qmi failed to send wlan mode off: -110
Discussion on the list: https://lore.kernel.org/linux-wireless/adcb785e-4dc7-4c4a-b341-d53b72e13467@gmail.com/
There is a patch fixed a similar issue, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/net/wireless/ath/ath11k/pci.c?id=39564b475ac5a589e6c22c43a08cbd283c295d2c
Baochen's analysis and a hack to workaround it: https://lore.kernel.org/linux-wireless/3d22a730-aee5-4f2a-9ddc-b4b5bd4d62fe@quicinc.com/ Test results very welcome.
vfio/pci RFC implementation from Alex Williamson: https://lore.kernel.org/all/20240812170014.1583783-1-alex.williamson@redhat.com/ https://lore.kernel.org/all/20240812170045.1584000-1-alex.williamson@redhat.com/