• Alexander Gordeev's avatar
    PCI/MSI: Add pci_enable_msi_range() and pci_enable_msix_range() · 302a2523
    Alexander Gordeev authored
    This adds pci_enable_msi_range(), which supersedes the pci_enable_msi()
    and pci_enable_msi_block() MSI interfaces.
    
    It also adds pci_enable_msix_range(), which supersedes the
    pci_enable_msix() MSI-X interface.
    
    The old interfaces have three categories of return values:
    
        negative: failure; caller should not retry
        positive: failure; value indicates number of interrupts that *could*
    	have been allocated, and caller may retry with a smaller request
        zero: success; at least as many interrupts allocated as requested
    
    It is error-prone to handle these three cases correctly in drivers.
    
    The new functions return either a negative error code or a number of
    successfully allocated MSI/MSI-X interrupts, which is expected to lead to
    clearer device driver code.
    
    pci_enable_msi(), pci_enable_msi_block() and pci_enable_msix() still exist
    unchanged, but are deprecated and may be removed after callers are updated.
    
    [bhelgaas: tweak changelog]
    Suggested-by: default avatarBen Hutchings <bhutchings@solarflare.com>
    Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarTejun Heo <tj@kernel.org>
    302a2523
msi.c 30.1 KB