android kernel devices睡眠唤醒调试

2023-11-15

 

主要是在kernel添加关键log,获取有用信息,可以调试suspend,resume,earlysuspend lateresume等方面的问题,如哪一过程时间过长,跟踪log才可以很好定位问题,解决问题。

1:early_suspend late_resume添加log
earlysuspend.c
static int debug_mask = DEBUG_USER_STATE;
->
static int debug_mask = DEBUG_USER_STATE | DEBUG_SUSPEND |
DEBUG_VERBOSE;

就可以打印出对应的设备。

2:resume suspend debug
platform.cdriver/base)中添加log,打印相应设备:

int platform_pm_suspend(struct device *dev)
{
struct device_driver *drv = dev->driver;
int ret = 0;

if (!drv)
return 0;

if (drv->pm) {
if (drv->pm->suspend)
ret = drv->pm->suspend(dev);
+
printk("%s called name = %s\n",__func__,drv->name);
} else {
ret = platform_legacy_suspend(dev, PMSG_SUSPEND);
}

return ret;
}

int platform_pm_resume(struct device *dev)
{
struct device_driver *drv = dev->driver;
int ret = 0;

if (!drv)
return 0;

if (drv->pm) {
if (drv->pm->resume)
ret = drv->pm->resume(dev);
+
printk("%s called name = %s\n",__func__,drv->name);
} else {
ret = platform_legacy_resume(dev);
}

return ret;
}


log:


<6>[   53.643766]
request_suspend_state: sleep (0->3) at 53636581667
(1970-01-02 08:21:01.108440452 UTC)
<6>[   53.651854] early_suspend: call handlers
<6>[   53.655669] early_suspend: calling ft5x06_ts_early_suspend
<6>[   53.663818] early_suspend: calling stop_drawing_early_suspend
<6>[   53.682527] early_suspend: calling kgsl_early_suspend_driver
<6>[   53.687166] early_suspend: calling msmfb_early_suspend
<6>[   53.748298] msm_hsic_host msm_hsic_host: HSIC-USB exited from low
power mode
<3>[   53.757271] mdp4_mixer_blend_setup: Error: no bg_pipe at mixer=0
<4>[   53.762276] mipi_sharp_lcd_off
<6>[   53.921562] mipi_dsi_lms_panel_power: on=0
<6>[   53.926171] early_suspend: calling msmfb_early_suspend
<6>[   53.930749] early_suspend: calling mdp_early_suspend
<3>[   53.935235] dtv_pipe is not configured yet
<6>[   53.951716] early_suspend: calling msmsdcc_early_suspend
<6>[   53.955989] early_suspend: calling msmsdcc_early_suspend
<6>[   53.961819] PM: Syncing filesystems...
<6>[   53.966061] sync done.
<6>[   53.967404] active wake lock msm_hsic_host
<6>[   53.971463] active wake lock PowerManagerService
<6>[   55.280024] msm_hsic_host msm_hsic_host: HSIC-USB in low power
mode
<6>[   55.425301] msm_hsic_host msm_hsic_host: HSIC-USB exited from low
power mode
<6>[   57.269342] msm_hsic_host msm_hsic_host: HSIC-USB in low power
mode
<6>[   58.209522] suspend: enter suspend
<6>[   58.211963] PM: suspend entry 1970-01-02 08:21:05.676635122 UTC
<6>[   58.217945] PM: Syncing filesystems...
<6>[   58.225911] sync done.
<6>[   58.227468] PM: Syncing filesystems...
<6>[   58.232992] sync done.
<4>[   58.234640] Freezing user space processes ... (elapsed 0.04
seconds) done.
<4>[   58.283076] Freezing remaining freezable tasks ... (elapsed 0.02
seconds) done.
<4>[   58.312711]
Suspending console(s) (use no_console_suspend to
debug)
<4>[   58.330901] platform_pm_suspend called name = diag_bridge
<4>[   58.331634] platform_pm_suspend called name = msm_hsic_host
<4>[   58.331725] platform_pm_suspend called name = DIAG
<4>[   58.331756] platform_pm_suspend called name = DIAG_CNTL
<4>[   58.331909] platform_pm_suspend called name = APPS_RIVA_DATA
<4>[   58.331970] platform_pm_suspend called name = APPS_RIVA_CTRL
<4>[   58.333984] platform_pm_suspend called name = soc-audio
<4>[   58.335876] PM_DEBUG_MXP:set max sleep time diff=1796.
<6>[   58.335907] msm_pm_set_max_sleep_time: Requested 1796000000000 ns
Giving 58852442 sclk ticks
<4>[   58.337494] platform_pm_suspend called name = tabla_codec
<4>[   58.338806] platform_pm_suspend called name = msm_fb
<4>[   58.338837] platform_pm_suspend called name = mdp
<6>[   58.338989] msm_fb_ext_suspend: Turning off HPD circuitry
<4>[   58.339203] platform_pm_suspend called name = msm_fb
<4>[   58.339264] platform_pm_suspend called name = mdp
<4>[   58.339294] platform_pm_suspend called name = dtv
<4>[   58.339417] platform_pm_suspend called name = msm_fb
<4>[   58.339447] platform_pm_suspend called name = mdp
<4>[   58.343506] tsl2771_suspend Called
<4>[   58.343842] platform_pm_suspend called name = gpio-keys
<4>[   58.344269] platform_pm_suspend called name = kgsl-3d
<4>[   58.344300] platform_pm_suspend called name = dtv
<4>[   58.344391] platform_pm_suspend called name = mdp
<4>[   58.344544] platform_pm_suspend called name = msm_fb
<4>[   58.345246] platform_pm_suspend called name = msm_serial_hsl
<4>[   58.345338] platform_pm_suspend called name = msm_slim_ctrl
<4>[   58.346528] platform_pm_suspend called name = msm_sdcc
<4>[   58.346589] platform_pm_suspend called name = msm_sdcc
<4>[   58.346680] platform_pm_suspend called name = qup_i2c
<4>[   58.346772] platform_pm_suspend called name = qup_i2c
<4>[   58.346864] platform_pm_suspend called name = qup_i2c
<4>[   58.346955] platform_pm_suspend called name = qup_i2c
<4>[   58.347047] platform_pm_suspend called name = tsens8960-tm
<4>[   58.347565] platform_pm_suspend called name = msm_vidc
<4>[   58.348695] platform_pm_suspend called name = msm_watchdog
<4>[   58.348817] platform_pm_suspend called name = wcnss_wlan
<4>[   58.348878] platform_pm_suspend called name = msm_hsusb_host
<4>[   58.348939] platform_pm_suspend called name = msm_otg
<4>[   58.349214] platform_pm_suspend called name = pm8xxx-vib
<4>[   58.349336] platform_pm_suspend called name = pm8xxx-tm
<4>[   58.349580] platform_pm_suspend called name = pm8xxx-adc
<4>[   58.349641] platform_pm_suspend called name = pm8921-charger
<4>[   58.349702] platform_pm_suspend called name = pm8xxx-pwrkey
<4>[   58.349763] platform_pm_suspend called name = rtc-pm8xxx
<4>[   58.350099] platform_pm_suspend called name = msm_dmov
<4>[   58.351045] platform_pm_suspend called name = power
<6>[   58.351472] PM: suspend of devices complete after 23.775 msecs
<6>[   58.355226] PM: late suspend of devices complete after 3.692 msecs
<6>[   58.363528]
power_suspend_late return 0
<6>[   58.363558] PM: noirq suspend of devices complete after 8.301
msecs
<4>[   58.363589] Disabling non-boot CPUs ...
<6>[   58.364474] msm_pm_enter
<6>[   58.364474] msm_pm_enter: power collapse
<6>[   58.364474] msm_mpm_irqs_detectable: cannot monitor
000000,00000000,00000000,00000000,00000000,00000020,00000000,00000000,00000000,00000000,00000000,00000000,00008000,00000000
<6>[   58.364474] msm_pm_enter: return
<6>[   58.371738] PM: noirq resume of devices complete after 6.470 msecs
<6>[   58.375064] wakeup wake lock: event2-624
<6>[   58.379337]
PM: early resume of devices complete after 3.905
msecs       //

<4>[   58.381748] platform_pm_resume called name = power
<4>[   58.382267] platform_pm_resume called name = msm_dmov
<4>[   58.382450] platform_pm_resume called name = rtc-pm8xxx
<4>[   58.382481] platform_pm_resume called name = pm8xxx-pwrkey
<4>[   58.382542] platform_pm_resume called name = pm8921-charger
<4>[   58.382572] platform_pm_resume called name = pm8xxx-adc
<4>[   58.382694] platform_pm_resume called name = pm8xxx-tm
<4>[   58.382755] platform_pm_resume called name = pm8xxx-vib
<4>[   58.382908] platform_pm_resume called name = msm_otg
<4>[   58.382939] platform_pm_resume called name = msm_hsusb_host
<4>[   58.383000] platform_pm_resume called name = wcnss_wlan
<4>[   58.383061] platform_pm_resume called name = msm_watchdog
<4>[   58.383732] platform_pm_resume called name = msm_vidc
<4>[   58.384037] platform_pm_resume called name = tsens8960-tm
<4>[   58.384129] platform_pm_resume called name = qup_i2c
<4>[   58.384190] platform_pm_resume called name = qup_i2c
<4>[   58.384251] platform_pm_resume called name = qup_i2c
<4>[   58.384312] platform_pm_resume called name = qup_i2c
<4>[   58.384373] platform_pm_resume called name = msm_sdcc
<4>[   58.384404] platform_pm_resume called name = msm_sdcc
<4>[   58.384434] platform_pm_resume called name = msm_slim_ctrl
<4>[   58.385319] platform_pm_resume called name = msm_serial_hsl
<4>[   58.385380] platform_pm_resume called name = msm_fb
<4>[   58.385472] platform_pm_resume called name = mdp
<4>[   58.385533] platform_pm_resume called name = dtv
<4>[   58.385594] platform_pm_resume called name = kgsl-3d
<4>[   58.385869] platform_pm_resume called name = gpio-keys
<4>[   58.386082] tsl2771_resume called
<4>[   58.388921] platform_pm_resume called name = mdp
<4>[   58.388951] platform_pm_resume called name = msm_fb
<4>[   58.389012] platform_pm_resume called name = dtv
<4>[   58.389043] platform_pm_resume called name = mdp
<6>[   58.389256] msm_fb_ext_resume: Turning on HPD circuitry
<4>[   58.389287] platform_pm_resume called name = msm_fb
<4>[   58.389378] platform_pm_resume called name = mdp
<4>[   58.389409] platform_pm_resume called name = msm_fb
<4>[   58.390172] platform_pm_resume called name = tabla_codec
<4>[   58.392675] platform_pm_resume called name = soc-audio
<4>[   58.393834] platform_pm_resume called name = APPS_RIVA_CTRL
<4>[   58.393865] platform_pm_resume called name = APPS_RIVA_DATA
<4>[   58.393987] platform_pm_resume called name = DIAG_CNTL
<4>[   58.394017] platform_pm_resume called name = DIAG
<4>[   58.394109] platform_pm_resume called name = msm_hsic_host
<4>[   58.395757] platform_pm_resume called name = diag_bridge
<6>[   58.396184]
PM: resume of devices complete after 16.836 msecs
<4>[   58.937524] PS/ALS power not enable
<4>[   58.940759] Restarting tasks ...
<4>[   58.960598] QSEECOM: qseecom_receive_req: Interrupted: exiting
wait_rcv_req loop
<3>[   58.967190] QSEECOM: qseecom_ioctl: failed qseecom_receive_req:
-512
<4>[   58.973630] QSEECOM: qseecom_receive_req: Interrupted: exiting
wait_rcv_req loop
<4>[   58.986967] done.
<3>[   58.991301] QSEECOM: qseecom_ioctl: failed qseecom_receive_req:
-512
<6>[   59.007294] PM: suspend exit 1970-01-02 08:21:08.615414069 UTC
<6>[   59.012482] suspend: exit suspend, ret = 0 (1970-01-02
08:21:08.620600665 UTC)
<6>[   59.145154] request_suspend_state: wakeup (3->0) at 59137427297
(1970-01-02 08:21:08.753199711 UTC)
<6>[   59.153425] late_resume: call handlers
<6>[   59.156966] late_resume: calling msmsdcc_late_resume
<6>[   59.170517] late_resume: calling msmsdcc_late_resume
<6>[   59.174576] late_resume: calling mdp_early_resume
<6>[   59.207569] late_resume: calling msmfb_early_resume
<6>[   59.215870] late_resume: calling msmfb_early_resume
<6>[   59.263787] mipi_dsi_lms_panel_power: on=1
<4>[   59.343323] mipi_sharp_lcd_on
<6>[   59.423164] msm_hsic_host msm_hsic_host: HSIC-USB exited from low
power mode
<6>[   59.478345] late_resume: calling kgsl_late_resume_driver
<6>[   59.482923] late_resume: calling start_drawing_late_resume
<6>[   59.494277] late_resume: calling ft5x06_ts_late_resume
<4>[   59.498702] Set RESET: 0
<4>[   59.552021] Set RESET: 1
<6>[   59.553547]
late_resume: done
<0>[   59.579551] ALS average: 28mipi_set_backlight  level =25.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android kernel devices睡眠唤醒调试 的相关文章

  • Qt控件在布局内(QFormLayout、QGridLayout等)的动态添加与删除

    项目场景 在项目开发过程中 比如报警信息的显示 如果将所有的报警信息都添加至布局内 再以控件隐藏与显示的方式进行报警 这种方法无疑是最简单的 但是如果报警种类过多 但往往需要显示的很少 在界面里面去一个个拖控件或者代码添加都太麻烦 这就需要
  • PMP常用英文术语缩写总结(文字版+表格版+图片版)

    PMP常用英文术语缩写总结 文字版 表格版 图片版 文字版 PMBOK Project Management Body of Knowledge 项目管理知识体系 PMI Project Management Institute 项目管理协
  • 数据结构--图的应用--最短路径

    最短路径 两种常见的最短路径问题 一 单源最短路径 用Dijistra迪杰斯特拉 算法 二 所有顶点间的最短路径 用Floyd 弗洛伊德 算法 Dijistra算法 1 初始化 先找出从源点v0到各终点Vk的的直达路径 V0 Vk 即通过一
  • 【element-plus】icon在菜单的使用(二)

    前言 之前觉得升级的icon不好使用是以为不能动态的设置图标 现在发现我错了 升级后的icon同样能满足之前的需求 本篇主要说明一下配置菜单时如何使用icon 一 下载依赖包 因为动态引入的icon随时都会调整 所以之前引入所有的icon最
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】VLAN资源池

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 VLAN资源池 知识点数组字符串 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 VLAN是一种对局域网设备进行逻辑划分的技术 为了标识不同的VLAN 引入VLAN I
  • C++字符串 处理函数合集

    本博客的内容源自 数据结构 用面向对象方法与C 描述 第二版 的内容 章节4 4 在阅读原文的情况下整理得出的读书笔记 均写在代码的注释中 供大家参考 include
  • HDF5 windows编译 release版本、Debug版本

    由于最近急需的一个项目 需要hdf5库 误打误撞 编译成功 特此记录 1 下载源代码 官网下载地址 https portal hdfgroup org display support HDF5 1 12 2 files 找到如下地址 本人电
  • 设计模式 -- Adapter 适配器模式

    转自 http blog csdn net joyney article details 4000818 以下内容是我和小组的兄弟学习设计模式我做的课件 我整理出来和大家分享 有不妥之处敬请指出 上次做的桥接模式 Bridge 这次是适配器
  • 小程序wxs使用教程

    1 什么是wxs wxs是小程序的一种脚本语言 它类似JavaScript 但是与JavaScript有所不同 wxs是一种数据绑定和逻辑处理的语言 它可以在wxml中使用 并且可以在wxml中直接调用 使用wxs可以实现更高效 更灵活的数
  • Games101,Lecture 13(光线与物体求交,引入包围盒)

    光线追踪 光线追踪更多的用于离线应用 因为一帧一般需要一万个CPU小时 原理 由摄像机发出感应光线 判断与物体相交的点是否可以与 光源连线 无遮挡物 如何判断光线与物体有交点 是管线追踪中较难的部分 光线与物体求交 1 与隐式表示的曲面求交
  • RabbitMQ 端口详解

    4369 epmd 25672 Erlang distribution Epmd 是 Erlang Port Mapper Daemon 的缩写 在 Erlang 集群中相当于 dns 的作用 绑定在4369端口上 5672 5671 AM
  • c++ 定时器_「STM32」定时器中断实验

    在上一篇文章中 STM32 定时器概述 中 定时器可以被人为分为4个大部分 时钟发生器 实际模块 输入捕获 输出比较 而定时器中断实验 我们更多的在操作时钟发射器这个模块 这个应用也是定时器最基本的应用了 时钟选择 内部时钟选择 时钟计算方
  • SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明

    转自 SpringBoot使用 JsonDeserialize和 JsonSerialize注解的功能简介说明 下文笔者讲述 JsonDeserialize和 JsonSerialize注解的功能简介说明 SpringMVC 在Spring
  • 【SQL基础】【关键字大写】条件查询:比较、不等于、IN、为空、BETWEEN

    概述 1 内容介绍 条件查询 比较 不等于 IN 为空 BETWEEN 2 建表语句 drop table if exists user profile CREATE TABLE user profile id int NOT NULL d
  • 使用 vite 代替 webpack 搭建 react 前端开发环境

    说明 在大型前端项目中 我们一般会使用 webpack Rollup 等工具进行模块整合 但是庞大的代码量会使得我们在开发阶段花费更多的时间在 代码改动 gt 页面渲染 这个阶段 即使使用 HMR 这个问题也没有完全的解决 项目代码量达到一
  • plsql链接服务器无响应,sqlplus 连接数据库无响应

    一批三台安装服务器 先后出现了sqlplus 连接数据库无响应问题 1 因为几乎同一时间出现问题 起初怀疑是网络组对网络有整体调整 后经过确认网络组有调整 但不影响我们的服务器 2 telnet server 1521端口正常响应 3 从终
  • 深度解析,抖音对口型唱歌类短视频内容制作流程,步骤技巧分享

    就像之前分享的信息差案例一样 任何时候都有信息差 但是还有一种叫认知差 就是认知高的人赚认知低的人的钱 不是有句话很火吗 你永远也赚不到认知以外的钱 更多精彩干货请关注共众号 萤火宠 你的认知很高 可以高客单价赚高认知人群的钱 但是也有些人

随机推荐

  • 图形学-改进的Bresenham算法

    图形学 改进的Bresenham算法 原理 代码 原理 虽然中点Bresenham算法是一种效率很高的算法 但也还有改进的余地 当然 其基本原理仍是每次在最大位移方向上走一步 而另一个方向上走还是不走取决于误差项的判断 根据中点Bresen
  • JSP和JavaBean

    8 JSP 8 1 什么是JSP Java Servlet Pages java服务器端页面 也和Servlet一样 用于实现动态Web技术 最大特点 写JSP就像是写HTML 区别 HTML只给用户提供静态的数据 JSP页面中可以嵌入Ja
  • 智慧政务行业发展报告

    转自微信公众号 智慧城市圈子邱文斌 一 智慧政务行业发展状况 从上个世纪90年代开始 政府信息化的建设就开始围绕 通 进行 而现今正逐渐过渡到 云 的建设 从网络的连通 数据的整合 到云的出现与整合 政府信息化的建设是一个漫长而又快速发展的
  • element-ui 实现多日期选择

    一 前端代码
  • Spring 多线程异步上传图片、处理水印、缩略图

    使用环境 SpringBoot FastDfs thumbnailator fdfs环境自己搞吧 thumbnailator maven依赖
  • C++中引用的用法以及将引用作为函数的形参

    在C 中引用就相当于是给变量起了一个别名 有点类似于指针 但是与指针又不同 引用的初始化 int i i 10 变量i的引用 引用必须在创建的时候就要初始化 而指针可以在任意的时候初始化 引用就相当于是给变量起了一个别名 int i r i
  • HTML基本结构

    HTML一般是在vscod中进行书写 后缀为html 其完整的基本结构如下 h1 一级标题 h1 每一个尖括号 lt gt 代表着标签或者说是元素 不同的标签代表有着不同的作用 标签一般成对出现后一个标签为前一个标签加一个 例如 但也有单个
  • 基于巴法云的esp8266实现温湿度、LED、sg90舵机和HC-RS04实现的小程序远程控制

    基于巴法云的esp8266实现温湿度 LED sg90舵机和HC RS04实现的小程序远程控制 具体代码 本项目想法已经在我脑海想了很久了 都没有时间去实现它 这次刚刚考完试就用了两天把它做了出来 希望对大家有帮助 有什么需要的可以在下面留
  • upload-labs:pass-10

    is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array php php5 php4 php3 php2 html htm
  • 工厂三兄弟之工厂方法模式(四)

    5 重载的工厂方法 Sunny公司开发人员通过进一步分析 发现可以通过多种方式来初始化日志记录器 例如可以为各种日志记录器提供默认实现 还可以为数据库日志记录器提供数据库连接字符串 为文件日志记录器提供文件路径 也可以将参数封装在一个Obj
  • Puppeteer 安装与注意事项 《一》

    Puppeteer 安装与注意事项 1 安装node js 在使用puppeteer的时候 它一些低版本的node是不支持的 作者推荐使用8以上的版本 否则node在后面使用puppeteer的时候会 抛出 SyntaxError Unex
  • 从外部验证安全密码存储

    许多网站 包括 Adobe Yahoo LinkedIn Gawker等大型网站 不安全地存储用户密码 可以是纯文本格式的 也可以是加密的 可逆的 格式 或者是使用残破或蛮力的哈希函数 许多网站的密码存储机制仍然很差 所以呢 好吧 如果数据
  • js生成柱状图

  • 内存泄露的检测方法

    本文来自http blog csdn net lijun84 引用必须注明出处 在谈及内存泄漏时 对于没有太多经验的新人来说总是很头疼的一件事 因为如果项目早期没有将其纳入代码框架 后期部署上线之后 仅从进程 crash 的 dump 很难
  • openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句

    文章目录 openGauss学习笔记 36 openGauss 高级数据管理 TRUNCATE TABLE语句 36 1 语法格式 36 2 参数说明 36 3 示例 openGauss学习笔记 36 openGauss 高级数据管理 TR
  • Docker部署Emqx并配置ssl支持微信小程序

    1 端口介绍 1883 MQTT 协议端口 8084 MQTT SSL 端口 8083 MQTT WebSocket 端口 8080 HTTP API 端口 18083 Dashboard 管理控制台端口 2 拉取镜像 docker pul
  • 算法与数据结构—LeetCode刷题笔记

    算法刷题笔记 一 动态规划 53 最大子序和 300 最长上升子序列 70 爬楼梯 242 有效的字母异位词 463 岛屿的周长 文章与视频资源多平台更新 微信公众号 知乎 B站 头条 AI研习图书馆 一 动态规划 53 最大子序和 典型的
  • js执行时序 宏任务和微任务

    宏任务一般是 包括整体代码script setTimeout setInterval I O UI render 微任务主要是 Promise Object observe MutationObserver process nextTick
  • 【MySQL高性能】MyCat 2.分片策略以及原理分析

    简介 数据库分片可以把他理解成分库 将一张表拆分到多个数据库中 通常是在表数据大的情况进行拆分 根据InnerDB索引原理 主键索引类型bigint计算得出一张表达到2千万就需要进行拆分了 当然也需要提前做好拆分 数据量大查询效率会慢 阿里
  • android kernel devices睡眠唤醒调试

    主要是在kernel添加关键log 获取有用信息 可以调试suspend resume earlysuspend lateresume等方面的问题 如哪一过程时间过长 跟踪log才可以很好定位问题 解决问题 1 early suspend