genirq - interrupt during MSI creation hangs the machine

From: Tal Abudi
Date: Sat Feb 21 2015 - 06:16:09 EST


Hi All

I'm back-porting the genirq patch series to my Linux 2.6.18.
After insmod'ing ixgbe driver with MQ enabled my machine hangs and I'm
unable to enter KDB.
I instrumented the MSIX and ixgbe drivers and found something strange.
The driver calls pci_enable_msix(with 41 vectors) ->
msix_capability_init() creates allocates msi descriptors and assign
each an IRQ.

An interrupt request occurs on IRQ 86 on a different CPU while it's
being created and handle_edge_irq() is being called.
The IRQ_DISABLED flag is set so the edge handle masks and acks the interupt.
This sometimes hand the machine and sometimes BUG_ON it.
(mask_MSI_irq() -> msi_set_mask_bit(), is null since we are in the
middle of msi creation process).

This issue only happens when I load the driver with more than 1 MQ
interfaces (nvec is >2 in those cases).

Which mechanism should prevent this situations ?
Why it always happens on the same IRQ ?
Did I miss any genirq patch ?

Thank you so much !

--
Best regards,
Tal Abudi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/