Skip to content
Snippets Groups Projects
  • Thomas Gleixner's avatar
    genirq/msi, x86/vector: Prevent reservation mode for non maskable MSI · bc976233
    Thomas Gleixner authored
    The new reservation mode for interrupts assigns a dummy vector when the
    interrupt is allocated and assigns a real vector when the interrupt is
    requested. The reservation mode prevents vector pressure when devices with
    a large amount of queues/interrupts are initialized, but only a minimal
    subset of those queues/interrupts is actually used.
    
    This mode has an issue with MSI interrupts which cannot be masked. If the
    driver is not careful or the hardware emits an interrupt before the device
    irq is requestd by the driver then the interrupt ends up on the dummy
    vector as a spurious interrupt which can cause malfunction of the device or
    in the worst case a lockup of the machine.
    
    Change the logic for the reservation mode so that the early activation of
    MSI interrupts checks whether:
    
     - the device is a PCI/MSI device
     - the reservation mode of the underlying irqdomain is activated
     - PCI/MSI masking is globally enabled
     - the PCI/MSI device us...
    bc976233