watchdog是我们系统系统工程师常常挂在嘴边的,最常见的异常之一,它有一个很别致的中文名 - 看门狗。
对于la系统,我们常见的几种重启情况包括内核态重启和用户态重启。内核空SEO靠我间的重启又包括电源状态异常导致的重启,内核看门狗的狗咬狗叫重置,以及内核子系统/驱动/其他模块异常导致的Panic Crash。今天我们还是先聚焦看门狗的狗咬和狗叫。
本篇中的看门狗指的是一个固定长度的SEO靠我计数器,在计时器超时时,可以将系统从非预期的软硬件异常中恢复过来。看门狗又分为软件看门狗和硬件看门狗。
软看门狗是指在一些子系统(经典如之前面向手机通讯相关的MPSS子系统)实现了watchdog机制。SEO靠我
硬看门狗则是一个硬件模块,被用于确保系统卡住或过载时重置系统。有一个计时器组成,在一个给定的超时时间下进行倒计时计时。如果在给定的时间内,响应的CPU core没有重置计时器,计时器最终会倒计时到0,SEO靠我而触发看门狗超时。
对于子系统狗叫/狗咬的问题,从应用的角度来看,就是一种可以恢复的异常,而不是变砖。
WDT Bark/Bite,超时时间默认11s超时触发狗叫,触发一个中断,引导la发生kernel SEO靠我panic重置。12s超时,触发中断TZ拉PS_HOLD;
大多数的NS Watchdog Bark是喂狗线程发生block导致,如频繁的日志打印也会导致wdt bark,当发生wdt baSEO靠我rk时,la会触发guestdump,产生gcore文件。
这里的kernel日志可以是la侧的/proc/kernel信息或demsg日志;也可以是qnx世界的la_gvmSEO靠我.txt信息,甚至可以是qnx世界的slog,因为对于q+la方案,物理驱动往往都运行在q世界中,从slog中的hab be信息中也是可以发现一些蛛丝马迹。
在解析的ramdump信息中,可以从dmesg_TZ.txt中直观的了解一些kernel的状态如watchdog信息(Non-secure Watchdog data),CPU上下文信息(MSM_DSEO靠我UMP_DATA_CPU_CTX),kernel日志(Dmesg),中断信息(IrqParse),运行队列信息(RunQueue)等。
在一些场景下,cpSEO靠我u上下文在imem是有效的,我们可以使用launch_t32.bat(选择适用于操作系统的t32脚本)来恢复崩溃点,以便检查内核线程上下文。如果cpu上下文很正常或无意义则需要检查内存稳定性和排查硬件SEO靠我。
打开T32后,可以加载每个core的上下文文件(形如core0_regs.cmm,core1_regs.cmm,core2_regs.cmm......)
可以分SEO靠我析定时器列表(timer list)来分析定时器异常
有些时候低内存状态下(dma泄漏),可能会引发一些驱动的踩内存情况,这种也会引发看门狗计时器异常。在ramdump解析的文件中可SEO靠我以分析tasks.txt和page_tracking.txt,分析内存布局。
如果引起bark的cpu core上下文出现如call_console_dSEO靠我rivers() --> con->write()调用;
如果引起bark的cpu core上下文出现如device_attach() /driver_attaSEO靠我ch()等调用。
如果在dmesg_TZ文件中的内核工作队列(workqueue),观察到很多pending_workqueue函数或者类似workqueue buSEO靠我sy的信息,可能出现了一些函数执行卡住或超时的情况;
如果在上下文观察到出现很多handle_irq字样的函数,需要检查irq状态,可能此时出现了中断风暴。
查看runqueue,排查是否有RT任务长期占SEO靠我用CPU。
3.4 计时器相关引起的wdt bark
cpu上下文看起来是正常的,但看门狗定时器发生了异常也会引发wdt bark。如下:
时钟不及时更新等引起的计时器问题,可以分析定时器列表(timer SEO靠我list),排查定时器时钟信息(timer jiffiers);
内存踩踏(memory corruption)引起的定时器列表(timer list)异常。
硬件问题引起的时钟源问题,因为看门狗定时器的SEO靠我基本机制需要稳定的时钟源。
如果la卡在irq上下文,则wdt bark中断不能踢狗,就会发生wdt bite。
如果发生硬件SEO靠我问题,比如cpu core hung住,就会引发wdt bite。
MPSS:Modem periphery subsystem software,通讯相关外设子系统软件;
HLOS:High-LSEO靠我evel Operating System,即为Linux/Android,简称LA;
RTB:Register Trace Buffer,寄存器跟踪缓冲区。
网站备案号:浙ICP备17034767号-2