Linux死锁调试之hardlockup

本文详细探讨了在Linux 3.0.35内核版本中遇到的hardlockup问题,深入分析了死锁的原因,并提供了相应的调试方法。通过对系统日志和watchdog机制的分析,读者可以了解到如何有效地定位和解决这类问题。
摘要由CSDN通过智能技术生成

Kernel branch: 3.0.35


概要:

hardlockup用于检测进入中断之后导致死锁的情况。

原理:
利用了NMI(非屏蔽中断)不能被屏蔽的特性,也就是说系统即使中断死锁后NMI也能被触发。
如果中断正常,hrtimer会定期被调用而去更新计数变量hrtimer_interrupts, 而NMI中断函数后
也会定期判断此值有没有变化,如果没有变化说明中断已经死掉。


code流程:
和watchdog.c公用一个文件,两个功能融合在一起,
lockup_detector_init ->    //watchdog.c
    cpu_callback ->    //action CPU_UP_PREPARE
        watchdog_prepare_cpu ->    //hrtimer对应function是watchdog_timer_fn
    cpu_callback ->
        watchdog_enable ->
            watchdog_nmi_enable     ->    //这里会开启nmi
              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值