我陷入了一个问题,我正在解决这个问题__报告坏中断调用堆栈不一致。
AFAIK,每当我们有 100000 个未处理的中断时,这个堆栈就会启动。
cat /proc/irq/128/spurious 在指定时间的输出
计数 99343
未处理 98981
last_unhandled 7983944 毫秒
——几分钟后——
计数 212
未处理 212
最后未处理 7985960 毫秒
count 给出了 IRQ 激发的总次数,以 100,000 为模,但是,为什么这个特定的 irq 在其计数达到 100,000 时没有被禁用。
答案1
如果之前 100,000 个中断中的 99,900 个尚未处理,我们就会触发 bad_irq 堆栈。其他 100,000 个中断中的 100 个可能是功能正常的设备,与故障设备共享 IRQ。因此,禁用 irq 时未处理的 99,900 个是偶然的,即使未处理总数为 99,000 并且总计数达到 100,000,IRq 也不会被禁用。