+22
−0
Loading
Merge Pull Request from: @liujie-248683921 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: 0408b5bc ("irqchip/gic-v3: Implement FEAT_GICv3_NMI support") Link:https://gitee.com/openeuler/kernel/pulls/7537 Reviewed-by:Zhang Peng <zhangpeng362@huawei.com> Signed-off-by:
Zhang Peng <zhangpeng362@huawei.com>