您好,
我们在基于 i.MX95 的系统上使用 ATH12K Wi-Fi 模块,通过 PCIe2 实例连接。
在基于 linux-imx lf-6.12.y 的内核上,这个设置失败了,而在基于 lf-6.6.y 的内核上,它却能正常工作。
内核驱动程序成功请求并接收了 16 个 MSI 中断。但是,它随后无法启动 Wi-Fi 模块:
[ 5.888139] ath12k_pci 0001:01:00.0:添加到 iommu 组 5
[ 5.888506] ath12k_pci 0001:01:00.0:BAR 0 [mem 0xa10000000-0xa101fffff 64bit]: assigned
[ 5.888553] ath12k_pci 0001:01:00.0:启用设备 (0000-> 0002)
[5.889315] ath12k_pci 0001:01:00.0:MSI 向量:16
[ 5.889334] ath12k_pci 0001:01:00.0:硬件名称: wcn7850 hw2.0
[ 6.475718] ath12k_pci 0001:01:00.0:chip_id 0x2 chip_family 0x4 board_id 0xff soc_id 0x40170200
[ 6.475743] ath12k_pci 0001:01:00.0:fw_version 0x110cffff fw_build_timestamp 2025-06-25 09:26 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3
[ 7.647106] ath12k_pci 0001:01:00.0:无法接收控制响应完成,轮询...
[8.675241] ath12k_pci 0001:01:00.0:服务连接超时
[ 8.681002] ath12k_pci 0001:01:00.0:连接 HTT 失败: -110
[ 8.692180] ath12k_pci 0001:01:00.0:未能启动核心:-110
在使用不同的 PCIe 设备的内核邮件列表 [1] 上进行了相关讨论,但尚未确定我们系统的有效配置。
最好的办法是什么?
感谢您的支持。
最大值
[1]https://lore.kernel.org/all/1819305.VLH7GnMWUR@steina-w/
你好
i,MX95 还处于早期阶段,某些配置还没有设计出来。然而,您的 i.MX95(带 ATH12K,通过 PCIe2)在下列情况下出现故障
lf-6.12.y但可在lf-6.6.y上运行提示新内核的 PCIe 或 Wi-Fi 堆栈存在回归或驱动程序交互变化,可能涉及 ATH12K 的 PCIe 电源管理单元 (ASPM)、MSI 映射或 PCIe 特定 PCIe 端点异常,通常可通过内核补丁或在较新内核的启动参数中禁用 ASPM 来解决;检查 dmesg 中是否有 PCIe 错误,比较设备树,并在 NXP/Linux 内核邮件列表中查找相关提交。 (dmesg) lf-6.12.y 内核的 dmesg 中搜索"PCI","MSI","ATH12K","Error","Firmware", 或"Timeout" 消息。ath12k固件,以及初始化过程中是否出现任何错误。 cie_aspm=off 添加到内核启动参数(例如,在 U-Boot 或 GRUB 中),然后再次测试。 生成并比较两个内核(.dtb 文件)中使用的设备树 Blob (DTB)。查看 p ci2 的 PCIe 节点的变化,尤其是与中断、功率域或兼容性特性相关的变化。 lf-6.12.y 中的 ATH12K 驱动程序 ( ath12k)、 mac80211 或核心 PCIe/ARM 代码可能引入了一项破坏设置 的更改。ath12k、i.MX95 和较新内核(6.12 以上)的讨论。 proc/interrupts 中的中断:查看不同内核的中断分布或计数是否不同。 dmesg开始,尝试禁用 ASPM;这些是导致嵌入式平台上较新内核出现 PCIe Wi-Fi 故障的最常见原因虽然这些建议是调试问题的好指导,但我找不到解决方案,也就是说,并非所有的 MSI IRQ 向量都触发了驱动程序中的 IRQ 例程。
最后,我改变了 ath12k 驱动程序,只请求一个 MSI IRQ,从而解决了这个问题。
请注意,当前的 Linux 主版本不存在这个问题。
此致
最大值