1、内核kmsg打印分析deep sleep abort reson:
Abort: Callback failed on alarmtimer.0.auto in
2、发现已经注册了alarmtimer
console:/sys/class/rtc/rtc0 # ls -l
total 0
drwxr-xr-x 3 root root 0 2022-11-14 15:28 alarmtimer.0.auto
3、通过内核源码查找 grep -rn "d\.auto"
drivers/base/platform.c:506: dev_set_name(&pdev->dev, "%s.%d.auto", pdev->name, pdev->id);
也就是说注册驱动用PLATFORM_DEVID_AUTO
4、查找注册相关PLATFORM_DEVID_AUTO代码如下
kernel/time/alarmtimer.c:104: PLATFORM_DEVID_AUTO, NULL, 0);
5、kernel5.4 & kernel4.14差异对比
6、最终发现了是kernel modem driver注册了大量定时器timer_setup