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.

[参考译文] AM5728:关闭内核严重错误

Guru**** 2551110 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617877/am5728-shutdown-kernel-panic

器件型号:AM5728

您好!  

我们目前拥有一个基于 AM5728 IDK 进行定制设计的电路板。 我们希望电路板在通电时自动加电、因此我遵循了此论坛中的建议。 我还在这个论坛上发布了一些问题。

https://e2e.ti.com/support/power_management/pmu/f/200/t/555645 

我们注意到、如果我们尝试关闭、则会发生内核紧急情况、我想知道 PMIC 更改是否与此更改有关。  

此致、

Kevin

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

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

    嗨、Biser、  

    POWERHOLD (GPIO_7)当前上拉至 VRTC_OUT。  

    此致、

    Kevin

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

    您能否共享 dmesg 日志、在这里我可以看到内核恐慌并检查相应的内核源?

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

    Yordan、您好!


    我与 Kevin 合作、当断电导致恐慌时、我们会看到以下消息:

    [ 确定 ]目标声卡已停止。
            正在停止保存/恢复声卡状态...
            停止用户 root 的会话 C1。
    [ OK ] Closed Load/Save RF kill Switch Status /dev/rfkill Watch。         正在停止 LSB:在引导时启动 busybox udhcpd ...
            正在停止 LSB:自动工具...提交内核崩溃签名...
            正在停止 LSB:启动 NTP 守护程序...
            正在停止递延执行调度程序...
            停止 D 总线系统信息总线。
            正在停止 LSB:将 CPU 频率调节器设置为"按需"...
            正在停止 LSB:高级 IEEE 802.11管理守护程序...
            正在停止 LSB:设置 cpufreq 内核参数...
            正在停止 Zabbix Agent...
            正在停止 LSB:语音调度程序...
            正在停止 OpenBSD Secure Shell 服务器...
            正在停止 LSB:自动崩溃报告生成...
            正在停止 ACPI 事件守护程序...
    [ 确定 ]停止目标登录提示。
            正在停止 tty1上的 Getty...
            正在停止 ttyS0上的串行 Getty...
    [ 确定 ]已停止延迟执行调度程序。
    [ 确定 ]已停止系统日志服务。
    [ 确定 ]已停止 ACPI 事件守护程序。
    [ 确定 ]停止 cgroup 管理守护程序。
    [ 确定 ]停止常规后台程序处理守护程序。
    [ 确定 ]已停止 OpenBSD Secure Shell 服务器。
    [ 确定 ]已停止 ttyS0上的串行 Getty。
    [ 确定 ]已在 tty1上停止 Getty。
    [ 确定 ]已停止 UID 0的 User Manager。
    [ 确定 ]已停止 Zabbix Agent。
    [ 确定 ]已停止保存/恢复声卡状态。
    [ 确定 ]已停止用户 root 的会话 C1。
    [ 确定 ]已停止用户 root 的会话 C2。
    [ 确定 ]已停止用户 root 的会话 C3。
    [ 确定 ]已停止 LSB:工具自动... 提交内核崩溃签名。
    [ 确定 ] D 总线系统信息总线已停止
    [ 确定 ]已停止 LSB:高级 IEEE 802.11管理守护程序。
    [ 确定 ]已停止 LSB:语音调度程序。
    [ 确定 ]已停止 LSB:启动 NTP 守护进程。
    [ 确定 ]停止 LSB:将 CPU 频率调节器设置为"按需"。
    [ OK ] stopped LSB:设置 cpufreq 内核参数。
    [ 确定 ]停止 LSB:自动生成崩溃报告。
            正在停止 LSB:加载启用 cpufreq 缩放所需的内核模块...
    [ 确定 ]已停止 UID 0的 User Manager。
    [ 确定 ]停止目标系统时间同步。
            正在停止图4打印守护程序...
    [ 确定 ]已删除根的层用户层。
            正在停止登录服务...
    [ 确定 ]已删除片 system-Getty.slice。
            正在停止允许用户会话...
    [ 确定 ]已删除片 system-serial\x2dgetty.slice。
    [ 确定 ]已停止/etc/rc.local 兼容性。
    [ 确定 ]停止的目标网络处于联机状态。
    [ 确定 ]登录服务已停止。
    [ 确定 ]图4打印守护程序已停止。
    [ 确定 ]已停止允许用户会话。
    [ OK ] stopped LSB:加载启用 cpufreq 缩放所需的内核模块。
            正在停止分析 journald 日志并推入 zabbix 梯形程序...
    [ 确定 ]停止解析 journald 日志并推入 zabbix 梯形滤波器。
    [ 确定 ]目标网络已停止。
            正在停止提升网络接口...
    [ 确定 ]停止 LSB:在引导时启动总线框 udhcpd。
    [ 确定 ]停止目标基本系统。
    [ 确定 ]停止目标层面。
    [ 确定 ]已删除层用户和会话层。
    [ 确定 ]目标套接字已停止。
    [ 确定 ]已关闭 Syslog 套接字。
    [ 确定 ]已关闭 acpid 侦听套接字。
    [ 确定 ]关闭的 D-Bus 系统消息总线插座。
    [ 确定 ]停止的目标路径。
    [ 确定 ]已停止将密码请求转发到 Wall Directory Watch。
    [ 确定 ]已停止 ACPI 事件检查。
    [ 确定 ]已停止向控制台目录监视发送密码请求。
    [ 确定 ]停止目标远程文件系统。
    [ 确定 ]停止目标远程文件系统(预)。
    [ 确定 ]停止目标系统初始化。
            正在停止加载/保存随机种子...
    [ 确定 ]停止目标加密卷。
    [ 确定 ]停止创建易失性文件和目录。
    [ 确定 ]停止目标交换。
    [ 确定 ]停止加载/保存随机种子。
    [ 确定 ]停止提升网络接口。
    [ 确定 ]停止目标本地文件系统。
            卸载/run/user/0...
            卸载/run/cgmanager/fs...
    [ 确定 ]停止应用内核变量。
    [ 确定 ]停止目标网络(预)。
    [ 确定 ]卸载/run/user/0.
    [ 确定 ]卸载/run/cgmanager/fs.
    [ 确定 ]已达到目标卸载所有文件系统。
    [ 确定 ]停止目标本地文件系统(预)。
    [ 确定 ]已停止在/dev/中 创建静态设备节点。
    [ 确定 ]已停止重新装载根和内核文件系统。
    [ 确定 ]达到目标关闭。
    [4914.198026] reboot:power down
    [4914.202910]内核严重错误-未同步:尝试终止初始化! exitcode=0x00000000
    [4914.202910]
    [4914.226530]--[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000000
    [4914.226530]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是否足够信息? 每次上电时都会擦除 dmesg 文件、但是否有办法使其保持不变?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Yordan、  

    Heather 提供的信息是否足够? 如果您需要其他信息、请告知我们。

    此致、

    Kevin

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

    很抱歉耽误你的时间。

    从我看到的日志中、内核似乎从此次紧急情况中恢复、这是正确的吗? 您是否能够切断电路板的电源?
    如何在电路板上执行关断? 您是否使用 poweroff、halt 或其他任何命令?
    您是否在暂停/恢复机制中看到问题?

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

    Yordan、您好!


    我包含的日志是在我发送 poweroff 命令后而不是在我们启动时打印出来的日志。 它似乎在完成关机过程之前崩溃。 我们尚未尝试暂停或恢复板。

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

    您好!  

    由于我无法重现此问题、您能否在以下函数中添加调试打印:  

    kernel/reboot.c:   

    void kernel_power_off (void)

        kernel_shutdown_prepare (system_power_off);
        IF (PM_POWER_OFF_PREPARE)

           =>在此处添加调试打印。  
                  PM_POWER_OFF_PREPARE ();

        =>在此处添加调试打印
        migrate_for_reboot_cpu();

         =>在此处添加调试打印
        syscore_shutdown ();          =>跟踪原始函数(drivers/base/syscore.c) 并在其中添加调试打印。  
        PR_emergg ("断电\n");
        kmsg_dump (kMSG_Dump_POWEREROFF);
        MACHINE_POWER_OFF ();          =>跟踪原始函数(arch/arm/kernel/reboot.c)并在其中添加调试打印。  

    arch/arm/kernel/reboot.c:  

    void machine_power_off (void)

       =>在此处添加调试打印
       LOCAL_IRQ_DISABLE();

        =>在此处添加调试打印
       SMP_SEND_STOP();

       =>在此处添加调试打印

       如果(PM_POWER_OFF)
           PM_POWER_OFF ();  

        =>在此处添加调试打印

    drivers/base/syscale.c:  

    void syscore_shutdown (void)

       struct syscore_ops *ops;

         =>在此处添加调试打印

       互斥锁(&SYSCALE_OPS_LOCK);

       list_for_each_entry_reverse (ops、&syscree_ops_list、node)
       if (ops->shutdown){

              =>在此处添加调试打印
            if (initcall_debug)
               PR_INFO ("PM:调用%pF\n"、ops->shutdown);
               OPS->SHUTDOWN();
       }

         =>在此处添加调试打印

       互斥锁(&SYSCALE_OPS_LOCK);

    希望这将提供更详细的输出、并帮助我们准确跟踪内核参数。  

    此致、  
    Yordan

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

    当退出 kernel_power_off 函数时、问题似乎就会发生。 以下是我的调试打印语句:

    [ 确定 ]达到目标关闭。
    [202.845679] 重新启动:在 migrate_to reboot_cpu()之前
    [202.850552] SYSCALE_SHUTDOWN:在 mutex_lock 之前
    [202.855101] SYSCALE_SHUTDOWN:在 ops->SHUTDOWN 之前
    [202.859934] syscore_shutdown:ops->shutdown 之前
    [202.864744] syscare_shutdown:ops->shutdown 之前
    [202.870628] SYSCALE_SHUTDOWN:在 mutex_unlock 之前
    [202.875354] 重新启动:关闭电源
    [202.878439] machine_power_off:local_IRQ_disable 之前
    [202.883685] MACHINE_POWER_OFF:在 SMP_SEND_STOP 之前
    [202.888584] MACHINE_POWER_OFF:在 PM_POWER_OFF 之前
    [202.893391] MACHINE_POWER_OFF:调用 pm_POWER_OFF
    [202.898552] MACHINE_POWER_OFF:Pm_POWER_OFF 之后
    [202.903274] 重新启动:退出 kernel_power_off
    [202.909154] 内核严重错误-未同步:尝试终止初始化! exitcode=0x00000000
    [202.909154]  
    [202.918334] --[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000000
    [202.918334]  

    kernel_power_off 是系统断电前运行的最后一个函数吗? PMIC 何时被告知关闭组件?