qcom 平台 Kernel Panic log 的保存

这个功能的实现是同事完成的。我阅读了他的代码后,整理了文档。

基本思路

  1. 注册panic notifier callback,当发生panic时,触发panic处理函数。
  2. 获取一块连续的内存,用于保存panic console,thread log。
    不使用文件系统,以防止是由于文件系统导致的系统panic。
  3. 系统触发warm reset,由于不掉电,内存信息得以保持 。
  4. qcom平台会在sbl中通过boot_sahara_entry, 进入ramdump模式保存发生系统crash时的ram。
    可以在此之前,将内存中保存的panic再次保存起来,此时由于文件系统没有准备好,所以可以添加一个
    分区专门用来保存panic中的信息。
  5. 系统重新启动后,可以读取panic分区中的信息,如果有panic信息,自动读取并生成文件到文件系统中
  6. 这时就可以读取log,分析问题了。

代码实现

1 . kernel 代码添加
注册panic notifier callback,可以参考msm-poweroff.c中关于记录restart_reason的实现

  • device_initcall(panic_handler_init);
    注册一个initcall
  • atomic_notifier_chain_register(&panic_notifier_list, &panic_blk);
    注册panic发生时的回调函数
  • drv_ctx.apanic_log = (void *)__get_f
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值