一,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,寄存器跟踪缓冲区。

[实践篇]13.22 la qcom平台Watchdog Bark/Bite学习总结相关推荐

  1. [实践篇]13.21 la qcom watchdog学习笔记

    [QNX Hypervisor 2.2用户手册]目录(完结) 一,watchdog简介 wdt定时器配置了一个狗叫-Bark和狗咬-Bite时间,如果没有在规定的时间周期内喂狗-Pet,即系统出现无响 ...

  2. Qcom 平台 LK 阶段配置 I2C

    qcom平台LK 阶段配置IIC 版本号:V 1.0 作者:Leo 目录 目录... 1 前言... 4 1.      确定硬件... 4 2.      LK I2C 函数接口... 5 2.1 ...

  3. android camera2 qcom,Qcom平台 Camera的一些知识点 之MCLK

    前言 MCLK 是平台 baseband 提供给 cam sensor的正常工作的频率, Qcom 平台一般未24MHz,由其他时钟源分频而来,实测在23.8MHz左右. 在打开相机的时候,才可以测到 ...

  4. Android - Audio - Qcom平台 - QM215耳机常见修改和粗略识别流程

    背景 耳机的分类 调试Qcom耳机功能时常用修改 (1)qcom,msm-mbhc-hphl-swh = <1>; (2)qcom,msm-hs-micbias-type="in ...

  5. 哔哩哔哩“2021.07.13 我们是这样崩的”报告的学习-1

    哔哩哔哩"2021.07.13 我们是这样崩的"报告的学习-1 这份报告是我学计算机两年来第一次真实看到大厂的员工到底在干什么.出现了很多专有名词,以及当前最先进的互联网企业的应用 ...

  6. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现

    作者:陈迪豪,小米深度学习工程师,负责小米云深度学习平台的架构和实现,目前专注于TensorFlow和Kubernetes社区. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至 ...

  7. 算法学习 (门徒计划)2-2 堆(Heap)与优先队列 学习笔记

    算法学习 (门徒计划)2-2 堆(Heap)与优先队列 学习笔记 前言 堆(Heap)的概念和基础操作 基础概念 基础操作 入堆与上滤 出堆与下滤 自定义类实现堆 优先队列 经典例题,堆的基础应用 l ...

  8. 有关watchdog的个人学习

    1. 对于watchdog的三个描述:pet,bark,bite pet:喂狗,是一个定时循环的行为,一般<10s bark:在设定的时间内没有喂狗,触发bark;bark是一个irq信号 bi ...

  9. linux平台学x86汇编语言学习集合帖

    linux平台学x86汇编语言学习集合帖 linux平台学x86汇编(一):https://blog.csdn.net/shallnet/article/details/45543237 linux平 ...

最新文章

  1. css加载会造成阻塞吗
  2. 站着说话不腰疼!这种技术水平,你能做到?
  3. Gogs 0.11.19 发布,自助 Git 托管服务
  4. Windows系统Pycharm软件重置设置,恢复默认设置方法介绍
  5. 回答一位朋友关于 SAP SRM 行业 转 CRM 行业的咨询
  6. jsf集成spring_Spring和JSF集成:动态导航
  7. 管理和维护RHCS集群
  8. 【Yarn】Yarn : 日志管理
  9. Unity Failed executing external process for 'Bake Runtime' job
  10. Vitalik:Rollups预计在短期和中长期成为以太坊扩容的基石
  11. Python numpy 多维数组切片
  12. 计算机二级电子表格开根号函数,教你如何用函数方式在excel中开根号
  13. 非监督分类ecognition_ENVI遥感影像土地利用分类说明
  14. java 打压缩包_java将文件打成zip包
  15. 韩顺平循序渐进学java百度云_韩顺平.循序渐进学java从入门到精通视频教程及笔记与源码下载(94讲)...
  16. 迈向人工智能的下一步-《星际争霸II》
  17. IOS和Android开发的一些个人感受
  18. 宏基因组测序结果分析中的名词汇总
  19. RxJava2.x的集成及用法详解
  20. IOS开发教程第一季之01UI基础day7合并IOS学习007----控件(UITableView03微博)

热门文章

  1. Ajax上传文件,后端返回文件访问路径
  2. 2014 传播一点正能量-- 分享工作人生感悟
  3. 计算机专业ps,计算机专业PS试题
  4. c++求解李白喝酒问题
  5. VipMi 老年手机删除黑名单方法
  6. 苹果不会告诉你的事——关于Airport基站
  7. win10中关于用粘滞键留下后门
  8. 4.23 使用应用图像命令制作艺术效果 [原创Ps教程]
  9. 2021牛年二月活动策划指导方案
  10. HC32F460开发之rtthread+finsh组件的移植