2297524_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2297524_zh-CN

2297524_zh-CN

PCIe:i.MX 95:分配多个 MSI IRQ 向量

您好,

我们在基于 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/


Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors

你好

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 内核邮件列表中查找相关提交。 
以下是潜在原因和故障排除步骤的详细介绍:
1.检查内核日志(dmesg)
  • 查找 PCIe 错误: 在失败的 lf-6.12.y 内核的 dmesg 中搜索"PCI","MSI","ATH12K","Error","Firmware", 或"Timeout" 消息。
  • 固件加载:验证是否正确加载了ath12k固件,以及初始化过程中是否出现任何错误。 
2。PCIe 电源管理单元 (ASPM)
  • 常见问题:较新的内核通常默认启用主动状态电源管理 (ASPM),这可能会导致嵌入式系统上的 ATH12K 等 PCIe 设备出现问题,尤其是较旧的固件/硬件。
  • 尝试禁用 ASPM:将 p cie_aspm=off 添加到内核启动参数(例如,在 U-Boot 或 GRUB 中),然后再次测试。 
3.Devicetree/DTB 的差异
  • 比较 DTB:生成并比较两个内核(.dtb 文件)中使用的设备树 Blob (DTB)。查看 p ci2 的 PCIe 节点的变化,尤其是与中断、功率域或兼容性特性相关的变化。 
4.内核驱动程序/固件回归
  • 特定提交: lf-6.12.y 中的 ATH12K 驱动程序 ( ath12k)、 mac80211 或核心 PCIe/ARM 代码可能引入了一项破坏设置 的更改。
  • 搜索邮件列表:查看 Linux 内核邮件列表 (LKML) 和恩智浦列表,了解相关补丁或有关ath12ki.MX95 和较新内核(6.12 以上)的讨论。 
5.微星处理
  • 中断重映射:在接收中断的同时,处理中断的方式(MSI-X 与 MSI、中断重映射)可能会发生微妙的变化。
  • 检查proc/interrupts 中的中断:查看不同内核的中断分布或计数是否不同。 
6.固件 Blob
  • 固件版本:确保为 ATH12K 使用正确的固件,并与较新内核的驱动程序兼容。有时,更新的驱动程序需要更新的固件。 
总之,从dmesg开始,尝试禁用 ASPM;这些是导致嵌入式平台上较新内核出现 PCIe Wi-Fi 故障的最常见原因
 
此致
Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors

虽然这些建议是调试问题的好指导,但我找不到解决方案,也就是说,并非所有的 MSI IRQ 向量都触发了驱动程序中的 IRQ 例程。

最后,我改变了 ath12k 驱动程序,只请求一个 MSI IRQ,从而解决了这个问题。

请注意,当前的 Linux 主版本不存在这个问题。

此致

最大值

标记 (1)
无评分
版本历史
最后更新:
‎02-10-2026 03:29 AM
更新人: