All patches change *something*. Can you update the subject line so it
says something specific about the change?
Maybe something like "Clear MSI status before dispatching handler"?
On Sun, Jan 23, 2022 at 11:33:06AM +0800, qizhong cheng wrote:
As an edge-triggered interrupts, its interrupt status should be cleared
before dispatch to the handler of device.
I'm not an IRQ expert, but the reasoning that "we should clear the MSI
interrupt status before dispatching the handler because MSI is an
edge-triggered interrupt" doesn't seem completely convincing because
your code will now look like this:
/* Clear the INTx */
writel(1 << bit, port->base + PCIE_INT_STATUS);
generic_handle_domain_irq(port->irq_domain, bit - INTX_SHIFT);
...
/* Clear MSI interrupt status */
writel(MSI_STATUS, port->base + PCIE_INT_STATUS);
generic_handle_domain_irq(port->inner_domain, bit);
You clear interrupt status before dispatching the handler for *both*
level-triggered INTx interrupts and edge-triggered MSI interrupts.
So it doesn't seem that simply being edge-triggered is the critical
factor here.