This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] J722SXH01EVM:有关 K3-J722S 上的器件基础上 wifi Linux 驱动程序加载失败的问题

Guru**** 2694555 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1593912/j722sxh01evm-the-issue-about-wifi-linux-driver-load-fail-on-device-base-on-k3-j722s

器件型号: J722SXH01EVM

我们遇到一个问题、即 roadcom 的 BCM43752 上 Wi-Fi 模块基础驱动程序无法在 K3-J722S 上的器件基础上加载。  

以下是详细信息:

使用的驱动程序版本是 bcmdhd.101.10.591.x_SparkLAN_v8、此驱动程序在 6.6.58 内核和 6.12.43 内核上使用相同的构建方法正确编译。 编译后的驱动程序在 6.6.58 内核上工作正常、但无法在 6.12.43 内核上加载。

我比较了两个内核的启动日志、发现在加载过程开始时日志是一致的。 但是、在执行 dhdpcie_get_resource 函数期间、6.12.43 内核会记录一条消息、内容为“BAR1 not enabled for this device size (0)、addr (0x0000000000000000)“、然后退出并重试加载驱动程序、在同一点反复失败。 四次尝试后、它停止尝试、驱动程序无法加载。 此消息不会出现在 6.6.58 内核上、并且驱动程序加载成功。

我还在两个内核上执行 cat /sys/bus/pci/devices/0000:01:00.0/resource 以检查 PCI 资源分配。 我发现在这两个内核中、BAR1 的大小均为 0。 但是、我不确定为什么驱动程序在 6.6.58 内核上成功加载、但在 6.12.43 内核上 BAR1 大小为 0 时失败。 我已附上两个系统的完整启动日志、以[DHD]开头的行是驱动程序的日志信息。

此外、我们还有一款搭载 NXP iMX8MP SoC 和内核版本 6.12.20 的器件。 相同的驱动程序源代码在此内核上编译并正常工作。 因此、在 TI 6.12.43 内核上加载驱动程序的问题可能与内核配置或 PCI 总线驱动程序有关、而不是与内核本身有关。 我还附上了 NXP 内核上驱动程序加载的日志。

请帮助分析问题所在。 如果需要任何其他信息、请告诉我、我将提供这些信息。 谢谢

dmesg_output_6.6.58.txtdmesg_output_6.12.43.txtdriver_load_log_6.12.20@nxp.txt 

 
 

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ke、

    如果它与 bar 相关、则此提交将是 6.6 和 6.12 内核之间的主要更改之一: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi?h=ti-linux-6.12.y&id=e4281149e38703a34ab4d7682df021e297f4882a

    是否可以尝试恢复此提交?  

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Takuma、谢谢您的答复。  

    实际上、我已经比较了 6.6 内核和 6.12 内核之间 DTS 文件的 PCIe 相关部分、发现它们的地址分配不同。 我尝试修改 6.12 内核 DTS 中的 PCIe 节点以匹配 6.6 内核中的节点、但似乎对驱动程序加载没有影响。 驱动程序仍然无法加载。 我刚刚再次测试了它,结果是相同的—日志输出没有变化。

    替换 dtb below.e2e.ti.com/.../dhd_5F00_driver_5F00_load_5F00_log_5F00_kernel6.12_5F00_with_5F00_dts_5F00_adjust_5F00_accord_5F00_to_5F00_6.6.txt 后、我附上了驱动程序加载日志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ke、

    您是否还能发送完整的 dmesg 日志以查看 DTS 更改是否得到反映?

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    修改 DTS 之前和之后的 dmesg 输出显示在以下两个文件中。
    “dmesg_output_6.12_raw.txt"包含“包含原始映像的输出、
    而“dmesg_output_6.12_with_dts_revert.txt"包含“包含在 6.12.43 内核 dts 文件中修改 PCIe 节点以匹配 6.6.6.58 内核中的 PCIe 节点后的输出。

    e2e.ti.com/.../6866.dmesg_5F00_output_5F00_6.12_5F00_with_5F00_dts_5F00_revert.txte2e.ti.com/.../6866.dmesg_5F00_output_5F00_6.12_5F00_raw.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ke、

    将恢复的日志与 6.6 内核日志进行比较、我现在在 PCIe 方面没有看到显著的差异:

    从 PCIe 控制器驱动程序的角度来看、似乎 PCIe 设备已被检测到并已正确初始化。 因此、WiFi 卡的内核设备驱动程序可能存在一些问题、因为它是树外的内核驱动程序、或者像您在原始帖子中所怀疑的那样、内核配置存在一些问题。

    您能否收集以下信息:

    • 来自 6.6 内核和 6.12 内核的“lspci -vvv“的日志
    • 日志来自 6.6 内核和 6.12 内核的“zcat /proc/config.gz “  

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、 Takuma

    感谢您的答复。 以下是 lspci 和 config 的信息:

    e2e.ti.com/.../lscpi_2D00_vvv_2D00_6.12.txte2e.ti.com/.../lscpi_2D00_vvv_2D00_6.6.txte2e.ti.com/.../config_5F00_6.12.txte2e.ti.com/.../config_5F00_6.6.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ke、

    通过内核配置、我看不到任何看起来与 WiFi 卡相关的配置。 我假设这是因为 WiFi 驱动程序是树外模块。  

    在任何情况下、 BCM43752 依赖于 BCMDHD、浏览我可以在这里找到的代码: https://github.com/GrapheneOS-Archive/kernel_google-modules_wlan_bcmdhd_bcm43752/blob/12.1/Kconfig。 您能否确保所有依赖项都已构建、并且可以在器件上找到.ko 文件?

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    bcmdhd 驱动程序是由供应商提供的独立驱动程序包。 CONFIG_BCMDHD_PCIe 等配置选项在驱动程序自身的源树内定义、仅在驱动程序编译期间使用。 我认为这些选项不会出现在内核的配置菜单中。

    此外,由于 bcmdhd 驱动程序问题困扰了我很长一段时间,我开始探索替代解决方案。 我注意到、在版本高于 6.12 的内核版本中、通过内核 brcmfmac 驱动程序可以支持 BCM43752。 经过一些研究、我找到了以下补丁:

    git.kernel.org/.../

    我手动将此修补程序的更改应用到 6.12 内核、现在我可以成功启动 BCM43752、驱动程序正常工作。 因此、我不再需要研究为什么 bcmdhd 驱动程序无法加载在内核 6.12 上。 此问题可以视为已解决、您可以将其关闭。

    无论如何,非常感谢您的支持。 再次感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ke、

    很高兴听到您能够启动并运行 BCM43752! 会将螺纹标记为已涂覆。

    此致、

    Takuma