未关中断情况下的hardlock

最近遇到一例crash,3.10内核,hardlock,查看对应的堆栈,中断是使能的。

查看对应的hrtimer_interrupts和hrtimer_interrupt_save的值,发现确实相等。

具体可参考:

百思不得其解,然后咨询os的同事茂春兄,然后他很轻描淡写第说,他遇到过,并随手给了个链接:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/kernel/watchdog.c?id=7edaeb6841dfb27e362288ab8466ebdc4972e867

你看,多个兄弟多么关键,搞内核,永远不要一个人战斗。

另外,顺带看了一下touch_nmi_watchdog的用法,比如为了避免在printk的时候,遇到nmi,nmi中有可能调用printk,这样就非递归情况下变成死锁了,

那么printk调用一下touch_nmi_watchdog,安抚一下那只狗狗。

原文地址:https://www.cnblogs.com/10087622blog/p/11728836.html