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.

[参考译文] Linux/AM3352:AM3352 MCSPI:SPI 驱动程序在&quot 中挂起;WAIT_ORD_ENDINUDING "

Guru**** 2551760 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/789595/linux-am3352-am3352-mcspi-spi-driver-hangs-in-wait_for_completion

器件型号:AM3352

工具/软件:Linux

您好!

我们的产品使用 MCSPI 将数据发送到 FPGA、但在成千上万次成功的 SPI 事务之后、SPI2过程会在"不间断睡眠"内冻结(根据 ps 命令、该过程处于 D 状态-不间断睡眠)。  然后,我的内核线程(自定义网络驱动程序)也会在等待 SPI_异 步()调用返回时锁定。   从 Web 搜索中、我认为唯一能够将 SPI2进程置于此状态的代码是 Tx 和 Rx DMA 处理程序中的"WAIT_for_Completion"调用。   

我们正在运行内核3.12 (但由于64字节 SPI 问题、已从3.14手动更新为 MCSPI 代码)。   

此问题听起来与另一个(锁定的)主题非常相似:  http://e2e.ti.com/support/processors/f/791/t/420294

我们的 MCSPI 在该线程的第一个帖子中提到了代码更改、但该线程结束时未列出分辨率。

我们还尝试了内核4.9、它具有类似的锁定条件(不是不间断的、但仍然被锁定)。

我们使用16位字事务以8MHz 的频率运行 SPI、 DMA 用于数据包传输。

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

    要隔离 DMA 问题,是否已尝试禁用 DMA 并进行检查?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们昨晚刚刚获得了该测试的结果-我们正在将 MCSPI 驱动程序构建到内核中(即不是可加载的驱动程序)。  测试失败了一晚、我们发现 SPI2过程现在从 ps 列表中消失了。

    系统日志中没有(有用的)消息来帮助调试发生的情况。

    它在没有 DMA 的情况下运行了30多个小时。  启用 DMA 后、我们通常会使其更频繁地发生故障(从1.5小时到12小时以上不等)。

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

    我可以想到的另一个建议是将 WAIT_for_Completion()替换为 WAIT_for_Completion_timeout()
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dwarakesh: 首先、感谢您的建议!  我赞赏这一努力。

    我更改了等待"WAIT_for_Complete_interruptied_timeout"的状态。   这消除了锁定、但在完成超时后、DMA 似乎处于不良状态。  我们从该函数中得到许多其他错误消息。  我们将查看 DMA 认为它在做什么。

    昨天、我们看到了 SPI 中其他两个行为异常的实例-其中一个实例是、它一直持续发送相同的数据包(似乎是一个无限循环)。  另一个似乎因 OOW 错误而崩溃。  我们正在研究这些症状的原因和含义。

    我们以前遇到的问题是 SPI_异 步()被重新调用。  我们可以从 ftrace 捕获中得知、现在没有发生这种情况(我们仅看到 SPI_渐 近和 SPI_异 步返回调用、因此没有"不匹配"的/可重入调用)。

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

    我还建议您尝试使用随 PSDK v5.02提供的最新内核4.14.79

    另请检查以下 e2e 线程是否会提供帮助:

    e2e.ti.com/.../709789

    此致、
    帕维尔