2184884_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2184884_zh-CN

2184884_zh-CN

使用 “tk (密码块链接(CBC) (aes))” 进行文件系统加密时出现 imx8mm CAAM 错误

使用CAAM写入文件系统时使用`t k (密码块链接(aes)) `进行文件系统加密时出现以下错误。

caam_jr 30902000.jr:4000141c:DECO: desc idx 20:DECO看门狗定时器超时错误

这种情况只是偶尔发生,但在启用所有内核运行时似乎更为普遍。

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

很抱歉延迟回复。

我们使用的是 Phytec 公司的 `linux-imx_5.15.71_2.2.2-phy5`,并打上了https://github.com/Freescale/linux-fslc/tree/5.15-2.2.x-imx至 5.15.183 的补丁。 不幸的是,这个问题只是偶尔出现(在跨多个单元的 CI 测试中,每 500 小时左右才会出现不到 1 个实例),而且我还无法创建一个简单的重现器。

最初尝试启用 “CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG” 会阻止我们的设备启动,因为我们正在使用 CAAM 加密根文件系统和各种数据分区,这会生成过多的日志记录。

我正在考虑将日志信息添加到循环缓冲区中,并在错误发生时发出。 由于这只会导致最后 1000 条左右的记录被发出,我想知道是否有任何设置信息是我们应该始终记录的,以支持分析。

谢谢!

丹尼尔

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

你能否分享一下你正在使用的电路板支持包 版本以及出现问题时的步骤和日志?


此致

哈维

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

不幸的是,我无法使用其他工具进行重现

我已经添加了最后 2048 条 CAAM 故障日志信息的记录,现在我们正在等待故障在 CI 中再次发生。 我收到日志后会尽快发送给您。

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

看门狗超时错误是由 DECO 暂停时触发信号的,但是有多种情况可以让 DECO 暂停,例如输入/输出缓冲区地址、长度等。
你能用 "dd" 或 "fio" 工具进行压力测试来重现这个错误吗?

如果问题能够稳定重现,就能帮助我们找到根本原因。


此致

哈维

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

最后,记录失败。 这应包括 CAAM 子系统的最后 2048 条日志记录。 与标准日志记录的唯一区别是不包括 `src` 和 `dst` 缓冲区数据。

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

请注意,出于省电的考虑,我们降低了 CPU 和 DDR 的运行速度,这可能会对结果产生影响。

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

不,我无法用 dd 或 fio 进行重现。 在我捕获之前的日志的系统上,它只会偶尔发生(到目前为止每 2 个月一次)。

在另一个代码略有不同的系统上,这种情况每天至少发生一次。 我们认为这是在启动过程中加载大量共享库时造成的(在我获取日志的系统中并没有使用这些共享库)。 遗憾的是,我们无法轻易收集该版本的日志,但我们可以相对快速地测试补丁,看看问题是否得到解决。

以前的日志是否包含足够的调查信息? 如果没有,还需要什么?

Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

简单查看我的日志后发现,在故障发生时,8 个队列请求中的第 8 个请求是产生 DECO 看门狗超时错误的原因。 在日志的早期部分,即使在处理其他偏移量序列时,似乎也很少有排队等待的请求(有时可能只有一个? 这是线索吗?

在此之前排队的 7 个请求似乎都能正确完成,因此可能是以下原因之一...

  1. 队列实际上只支持 7 个条目--在这种情况下,减少队列条目的数量可能会有帮助(在哪里可以更改?)
  2. DECO 看门狗超时从条目添加到队列时开始,由于处理 8 个条目所需的时间过长,超时也就结束了--在这种情况下,延长超时时间可能会有帮助(同样,如果可能的话,在哪里可以更改?)
  3. 这个具体请求实际上有问题,但在我看来,它与之前的 7 个请求等同,因此似乎不太可能出现这种情况

谢谢!

丹尼尔


Re: iMX8MM CAAM errors when using 'tk(cbc(aes))' for filesystem encryption

拿到日志后,我决定亲自深入研究。 当系统处于高内存负载但 DDR 仍以 400MT/s 的速度运行时(在我们的情况下有时为 100MT/s),CAAM 有时会产生看门狗错误。

eMMC 驱动程序会强制 DDR 达到 3000MT/s 的速度,但对于写入而言,这并不一定要等到加密完成后才会发生。

我们已经为我们的用例修复了这个问题,在 `caam_jr_enqueue () `中请求` BUS_FREQ_HIGH `,然后通过计划工作从 `caam_jr_dequeue () `再次将其释放。

这解决了文件系统访问问题,但在从网络堆栈调用时(例如通过 xfrm)会产生问题,因为 `request_bus_freq()` 最终会在原子上下文中被调用(从更高的网络堆栈调用),而且 `request_bus_freq()` 和 `clk_xxx()` 调用都使用了 mutex

我们已经解决了这个问题,在除文件系统之外的所有系统中禁用了 CAAM,但如果向上游推广,还需要更好的解决方案。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-28-2026 02:29 AM
更新者: