__report_bad_irq 没有被命中

__report_bad_irq 没有被命中

我陷入了一个问题,我正在解决这个问题__报告坏中断调用堆栈不一致。

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 也不会被禁用。

相关内容