最近遇到一例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,安抚一下那只狗狗。