[实践篇]13.22 la qcom平台Watchdog Bark/Bite学习总结
创始人
2025-05-30 23:35:37
0

一,Watchdog简介

watchdog是我们系统系统工程师常常挂在嘴边的,最常见的异常之一,它有一个很别致的中文名 - 看门狗。

对于la系统,我们常见的几种重启情况包括内核态重启和用户态重启。内核空间的重启又包括电源状态异常导致的重启,内核看门狗的狗咬狗叫重置,以及内核子系统/驱动/其他模块异常导致的Panic Crash。今天我们还是先聚焦看门狗的狗咬和狗叫。

本篇中的看门狗指的是一个固定长度的计数器,在计时器超时时,可以将系统从非预期的软硬件异常中恢复过来。看门狗又分为软件看门狗和硬件看门狗。

软看门狗是指在一些子系统(经典如之前面向手机通讯相关的MPSS子系统)实现了watchdog机制。

硬看门狗则是一个硬件模块,被用于确保系统卡住或过载时重置系统。有一个计时器组成,在一个给定的超时时间下进行倒计时计时。如果在给定的时间内,响应的CPU core没有重置计时器,计时器最终会倒计时到0,而触发看门狗超时。

对于子系统狗叫/狗咬的问题,从应用的角度来看,就是一种可以恢复的异常,而不是变砖。

WDT Bark/Bite,超时时间默认11s超时触发狗叫,触发一个中断,引导la发生kernel panic重置。12s超时,触发中断TZ拉PS_HOLD;

二,分析方法

大多数的NS Watchdog Bark是喂狗线程发生block导致,如频繁的日志打印也会导致wdt bark,当发生wdt bark时,la会触发guestdump,产生gcore文件。

2.1 分析kernel日志

这里的kernel日志可以是la侧的/proc/kernel信息或demsg日志;也可以是qnx世界的la_gvm.txt信息,甚至可以是qnx世界的slog,因为对于q+la方案,物理驱动往往都运行在q世界中,从slog中的hab be信息中也是可以发现一些蛛丝马迹。

2.2 解包分析gcore或ramdump文件

在解析的ramdump信息中,可以从dmesg_TZ.txt中直观的了解一些kernel的状态如watchdog信息(Non-secure Watchdog data),CPU上下文信息(MSM_DUMP_DATA_CPU_CTX),kernel日志(Dmesg),中断信息(IrqParse),运行队列信息(RunQueue)等。

2.3 使用T32分析cpu core寄存器信息

在一些场景下,cpu上下文在imem是有效的,我们可以使用launch_t32.bat(选择适用于操作系统的t32脚本)来恢复崩溃点,以便检查内核线程上下文。如果cpu上下文很正常或无意义则需要检查内存稳定性和排查硬件。

打开T32后,可以加载每个core的上下文文件(形如core0_regs.cmm,core1_regs.cmm,core2_regs.cmm......)

2.4 分析timerlist.txt

可以分析定时器列表(timer list)来分析定时器异常

2.5 分析内存问题

有些时候低内存状态下(dma泄漏),可能会引发一些驱动的踩内存情况,这种也会引发看门狗计时器异常。在ramdump解析的文件中可以分析tasks.txt和page_tracking.txt,分析内存布局。

三,案例

3.1 日志过多打印导致的wdt bark

如果引起bark的cpu core上下文出现如call_console_drivers() --> con->write()调用;

3.2 驱动相关异常引起的wdt bark

如果引起bark的cpu core上下文出现如device_attach() /driver_attach()等调用。

3.3 调度相关引起的wdt bark

  • 如果在dmesg_TZ文件中的内核工作队列(workqueue),观察到很多pending_workqueue函数或者类似workqueue busy的信息,可能出现了一些函数执行卡住或超时的情况;

  • 如果在上下文观察到出现很多handle_irq字样的函数,需要检查irq状态,可能此时出现了中断风暴。

  • 查看runqueue,排查是否有RT任务长期占用CPU。

3.4 计时器相关引起的wdt bark

cpu上下文看起来是正常的,但看门狗定时器发生了异常也会引发wdt bark。如下:

  • 时钟不及时更新等引起的计时器问题,可以分析定时器列表(timer list),排查定时器时钟信息(timer jiffiers);

  • 内存踩踏(memory corruption)引起的定时器列表(timer list)异常。

  • 硬件问题引起的时钟源问题,因为看门狗定时器的基本机制需要稳定的时钟源。

3.5 irq相关引起的wdt bite

如果la卡在irq上下文,则wdt bark中断不能踢狗,就会发生wdt bite。

3.6 硬件问题引起的wdt bite

如果发生硬件问题,比如cpu core hung住,就会引发wdt bite。

四,术语

MPSS:Modem periphery subsystem software,通讯相关外设子系统软件;

HLOS:High-Level Operating System,即为Linux/Android,简称LA;

RTB:Register Trace Buffer,寄存器跟踪缓冲区。

相关内容

热门资讯

3.线性表链式表示 数据结构很重要! 数据结构很重要!!! 数据...
开学第一课最新或2023(历届...   篇一:  今天,看了开学第一课,本次的主题是英难。突然想到了自己读的《狼牙山五壮士》,我深深感动...
央视开学第一课最新或2023(...   篇一:  9月4日晚,我观看了最新或2023(历届)开学第一课:英雄不朽,看完后,我最想大声疾呼...
秋季开学第一课英雄不朽心得体会... 篇一  中华民族自近代以来最该融入一代又一代人血液的“民族记忆”,就是长达14年的抗日战争。  就在...
最新或2023(历届)开学第一...   篇一  《 开学第一课》是以“英雄不朽”为主题,围绕“爱国、勇敢、团结、自强”4个篇章,通过一个...
央视开学第一课最新或2023(...   篇一:  今年是中国人民抗日战争暨世界反法西斯战争胜利70周年,央视一年一度的大型公益节目《开学...
vscode插件开发(语言类) 目录项目初始化项目介绍如何调试高亮配置自定义主题自动补全打包、本地测试添加插件图标插件名称有unde...
开学第一课心得体会最新或202...   开学第一课心得体会:爱国之情  今天看了最新或2023(历届)《开学第一课》,我的心中不禁涌起澎...
最新或2023(历届)秋季开学...   【第一篇】  最新或2023(历届)开学第一课:英雄不朽节目现场,TFBOYS宣读《少年自强宣言...
最新或2023(历届)秋季cc...   最新或2023(历届)秋季cctv1开学第一课英雄不朽心得体会1  《开学第一课》描写了许多耳熟...
最新或2023(历届)秋季央视...   最新或2023(历届)秋季央视开学第一课英雄不朽心得体会1  今天我看了以英雄不朽为主题的《开学...
最新或2023(历届)小学生观...   【篇1】  以“英雄不朽”为主题的《开学第一课》节目贯穿了“爱国、勇敢、团结、自强”四个主题词。...
Flutter内阴影 前言 在前几天的业务需求中,UI给出的页面中有新拟态的按钮,就是带内部阴...
开学第一课最新或2023(历届...   开学第一课最新或2023(历届)英雄不朽观看心得体会【1】  这一期的《开学第一课》讲述的是抗日...
最新或2023(历届)观看开学...  最新或2023(历届)观看开学第一课直播心得体会1  今天,看了开学第一课,本次的主题是英难。我想...
开学第一课英雄不朽观后感200...  1.最新或2023(历届)《开学第一课》“英雄不朽”观后感  今天我看了以“英雄不朽”为主题的《开...
最新或2023(历届)看开学第...  最新或2023(历届)看开学第一课英雄不朽心得体会【1】  最新或2023(历届)《开学第一课》于...
最新或2023(历届)看央视《...   最新或2023(历届)看央视《开学第一课》心得体会1  今晚央视二套开播《开学第一课》。全国2....
H5CSS3第一课——CSS选... hello,时隔一年多,我再次回归了,在之前的公司因为保密协议过于严格&...
MM MIGO BAPI BA... 原文链接:https://blog.csdn.net/IamRunjiang/arti...