
[Android稳定性] 第017篇 [方法篇] 高通watchdog分析流程
高通watchdog的分析套路: 检查watchdog执行状态,pet、bark time,expires时间等必要信息,可以自己去看msm_watchdog_data,也可以直接检查rampaser解出来的Watchdog data(Non-secure Watchdog data) 检查msm_

[Android稳定性] 第016篇 [原理篇] 高通平台watchdog机制原理解析
0. watchdog的概念 Watchdog主要应用于嵌入式系统,用于系统出现严重故障(如内核死锁,进入死循环,CPU跑飞等)不能恢复时,在无人为介入的情况下可以自动重新启动系统。 在传统Linux 内核下, watchdog的基本工作原理是:当watchdog启动后(即/dev/watchdog

[linux内存管理] 第019篇 buddy分配器基础知识以及分配器api接口
0. 前言 众所周知,Linux内存管理的核心是伙伴系统(buddy system)。其实在linux启动的那一刻,内存管理就已经开始了,只不过不是buddy在管理。在内核中,实现物理内存管理的allocator包括: 连续物理内存管理buddy allocator 非连续物理内存管理vmalloc

[linux内存管理] 第018篇 buddy系统的简介以及初始化
0. 前言 在[linux内存管理] 第013篇 zone的初始化一文中简单剖析了 zone 的初始化流程,也是继 arm64_memblock_init 和 sparse_init 之后有一个内存管理层,而zone 这一层管理层中,所有的物理内存都会被添加到zone 中的成员变量 free_are

[linux内存管理] 第017篇 zonelist的初始化
0. 前言 在bootmem_init初始化的时候,已经初始化了内存节点的zone成员,该成员是struct zone数组,存放该内存节点的zone信息。在linux的内存管理中,分几个阶段进行抽象,用数据结构来管理。先用结点集合管理内存,然后用zone管理结点,再用页的管理zone。此时使用的数据

[linux内存管理] 第016篇 /proc/iomem的详细解析
0. 前言 此节点是显示memblock的这部分内存的具体使用情况的。我们可以看到这部分内存很明显不属于虚拟地址,而是物理地址,和设备树中的地址保持一致! spring:/ # cat /proc/iomem 00208000-00208fff : 208000.qcom,ipcc qcom,ipc

[linux内存管理] 第015篇 理解Linux内核中的memblock和ioremap机制
0. 前言 Linux驱动开发中,设备寄存器的物理地址如何被内核管理并映射到虚拟地址空间,是一个非常核心的知识点。本文将从memblock和ioremap的机制入手,梳理相关流程和原理。 1. 什么是memblock? memblock 是 Linux 内核在启动阶段管理物理内存的核心工具。它的主要

[Android稳定性] 第015篇 [问题篇] Unable to handle kernel NULL pointer dereference
0. 问题现象 死机 1. 问题分析 1.1 dmesg_TZ.txt [ 9.188060][ T175] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000102 [ 9

[Android稳定性] 第014篇 [问题篇] slab内存泄露
0. 问题现象 目前协调FAE 从印度前线客户服务中心收集3份日志,初步分析 Slab占用过大3.9G,有Slab内存泄漏的问题,目前需要异常机复现现场问题后确认泄漏的原因。 Slab内存占用高问题,同平台窗口和性能模块核对,case:ALPS09052161,目前来看屏幕卡住不动,跟WMS关系不大

[linux内存管理] 第014篇 /proc/zoneinfo的详细解析
0. 前言 内存管理是一个相对复杂的内核模块,错综复杂的 数据结构 和管理逻辑。 Linux 内核为了帮助开发者从宏观上把握内存的使用情况,在几大核心数据结构中都有相应的计数统计,如物理页面使用情况、伙伴系统分配情况、内存管理区的页面使用情况、内存回收扫描回收情况、内存规整触发情况等等。 在 sta