• Alexander Gordeev's avatar
    x86/MSI: Conserve interrupt resources when using multiple-MSIs · 5fec9451
    Alexander Gordeev authored
    Current multiple-MSI implementation does not take into account actual
    number of requested MSIs and always rounds that number to a larger
    power-of-two value.  Yet, the number of MSIs a PCI device could send (and
    therefore the number of messages a device driver could request) may be
    smaller.  As result, resources allocated for extra MSIs are just wasted.
    
    This update takes advantage of 'msi_desc::nvec_used' field introduced with
    generic MSI code to track the number of requested and used MSIs.  As
    result, resources associated with interrupts are conserved.  Of those
    resources most noticeable are x86 interrupt vectors.
    
    The initial version of this fix also conserved IRTEs, but Jan noticed that
    a malfunctioning PCI device might send a message number it did not claim
    and thus refer to an IRTE it does not own.  To avoid this security hole,
    as many IRTEs are reserved as the device could possibly send.
    
    [bhelgaas: changelog, rename to "nvec_used"]
    Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    5fec9451
irq_remapping.c 8.57 KB