QCOM平台子系统通过AP处理异常
2015-08-20 17:16
801 查看
子系统发生异常时,是如何通过中断通知AP主系统?
AP主系统在kernel代码中subsystem_restart.c 提供子系统中断注册接口:subsys_register。
比如,为modem子系统注意异常中断注册:
static int pil_subsys_init(struct modem_data *drv,
struct platform_device *pdev)
{
int ret;
drv->subsys_desc.name = "modem";
drv->subsys_desc.dev = &pdev->dev;
drv->subsys_desc.owner = THIS_MODULE;
drv->subsys_desc.shutdown = modem_shutdown;
drv->subsys_desc.powerup = modem_powerup;
drv->subsys_desc.ramdump = modem_ramdump;
drv->subsys_desc.crash_shutdown = modem_crash_shutdown;
drv->subsys_desc.err_fatal_handler = modem_err_fatal_intr_handler;
drv->subsys_desc.stop_ack_handler = modem_stop_ack_intr_handler;
drv->subsys_desc.wdog_bite_handler = modem_wdog_bite_intr_handler;
drv->subsys = subsys_register(&drv->subsys_desc);
子系统异常中断发生时,AP主系统相应的irq handler被调用。
异常中断重启,分为两个级别:
static const char * const restart_levels[] = { (subsystem_restart.c )
[RESET_SOC] = "SYSTEM",
[RESET_SUBSYS_COUPLED] = "RELATED",
};
处理级别,可能过restart_level_store函数提供的sys接口修改,比如:
write /sys/module/msm_poweroff/parameters/emergent_restart 1
write /sys/module/msm_poweroff/parameters/download_mode 1
write /sys/bus/msm_subsys/devices/subsys0/restart_level system
write /sys/bus/msm_subsys/devices/subsys1/restart_level system
write /sys/bus/msm_subsys/devices/subsys2/restart_level related
/proprietary/ss-restart/subsystem_ramdump/subsystem_ramdump.c
qcom/common/rootdir/etc/init.qcom.rc:service ss_ramdump /system/bin/subsystem_ramdump
这个service启动后会收集子系统的 ramdumps and logs .
AP主系统在kernel代码中subsystem_restart.c 提供子系统中断注册接口:subsys_register。
比如,为modem子系统注意异常中断注册:
static int pil_subsys_init(struct modem_data *drv,
struct platform_device *pdev)
{
int ret;
drv->subsys_desc.name = "modem";
drv->subsys_desc.dev = &pdev->dev;
drv->subsys_desc.owner = THIS_MODULE;
drv->subsys_desc.shutdown = modem_shutdown;
drv->subsys_desc.powerup = modem_powerup;
drv->subsys_desc.ramdump = modem_ramdump;
drv->subsys_desc.crash_shutdown = modem_crash_shutdown;
drv->subsys_desc.err_fatal_handler = modem_err_fatal_intr_handler;
drv->subsys_desc.stop_ack_handler = modem_stop_ack_intr_handler;
drv->subsys_desc.wdog_bite_handler = modem_wdog_bite_intr_handler;
drv->subsys = subsys_register(&drv->subsys_desc);
子系统异常中断发生时,AP主系统相应的irq handler被调用。
异常中断重启,分为两个级别:
static const char * const restart_levels[] = { (subsystem_restart.c )
[RESET_SOC] = "SYSTEM",
[RESET_SUBSYS_COUPLED] = "RELATED",
};
处理级别,可能过restart_level_store函数提供的sys接口修改,比如:
write /sys/module/msm_poweroff/parameters/emergent_restart 1
write /sys/module/msm_poweroff/parameters/download_mode 1
write /sys/bus/msm_subsys/devices/subsys0/restart_level system
write /sys/bus/msm_subsys/devices/subsys1/restart_level system
write /sys/bus/msm_subsys/devices/subsys2/restart_level related
/proprietary/ss-restart/subsystem_ramdump/subsystem_ramdump.c
qcom/common/rootdir/etc/init.qcom.rc:service ss_ramdump /system/bin/subsystem_ramdump
这个service启动后会收集子系统的 ramdumps and logs .
相关文章推荐
- UVA 529 Addition Chains
- SQLServer索引的四个高级特性
- HDU 5411 CRB and Puzzle
- Android中几种关闭Activity或app的方法
- Linux命令more
- Android开发最佳实践
- git常用命令
- Spring AOP框架学习笔记(2):AOP拦截器调用的实现
- 项目计划
- ps联盟视频教学
- Windows 10企业批量部署实战之自动化rules设置
- Windows 10企业批量部署实战之自动化rules设置
- 黑马程序员-oc内存管理(Q)
- DOM(二)-12-(示例-表格排序)
- 迭代算法求sinx的值
- opencv 学习笔记-入门(21)之三线性插值-hog(二)
- android studio快捷键大全
- 高性能计算机传奇(vamei)
- CUDA的cublas 和 Intel的MKL 矩阵运算对比
- 深度学习模型之各种caffe版本(Linux和windows)的网址和配置