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.

[参考译文] AM6421:R5 Remoteproc 停止导致内核严重错误

Guru**** 2482775 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1551391/am6421-r5-remoteproc-stop-cause-kernel-panic

器件型号:AM6421


工具/软件:

你好 e2e 团队:

我们 remoteproc 的定制电路板上的驱动程序遇到问题。 在加载 R5 二进制文件(例如现场总线堆栈)并启动该二进制文件后、无法使用以下命令停止远程内核:

echo stop > state

系统不会正常停止,而是崩溃,只有看门狗重置可以恢复它。我们的安装程序包含一个基于 Debian 6.1.124 的自定义内核以及 RT 补丁。 我们目前正在使用 remoteproc  TI Git 存储库中的大多数提交。 随附相关文件以供参考。

以下是日志输出的一个片段:

-----------------------------------------------------------------------------------------------------------------------------------------

[1741.100218]------ 【在这里剪切】------

[1741.100238] net/core/dev.c:10846!

[ 1741.100257]内部错误:oops — 错误:00000000f2000800 [#1] PREEMPT_RT SMP

[ 1741.100272] CPU:0 PID:1258 通信:SH 未污染 6.1.124-rt47 #1

[ 1741.100283]硬件名称:SICK SIG300 (DT)

[1741.100289] pstate:800005 (Nzcv daif -pan -uao -TCO -DIT -SSB BTYPE=--)

[1741.100298] PC:free_netdev+0x150/0x190

[1741.100320] lr : free_netdev+0xd8/0x190

[1741.100326] sp : ffff8000093b37b0

[ 1741.100330] x29:ffff8000093b37b0 x28:ffff0000024a8000 x27:0000000000000000

[ 1741.100346] x26:000000000000 x25:ffffff800009074eb0 x24:ffff0000038a46d0

[ 1741.100357] x23:ffff0000038a4700 x22:ffff0000038a4400 x21:ffff000003a6d050

[ 1741.100369] x20:ffff000003a6d000 x19:ffffff000003a6cef8 x18:ffff000003f7a270

[ 1741.100380] x17:ffffff800015922000 x16:ffffff800000080000 x15:ffff0000040e7268

[ 1741.100392] x14:000000000000 x13:ffffff000003f7a270 x12:ffffff0000040e7240

[ 1741.100403] x11:0000ffffffffffffff x10:ffffff000003f7a2a8 x9:ffffff000003f7a270

[ 1741.100414] x8:0000000000020000 x7:000000000000002e x6:0000000000000002

[ 1741.100424] x5 : ffffff000000256b80 x4 : ffffff800008f7bf08 x3 : ffff0000024a8000

[ 1741.100435] x2:000000000000 x1:000000000000 x0:0000000000000001

[1741.100447]呼叫跟踪:

[1741.100453] free_netdev+0x150/0x190

[1741.100460] devm_free_netdev+0x14/0x20

[ 1741.100474] release_nodes+0x40/0x70

[ 1741.100487] DevRes_release_all+0x88/0xd0

[ 1741.100495] DEVICE_UNBIND_Cleaning+0x18/0x68

[ 1741.100507] DEVICE_RELEASE_DRIVER_INTERNAL+0x100/0x188

[ 1741.100519] device_release_driver+0x18/0x28

[ 1741.100529] BUS_REMOVE_DEVICE+0xd4/0x160

[ 1741.100539] DEVICE_DEL+0x17c/0x3b8

[ 1741.100547] DEVICE_UNREGISTER+0x20/0x78

[ 1741.100555] rpmsg_remove_device+0x10/0x20

[ 1741.100567] DEVICE_FOR_each_child+0x60/0xa8

[ 1741.100575] rpmsg_remove+0x40/0xa8

[ 1741.100583] virtio_dev_remove+0x44/0xa0

[ 1741.100596] DEVICE_REMOVE+0x4c/0x80

[ 1741.100606] DEVICE_RELEASE_DRIVER_INTERNAL+0xe0/0x188

[ 1741.100617] DEVICE_RELEASE_DRIVER+0x18/0x28

[ 1741.100627] BUS_REMOVE_DEVICE+0xd4/0x160

[ 1741.100636] device_del+0x17c/0x3b8

[ 1741.100643] DEVICE_UNREGISTER+0x20/0x78

[1741.100650] unregister_virtio_device+0x18/0x40

[ 1741.100659] rproc_remove_virtio_dev+0x14/0x28

[ 1741.100672] device_for_each_child+0x60/0xa8

[ 1741.100680] rproc_vdev_do_stop+0x2C/0x58

[ 1741.100691] rproc_stop+0x54/0x158

[ 1741.100700] rproc_shuting+0x60/0x148

[1741.100710] STATE_STORE+0x84/0x110

[ 1741.100721] DEV_ATTR_STORE+0x18/0x30

[ 1741.100733] sysfs_KF_WRITE_0x44/0x60

[ 1741.100745] kernfs_fop_write_iter+0x128/0x1b8

[ 1741.100754] vfs_write+0x380/0x4b0

[ 1741.100767] ksys_write+0x68/0xf0

[ 1741.100776]__arm64_sys_write+0x1c/0x28

[ 1741.100786]调用_syscall+0x44/0x108

[1741.100798] el0_Svc_common.constprop.3+0x94/0xf8

[ 1741.100808] DO_el0_Svc+0x24/0x98

[1741.100816] el0_Svc+0x20/0x50

[ 1741.100826] el0t_64_SYNC_HANDLER+0x98/0xc0

[ 1741.100833] el0t_64_SYNC+0x170/0x174

[ 1741.100847]代码:f94013f5 a8c37bfd d50323bf d65f03c0 (d4210000)

[1741.377634]--[结束跟踪 000000000000 ]-----

[ 1741.377640]内核恐慌 — 未同步: oops - bug :致命异常

[ 1741.388501]内核偏移:已禁用

[1741.388503] CPU 功能:0x000,000,00800084,0000420b</s>00,084,000

[1741.388509]内存限制:无

-----------------------------------------------------------------------------------------------------------------------------------------

我们的设置:

  • Linux 6.1.124+ debian-1+RT
  • Sysfw:11.xx.xx
  • U-Boot:2021.01

任何见解或建议都将非常感谢。

谢谢!

e2e.ti.com/.../ti_5F00_sci_5F00_proc.he2e.ti.com/.../ti_5F00_k3_5F00_r5_5F00_remoteproc.ce2e.ti.com/.../remoteproc_5F00_internal.he2e.ti.com/.../omap_5F00_remoteproc.h

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

    您好 Stefan、

    1) 在 oops 日志之前是否有任何其他有用的终端输出?

    一般而言、从跟踪日志来看、似乎远程处理器可能有适当的正常关闭代码、比如 Linux 正在成功关闭 R5F 内核并取消初始化 RPMsg 基础架构、然后再在该过程的稍后部分挂起。

    2) 您是否验证了问题是否特定于 R5F 上运行的固件? 或者(例如)ipc_rpmsg_echo_linux 工程是否看到相同的行为?

    此致、

    Nick

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

    您好、Nick、

    1) 没有更多的端子输出

    2) 我们使用不同的 R5 二进制文件进行了测试,并始终看到内核错误。 使用该二进制文件、可以使用我们基于 6.1.94 的“旧“内核停止内核、但不能使用上述版本 Stefan。

    BR

    Kai

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

    您好、Kai、

    终端输出

    对于终端输出、我很想看到 Remoteproc 和 rpmsg 驱动器连接到远程内核时的输出、以及任何其他有趣的输出。  如下所示:

    dmesg | grep -e remoteproc -e rproc -e rR5 -e virtio -e rpmsg

    后续调试步骤

    我很高兴听到您有内核 6.1 的工作版本! 这使得调试变得简单得多。

    由于无论 R5F 固件如何(并根据 yall 的内核日志)都出现该问题、我假设 Linux 出现了问题、而不是 R5F 固件出现问题。

    我可以提供的帮助将受到限制、因为 YALL 没有使用 ti-linux-kernel 分支、我以前没有看到客户抱怨这个特定问题。 但这是我建议的一般方法:

    查看工作内核版本和损坏的内核版本之间的不同补丁、以了解问题可能出现的位置。 它可能是由 Remoteproc 驱动程序中的某些内容引起的、但也可能是由内核本身中发生的更改引起的。

    将问题一分为二可能最容易开始。 在中间测试提交。 如果运行正常、请在提交和损坏的内核版本中间进行测试。 如果不起作用、请在提交和工作内核版本的中间进行测试。 等

    此致、

    Nick