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.

[FAQ] [参考译文] [常见问题解答] AM62Ax、AM62x、AM64x:Linux 引导时出现 RTI_WDT_PROBE 错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1272468/faq-am62ax-am62x-am64x-rti_wdt_probe-error-on-linux-boot

主题中讨论的其他器件:TLV320AIC26AM6252、AM6441、AM6421、AM6411

我使用的是 AM62Ax、AM62x 或 AM64x 器件。 我的器件型号的 A53内核数量少于该器件系列中的 A53内核的最大数量(有关具体器件型号、请参阅下文)。 或者、在可以具有 GPU 内核的器件系列中(例如 AM623x、AM620x)、我的器件型号不具有 GPU 内核。

在 Linux 启动期间、我遇到如下错误:

[   17.491528] Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP
[   17.499023] Modules linked in: dwc3_am62(+) rti_wdt(+) virtio_rpmsg_bus ti_k3_m4_remoteproc snd_soc_tlv320aic26 sa2ul pruss sha512_generic authenc cdns_dphy ltc2945 at24 sch_fq_codel cryptodev(O) ipv6
[   17.516894] CPU: 1 PID: 219 Comm: systemd-udevd Tainted: G           O      5.10.168-yocto-standard #1
[   17.526191] Hardware name: Critical Link MitySOM-AM62x (DT)
[   17.531760] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
[   17.537772] pc : rti_wdt_probe+0x1e8/0x4f0 [rti_wdt]
[   17.542738] lr : rti_wdt_probe+0x1d8/0x4f0 [rti_wdt]
[   17.547693] sp : ffff800011c5b920
[   17.550999] x29: ffff800011c5b920 x28: 0000000000000100 
[   17.556309] x27: ffff80001011c1a8 x26: 0000000000000003 
[   17.561615] x25: ffff800011603d98 x24: 000000000000004a 
[   17.566923] x23: ffff00000467a920 x22: ffff000002423400 
[   17.572231] x21: ffff00000467a890 x20: ffff000002423410 
[   17.577539] x19: ffff00000467a880 x18: 0000000000000000 
[   17.582848] x17: 0000000000000000 x16: 0000000000000000 
[   17.588155] x15: 0000000000000000 x14: ffff000005c0d580 
[   17.593463] x13: 0000000000000000 x12: ffff8000117dd000 
[   17.598769] x11: ffff8000117d7000 x10: 0000000000001000 
[   17.604078] x9 : ffff80001075c0fc x8 : ffff8000114c2b7c 
[   17.609389] x7 : 0000000000000041 x6 : 000000000000008b 
[   17.614697] x5 : 000000000e021000 x4 : ffff000002423610 
[   17.620005] x3 : ffff000005e5cd00 x2 : 0000000000000000 
[   17.625312] x1 : ffff000005c0b900 x0 : ffff8000117d5090 
[   17.630620] Call trace:
[   17.633071]  rti_wdt_probe+0x1e8/0x4f0 [rti_wdt]
[   17.637691]  platform_drv_probe+0x5c/0xb0
[   17.641695]  really_probe+0xf4/0x408
[   17.645266]  driver_probe_device+0x60/0xc0
[   17.649357]  device_driver_attach+0x7c/0x88
[   17.653533]  __driver_attach+0x70/0x100
[   17.657362]  bus_for_each_dev+0x78/0xc8
[   17.661192]  driver_attach+0x2c/0x38
[   17.664762]  bus_add_driver+0x15c/0x210
[   17.668592]  driver_register+0x6c/0x128
[   17.672423]  __platform_driver_register+0x50/0x60
[   17.677124]  rti_wdt_driver_init+0x2c/0x1000 [rti_wdt]
[   17.682260]  do_one_initcall+0x4c/0x2e0
[   17.686094]  do_init_module+0x50/0x210
[   17.689838]  load_module+0x20fc/0x27a8
[   17.693580]  __do_sys_finit_module+0xb8/0xf8
[   17.697843]  __arm64_sys_finit_module+0x28/0x38
[   17.702370]  el0_svc_common.constprop.0+0x80/0x1d0
[   17.707154]  do_el0_svc+0x2c/0xa8
[   17.710465]  el0_svc+0x20/0x30
[   17.713515]  el0_sync_handler+0xb0/0xb8
[   17.717343]  el0_sync+0x180/0x1c0
[   17.720659] Code: f9000260 b140041f 54001128 91024000 (b9400000) 
[   17.726748] ---[ end trace fbd7824ab88012ad ]---

发生什么事了?

AM62Ax :在 AM62A*4上,A53内核的最大数量是4个。 此常见问题解答适用于具有2个或1个 A53内核的其他器件型号: AM62A72 、AM62A32、AM62A31  

AM62x:  A53内核的最大数量为4个,在 AM62*4上。 此常见问题解答适用于具有2或1 A53内核的其他器件型号:AM6252 、AM6251、AM6232、AM6231、AM6202 AM6201

AM64x:  在 AM64*2上,A53内核的最大数量为2个。 此常见问题解答适用于具有1 A53内核的其他器件型号:AM6441、AM6421、AM6411

2024年1月更新:  本常见问题解答中的信息已添加到处理器学院模块中。 此常见问题解答将不再继续。
请在处理器的学院> Linux 模块>移植>移植 CPU:
AM62x
AM62Ax
AM64x

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

    该常见问题解答的概念适用于 AM62Ax、AM62x、AM64x。 不过、我们将使用 AM62x 作为示例。

    发生了什么事-概念

    针对 Linux SDK 8.6创建的 AM62x Linux Academy 记录了:如果器件型号没有最大数量的 A53内核、则需要从 Linux devicetree 中删除不存在的 A53内核: https://dev.ti.com/tirex/explore/node?a=XaWts8R__8.6.0.42%20v1&node=A__AGMop5fjikXYw819LJNi-w__linux_academy_am62x__XaWts8R__8.6.0.42%20v1

    但是、也缺少一些信息。 每个 A53内核的电源域还有一个看门狗计时器、称为实时中断(RTI)。 有关更多信息、请搜索技术参考手册(TRM)中的"实时中断"。

    让我们在 Linux devicetree 中查找 RTI:

    ti-linux-kernel/arch/arm64/boot/dts/ti$ grep -r rti --include=k3-am62-main*
    k3-am62-main.dtsi:      main_rti0: watchdog@e000000 {
    k3-am62-main.dtsi:              compatible = "ti,j7-rti-wdt";
    k3-am62-main.dtsi:      main_rti1: watchdog@e010000 {
    k3-am62-main.dtsi:              compatible = "ti,j7-rti-wdt";
    k3-am62-main.dtsi:      main_rti2: watchdog@e020000 {
    k3-am62-main.dtsi:              compatible = "ti,j7-rti-wdt";
    k3-am62-main.dtsi:      main_rti3: watchdog@e030000 {
    k3-am62-main.dtsi:              compatible = "ti,j7-rti-wdt";
    k3-am62-main.dtsi:      main_rti15: watchdog@e0f0000 {
    k3-am62-main.dtsi:              compatible = "ti,j7-rti-wdt";
    

    根据 TRM、RTI0 - RTI3与 A53_0 - A53_3关联、而 RTI15与 GPU 关联。 这意味着此常见问题解答也适用于没有 GPU 的器件型号、以及具有 GPU 的器件系列。

    与不存在的内核相关联的 RTI 也必须在 Linux 器件树中被禁用。

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

    操作-示例

    假设我们使用的是 AM6252。 它有2个 A53内核、而不是最大数量4个、并且具有 GPU。

    在本例中、我们需要禁用 A53节点2和3、同时 禁用 MAIN_rti2和 MAIN_rti3。

    &cluster0 {
     /delete-node/ core2;
     /delete-node/ core3;
    };
    
    
    &main_rti2 {
     status = "disabled";
    };
    
    
    &main_rti3 {
     status = "disabled";
    };