• Guilherme G. Piccoli's avatar
    PCI: Make pci_msi_setup_pci_dev() non-static for use by arch code · 22b6839b
    Guilherme G. Piccoli authored
    Commit 1851617c ("PCI/MSI: Disable MSI at enumeration even if kernel
    doesn't support MSI") changed the location of the code that initialises
    dev->msi_cap/msix_cap and then disables MSI/MSI-X interrupts at PCI
    probe time in devices that have this flag set. It moved the code from
    pci_msi_init_pci_dev() to a new function named pci_msi_setup_pci_dev(),
    called by pci_setup_device().
    
    The pseries PCI probing code does not call pci_setup_device(), so since
    the aforementioned commit the function pci_msi_setup_pci_dev() is not
    called and MSI/MSI-X interrupts are left enabled. Additionally because
    dev->msi_cap/msix_cap are not initialised no driver can ever enable
    MSI/MSI-X.
    
    To fix this, the pseries PCI probe should manually call
    pci_msi_setup_pci_dev(), so this patch makes it non-static.
    
    Fixes: 1851617c ("PCI/MSI: Disable MSI at enumeration even if kernel doesn't support MSI")
    [mpe: Update change log to mention dev->msi_cap/msix_cap]
    Signed-off-by: default avatarGuilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    22b6839b
probe.c 57.8 KB