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.

[参考译文] TDA4VH-Q1:以太网错误:am65-cpsw-nuss c200000.Ethernet eth0:TxQ:0 DRV_XOFF:0 tmo:9068 dql_avail:-464 free_desc:498

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1218926/tda4vh-q1-ethernet-error-am65-cpsw-nuss-c200000-ethernet-eth0-txq-0-drv_xoff-0-tmo-9068-dql_avail--464-free_desc-498

器件型号:TDA4VH-Q1
主题中讨论的其他器件:TDA4VH、TDA4VM

您好!

SoC:Tda4VH

SDK:8.6

我有时会遇到这个错误。

[102.879709] am65-cpsw-nuss c200000.Ethernet eth0:TxQ:0 DRV_XOFF:0 tmo:9068 dql_avail:-464 free_desc:498
[ 107.999419] am65-cpsw-nuss c200000.Ethernet eth0:TxQ:0 DRV_XOFF:0 tmo:14188 dql_avail:-464 free_desc:498
[ 113.887424] am65-cpsw-nuss c200000.Ethernet eth0:TxQ:0 DRV_XOFF:0 tmo:20076 dql_avail:-464 free_desc:498
[118.751422] am65-cpsw-nuss c200000.Ethernet eth0:TxQ:0 DRV_XOFF:0 TMO:24940 dql_avay:-464 free_desc:498

root@J7-EVM:~# ip link set dev eth0 down
[ 269.279361] am65-cpsw-nuss c200000.ethernet: tx timeout
[ 269.284638] lib/genalloc.c:507中出现内核错误!
[269.288982] 内部错误:Oops - BUG:0[#1]抢占 SMP
[ 269.294451]模块链接如下: hik_pwm ahci libabahci libata wavebuf2_dma_waveg v4l2_mem2mem videbuf2_vmv4l2 v4l2 videobuf2_common videobuf2_memops remote_service (O) hikio (O) gtc (O) pvrrproc (O) pvrteproc (O) c_remoti_memory_remoti_3 k_remoti_k_mc (O) k_mce_remoti_msp_mc (O)
[269.319461] CPU: 1 PID: 737 Comm : IP Insided: G    W O   5.10.162-g76b3e88d56 #1
[269.327529] 硬件名称: HIKAUTO AE-B50036-M (DT)

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1207193/tda4vm-721e-runtime-kernel-panic/4554992#4554992

TI 指导我检查了上述 LIN、但我认为这可能是关于 Tda4VH 和8.6。 这就是我单独注册这个帖子的原因。

此致、

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

    尊敬的 Seunghyun:

    感谢您发布此问题。 我 也会让我们的专家了解这个话题、但由于他们位于不同的时区、因此 他们的评论 可能会延迟到下周。

    与此同时、我收到了您帖子中 E2E 链接中有关该补丁的整晚回复。 该补丁未集成到 SDK 中、因为我们仍然是导致问题的根本原因。 但是、此补丁已被多个客户验证为一种权变措施、因此建议应用补丁。

    TDA4VM 和 TDA4VH 之间针对 CPSW 以太网子系统使用了相同的驱动程序、因此、我认为此变通办法对于 TDA4VH 仍很可能有效。

    您是否能够应用补丁?

    此致、

    大沼市

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

    尊敬的 Seunghyun:

    开始应用补丁后是否出现此问题?

    此致、

    基尔西

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

    大家好、Takuma 和 Keerthy、

    感谢您的跟进。

    因为我的客户发布了 SDK、所以我要求我的客户修补该软件并再次将我发给我。

    我将在收到补丁后分享测试结果、并尽快测试我的应用。

    此致、

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

    Keerthy、您好!

    我应用了客户提供的补丁、但仍然有错误。

    我不知道补丁是否正确。

    [ 48.538693] lib/genalloc.c:507中出现了内核错误!
    [48.543047]内部错误:Oops - BUG:0[#1]抢占 SMP
    [48.548522]模块链接如下: hik_pwio libahci libata videbuf2_dma_waveg v4l2_mem2mem videbuf2_v4l2 v4l2 videobuf2_common videbuf2_memops remote_service (O) hikio (O)
    [48.573534] CPU: 0 PID: 0 Comm : swapper/0 Doyed: G O 5.10.162-g76b3e88d56 #1
    [48.582036]硬件名称: HIKAUTO AE-B50036-M (DT)
    [ 48.586899] pstate:00000005 (nzcv daif -pan -uao -TCO BTYPE=-)
    [48.592899] PC : gen_pool_free_owner+0xf4/0x170
    [48.597415] lr : gen_pool_free_owner+0xa8/0x170
    [48.601929] sp : ff8000118efc80
    [48.605229] x29:ff8000118efc80 x28:000000000000
    [48.610526] x27:ff8000118efde0 x26:ff000820590120
    [ 48.61584] x25:ff000820212000 x24:0000000000000007
    [48.621120] x23:ff000824310e7f x22:000000000000
    [ 48.626417] x21:00000000000000000001 x20:ff000823a69880
    [48.631713] x19:ff000824310e00 x18:000000000000
    [ 48.637009] X17:0000000000000000 x16:000000000000
    [48.642305] x15:0000fffcd4fce750 x14:dafc6dd27be92b5a
    [48.647602] X13:0a0801010000e2d5 x12:ff800014600000
    [ 48.652898] x11:0000000000000001 x10:000000000000001c
    [48.658194] x9:0000000000000024 x8:00000000000000000001
    [48.663491] x7:ff800014600038 x6:000000000000
    [48.668787] x5 : ffffffffffefffffffff x4 : 0000000010000000
    [48.674088] x3 : ff800014600038 x2 : 000000001ffffff
    [48.679384] x1: ffffffee607ffff x0: 0000000000000001
    [48.684681]呼叫追踪:
    [ 48.687118] gen_pool_free_owner+0xf4/0x170
    [ 48.691289] k3_cppi_desc_pool_free+0x24/0x30
    [ 48.695630] am65_cpsw_nuss_xmit_free+0xe8/0x130
    [ 48.700232] am65_cpsw_nuss_tx_compl_packet+0x58/0xb8
    [ 48.705266] am65_cpsw_nuss_tx_poll+0x1ac/0x3a8
    [ 48.709784] NET_RX_ACTION+0x134/0x448
    [ 48.713520]_DO_SOFTIRQ+0x174/0x430
    [ 48.717170] IRQ_EXIT+0xc0/0xe8
    [ 48.720299]__Handle_domain_irq+0xa0/0x110
    [ 48.724468] GIC_Handle_IRQ+0x60/0x130
    [ 48.728201] el1_IRQ+0xcc/0x180
    [ 48.731332] arch_cpu_idle+0x18/0x28
    [ 48.734895] DEFAULT_IDLE_CALL+0x34/0x1b8
    [ 48.738892] DO_IDEL+0xc0/0x128
    [ 48.742021] CPU_STARTUP_Entry+0x30/0x60
    [ 48.745930] REST_INIT+0xdc/0xec
    [ 48.749148] ARCH_CALL_REST_INIT+0x18/0x24
    [ 48.753229] start_kernel+0x4ec/0x524
    [48.756881]代码:d65f03c0 1400001c 17fff5 d4210000 (d4210000)
    [48.762966]--[结束迹线 b01fb0861940805b ]--
    [48.767569]内核严重-未同步:错误:中断中出现致命异常
    [48.774946] SMP:停止辅助 CPU
    [ 48.778862]内核偏移:已禁用
    [48.782337] CPU 特性: 0x28040,022,20006008
    [ 48.786678]内存限制:无
    [48.789723]--[结束内核紧急-未同步:哎呀-错误:中断中出现致命异常]--

    此致、

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

    您好!

    您能否分享您应用的补丁? 我要查看补丁。

    此致、

    基尔西  

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

    您好!

    我要求您所做的代码更改完全正确。 您能否将补丁作为文本文件粘贴?

    -基尔西

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

    您好!

    我查看了该补丁、这正在恢复权变措施。

    --- C:/Users/lechenfei/AppData/Local/Temp/k3-ringacc.c-rev450250.svn001.tmp.c	Öܶþ 4Ô 25 12:00:38 2023
    +++ X:/work/TDA4X/kernel_tda4vh_v8.6.0/linux/linux/drivers/soc/ti/k3-ringacc.c	ÖÜÈÕ 4ÔÂ 23 21:20:31 2023
    @@ -1170,13 +1170,11 @@
     
     static int k3_ringacc_ring_pop_mem(struct k3_ring *ring, void *elem)
     {
    -	volatile dma_addr_t *elem_ptr;
    +	void *elem_ptr;
     
     	elem_ptr = k3_ringacc_get_elm_addr(ring, ring->state.rindex);
     
    -	while (*elem_ptr == 0);
    -	memcpy_fromio(elem, elem_ptr, (4 << ring->elm_size));
    -	memset_io(elem_ptr, 0, (4 << ring->elm_size));
    +	memcpy(elem, elem_ptr, (4 << ring->elm_size));
     
     	ring->state.rindex = (ring->state.rindex + 1) % ring->size;
     	ring->state.occ--;
    

    这意味着该权变措施已删除、可能会导致问题。

    请恢复上面的补丁并进行检查。

    -基尔西

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

    Keerthy、您好!

    我的合作伙伴公司告诉我、他们安装了正确的补丁。 修补后该文件被反转,并与原来的文件比较。

    那么该补丁最终无法正常工作。 我想知道以下可能的原因。

    [ 48.538693] lib/genalloc.c:507中出现了内核错误!
    [48.543047]内部错误:Oops - BUG:0[#1]抢占 SMP
    [48.548522]模块链接如下: hik_pwio libahci libata videbuf2_dma_waveg v4l2_mem2mem videbuf2_v4l2 v4l2 videobuf2_common videbuf2_memops remote_service (O) hikio (O)

    其次、如何检查补丁是否正确? 是否有测试应用程序或案例?

    此致、

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

    我的合作伙伴说"目前的怀疑是由异常 DMA 通道引起的网络问题"只是为您提供信息。

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

    您好!

    我们在 TDA4VM 上遇到了同样的问题、我在上面提到了修复方法。 如果我们观察到问题、即使应用了补丁、
    成为一个不同的问题。

    请分享日志和重现的步骤。

    -基尔西

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

    您好!

    要重新生成它、您需要设置以下内容。

    - 6个摄像头(8MP + 2MP 至 CSI 0、4 x 2MP 至 CSI2)

    -基本 app (APP_MULTIAM ),激活自动曝光,白平衡,马赛克,与1 MSC 重新缩放)

    - TIDL 处理

    -以太网发送数据21Mb/s

    该错误是上述,当我运行我的应用程序,当我触发以太网 TX 功能,它显示以太网错误, [ 102.879709] am65-cpsw-nuss c200000.Ethernet eth0 : TxQ : 0 DRV_XOFF : 0 TMO : 9068 dql_avay:-464 free_desc : 498

    在出现此错误之前、我可以对评估板执行 ping 或 ssh 操作、但在该错误之后我无法访问评估板。

    此致、

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

    +您能解释一下修补程序为什么可以解决虚拟机的问题吗?

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

    您好!

     甚至在 DMA 更新 CPU 读取完成描述符之前、就会怀疑 CPU 读取完成描述符。 这将导致 CPU 读取过时的描述符、并且会出现问题。

     上述补丁的目的是 在弹出描述符(完成)后将环中的描述符重置为"0"。 这样、过时的描述符数据将全为"0"、在正确的情况下、CPU 绝不应在完成时读取"0"(描述符)。 在这里、我们可以清楚地看到、当 DDR 负载较重时(例如在运行 C7x 应用程序时) CPU 的读数为"0"。

    解决方法是将描述符设为0、然后等待、直到其读数为非零、以便我们确保描述符不会过时。

    diff -_git a/drivers/soc/ti/k3-ringacc.c b/drivers/soc/ti/k3-ringacc.c
    index a5bf90646337..296671b4e0c4 100644 --a/drivers/soc/ti/k3-ringacc.c
    
    
    @@@@
    
    
    
    
    
    
    
    
    -memcpy (elem、elem_ptr、(4 << ring->elm_size)); 
    +while (* elem_ptr == 0); 
    +memcpy_fromio (elem、elem_ptr、(4 << ring->elm_size));
    +memset_io (elem_ptr、0、(4 << ring->elm_size)); 
    
    ring->state.rindex =(ring->state.rindex + 1)% ring->size;ring->state.occ-
    ; 

    此共享补丁是 J721e 上的一种权变措施。 此问题正在内部调试、修复版本为9.0 SDK。

    正在调试的内部问题:

    同样、如果设置失败、您可以在我们检查条件时添加打印件:

    while (* elem_ptr == 0) 
    {
    printk("过时的描述符问题\n");

    此致、
    基尔西

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

    您好!

    • elem_ptr (* elem_ptr)的值是完成描述符、并且 DMA 会在 DAM 完成传输时更新该描述符(0:done、非零:no-done)。 CPU 必须等待完成(0)才能使用它。 它看起来帧由[完成描述符|元素数据]组成。 如果我的理解正确、请告诉我。
    • while (* elem_ptr =0);很危险,因为它可能是一个无限循环。 您的建议是什么?
    • 我们如何将 CPU 和 DMA 之间的这个问题与以太网问题联系起来?
    • 现在 MSC1和以太网已崩溃、但 MSC2看起来正常。 您如何解释这种情况?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    elem_ptr (* elem_ptr)的值是完成描述符、并且 DMA 会在 DAM 完成传输后更新该描述符(0:done、non-zero:no-done)。 CPU 必须等待完成(0)才能使用它。 它看起来帧由[完成描述符|元素数据]组成。 让我知道我的理解是否正确。

    我们在  使用后将描述符明确归零。 因此、我们知道是否仍然看到0、DMA 未完成、我们等待。

    • while (* elem_ptr =0);很危险,因为它可能是一个无限循环。 您的建议是什么?
    [/报价]

    可具有计数10。 一旦计数过期、我们可以将其保释为错误条件、而不是无限期地等待。

    此外、应用此补丁后、您是否满足此条件?如果满足、有多少次?

    • 我们如何将 CPU 和 DMA 之间的这个问题与以太网问题联系起来?
    [/报价]

    使用 DMA 交换以太网数据。

    [48.687118] gen_pool_free_owner+0xf4/0x170
    [ 48.691289] k3_cppi_desc_pool_free+0x24/0x30
    [ 48.695630] am65_cpsw_nuss_xmit_free+0xe8/0x130
    [ 48.700232] am65_cpsw_nuss_tx_compl_packet+0x58/0xb8
    [ 48.705266] am65_cpsw_nuss_tx_poll+0x1ac/0x3a8
    [/quote]

    检查调用堆栈。 以太网驱动程序 am65_cpsw_nusss tx 是由于上述 DMA 问题而导致故障的。

    • 现在 MSC1和以太网已崩溃、但 MSC2看起来正常。 您如何解释这种情况?

    [/报价]

    MSC1和以太网是什么?

    -基尔西

    [/quote][/quote]