The introduce of FEAT_NMI/FEAT_GICv3_NMI will cause a race problem that
we may handle the normal interrupt in interrupt disabled context due to
the withdraw of NMI interrupt. The flow will be like below:
[interrupt disabled]
<- normal interrupt pending, for example timer interrupt
<- NMI occurs, ISR_EL1.nmi = 1
do_el1_interrupt()
<- NMI withdraw, ISR_EL1.nmi = 0
ISR_EL1.nmi = 0, not an NMI interrupt
gic_handle_irq()
__gic_handle_irq_from_irqson()
irqnr = gic_read_iar() <- Oops, ack and handle an normal interrupt
in interrupt disabled context!
Fix this by checking the interrupt status in __gic_handle_irq_from_irqson()
and ignore the interrupt if we're in interrupt disabled context.
Fixes: 0408b5bc4300 ("irqchip/gic-v3: Implement FEAT_GICv3_NMI support")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论