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.

[参考译文] J784S4XEVM:复杂 GStreamer 流水线的内核崩溃

Guru**** 2577385 points
Other Parts Discussed in Thread: J784S4XEVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1573329/j784s4xevm-kernel-crash-with-complex-gstreamer-pipeline

器件型号:J784S4XEVM
主题中讨论的其他器件: SN65DSI86PCM3168A

工具/软件:

ti-edgeai-image SDK 11 配合使用的 J784S4XEVM 电路板上、我们遇到间歇性内核崩溃问题。

当运行复杂的 Gstreamer 流水线时发生崩溃、该流水线利用了多个 TI 特定的硬件加速元素tiovxmultiscalertiovxldctiovxmosaicv4l2h265enc、包括、、、、、 和v4l2h265dec

该问题不确定、但会一直发生、每运行 10 个流水线中大约有 1 个发生故障。 结果是与寻呼请求相关的内核严重错误、这需要硬重新引导才能恢复系统。

以下是用于分析的完整内核崩溃日志:

[437427.293830] Unable to handle kernel paging request at virtual address fffeffff80000000
[437427.301879] Mem abort info:
[437427.304837]   ESR = 0x0000000096000144
[437427.308759]   EC = 0x25: DABT (current EL), IL = 32 bits
[437427.314194]   SET = 0, FnV = 0
[437427.317355]   EA = 0, S1PTW = 0
[437427.320608]   FSC = 0x04: level 0 translation fault
[437427.325598] Data abort info:
[437427.328585]   ISV = 0, ISS = 0x00000144, ISS2 = 0x00000000
[437427.334193]   CM = 1, WnR = 1, TnD = 0, TagAccess = 0
[437427.339353]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[437427.344782] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000083145000
[437427.351602] [fffeffff80000000] pgd=0000000000000000, p4d=000000008353b003, pud=0000000000000000
[437427.360480] Internal error: Oops: 0000000096000144 [#1] PREEMPT SMP
[437427.366837] Modules linked in: xt_conntrack xt_MASQUERADE iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter ip_tables x_tables br_netfilter bridge stp llc overlay bluetooth ecdh_generic ecc cfg80211 rfkill imx490 rpmsg_ctrl ti_am335x_adc rpmsg_char ds90ub953 panel_edp cdns3 kfifo_buf cdns_usb_common cdns_pltfrm j721e_csi2rx crct10dif_ce wave5 snd_soc_j721e_evm mux_gpio cdns_csi2rx display_connector phy_can_transceiver videobuf2_dma_contig v4l2_mem2mem ds90ub960 videobuf2_v4l2 omap_mailbox ti_k3_r5_remoteproc tidss v4l2_fwnode omap_hwspinlock videobuf2_memops at24 videobuf2_common v4l2_async m_can_platform drm_dma_helper ti_sn65dsi86 cdns_mhdp8546 cdns_dsi m_can pvrsrvkm(O) snd_soc_davinci_mcasp videodev drm_display_helper ti_k3_dsp_remoteproc can_dev ti_am335x_tscadc i2c_atr snd_soc_ti_udma snd_soc_pcm3168a_i2c k3_j72xx_bandgap ti_k3_common sa2ul drm_dp_aux_bus mc snd_soc_ti_edma snd_soc_pcm3168a ti_j721e_ufs cdns_dphy cdns_dphy_rx drm_kms_helper snd_soc_ti_sdma
[437427.367011]  cdns3_ti rti_wdt cryptodev(O) fuse drm drm_panel_orientation_quirks backlight ipv6
[437427.465162] CPU: 1 UID: 0 PID: 26908 Comm: queue_reference Tainted: G           O       6.12.17-ti-00773-gcdcaeac783e3-dirty #1
[437427.476704] Tainted: [O]=OOT_MODULE
[437427.480266] Hardware name: Texas Instruments J784S4 EVM (DT)
[437427.485995] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[437427.493026] pc : dcache_clean_poc+0x20/0x38
[437427.497294] lr : arch_sync_dma_for_device+0x24/0x30
[437427.502243] sp : ffff800089b5bcc0
[437427.505630] x29: ffff800089b5bcc0 x28: ffff00099971b180 x27: 0000000000000000
[437427.512837] x26: 0000000000000000 x25: 0000000000000000 x24: ffff0008bce58810
[437427.520043] x23: 0000000000000002 x22: 0000000000000001 x21: 0000000000000000
[437427.527248] x20: ffff00098b5de500 x19: 0000000000000000 x18: 0000000000000000
[437427.534453] x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffff7f5ac4c0
[437427.541659] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
[437427.548864] x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
[437427.556070] x8 : 0000000000000000 x7 : ffff0009ad3626c0 x6 : 0000000000000000
[437427.563275] x5 : ffff800089b5bd68 x4 : ffff800081566388 x3 : 000000000000003f
[437427.570480] x2 : 0000000000000040 x1 : fffeffff802f8000 x0 : fffeffff80000000
[437427.577687] Call trace:
[437427.580209]  dcache_clean_poc+0x20/0x38
[437427.584121]  dma_direct_sync_sg_for_device+0xf8/0x100
[437427.589244]  __dma_sync_sg_for_device+0x20/0x40
[437427.593851]  dma_heap_dma_buf_end_cpu_access+0x9c/0xcc
[437427.599062]  dma_buf_end_cpu_access+0x2c/0x44
[437427.603494]  dma_buf_ioctl+0x278/0x508
[437427.607316]  __arm64_sys_ioctl+0xac/0xf0
[437427.611315]  invoke_syscall+0x48/0x10c
[437427.615139]  el0_svc_common.constprop.0+0xc0/0xe0
[437427.619916]  do_el0_svc+0x1c/0x28
[437427.623305]  el0_svc+0x28/0x98
[437427.626438]  el0t_64_sync_handler+0x120/0x12c
[437427.630867]  el0t_64_sync+0x190/0x194
[437427.634607] Code: d2800082 9ac32042 d1000443 8a230000 (d50b7a20) 
[437427.640770] ---[ end trace 0000000000000000 ]---
|


您能看看这个并帮助解决问题吗?

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

    您好、

    TI 分配的资源当前处于外出状态。  请预计响应可能会延迟。

    此致、

    KB

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

    尊敬的 Bartosz Tomczyk

    可以发送 GStreamer 流水线吗? 您在运行流水线时是否正在运行任何其他应用程序?

    您是使用 Yocto 生成 EdgeAI 映像还是在其他位置获得了该映像?

    此致、
    Jared

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

     Jared McArthur 

    是的、我们使用 Yocto 自行构建 EdgeAI 映像

    ./oe-layertool-setup.sh -f configs/processor-sdk-analytics/processor-sdk-analytics-11.00.00-config.txt
    
    cd build
    . conf/setenv
    
    # Add meta-vay-camera layer
    bitbake-layers add-layer $DIR/sources/meta-vay-camera/
    
    echo 'ARAGO_BRAND = "edgeai"' >> conf/local.conf
    echo 'MACHINE = "j784s4-evm"' >> conf/local.conf
    
    bitbake -c cleanall tisdk-edgeai-image || true
    bitbake -k tisdk-edgeai-image

    关于 Gstreamer 流水线、这会很棘手。 我们没有一个简单的gst-launch-1.0命令可以共享,因为我们的流水线是由我们自己的 C++中间件动态构建的。 此中间件是我们在流水线中唯一运行的应用程序。

    我们的应用程序设置并在运行时更改参数。 例如、它会设置tiovxldc块大小和 LUT、更改tiovxmultiscaler 缩放设置并v4l2h265enc实时更改比特率。 由于这不是一个固定的流水线、因此问题会随机弹出、这使得很难固定下来。

    我们一直在尝试创建一个更简单的测试用例、但这很困难。 流水线元素相互依赖。 例如、如果我们删除tiovxldc以查看是否是原因、则由于需要特定的映像大小、流水线的其余部分会中断。如果我们交换硬件加速tiovx/encoder/decoder插件软件、问题就会消失。 但性能下降太多、可能只是隐藏了问题(可能与时间有关)

    所以、我们有点卡滞。 您或您的团队是否曾在动态tiovx管道中看到过这种情况? 任何关于我们下一步可以尝试什么的想法或建议都将是一个巨大的帮助。

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

    尊敬的 Bartosz Tomczyk

    我认为动态 GStreamer 流水线没有观察到这种情况。 我遇到的最类似的问题是:  PROCESSOR-SDK-AM68A:HS-SE 器件上的 DMA 存储器问题 

    是在 EVM 还是定制电路板上运行这些测试? 如果是定制板、RAM 的尺寸是否不同?

    您是否能够一次将每个硬件加速插件减去一个、以查看是否是某个特定插件导致管道中断?

    您是否能够查看发生内核错误时的流水线、或者动态更改流水线时的内核错误?

    此致、
    Jared