OSDN Git Service

PCI: Make pci_msi_setup_pci_dev() non-static for use by arch code
authorGuilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Mon, 24 Aug 2015 12:42:46 +0000 (22:42 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 26 Aug 2015 11:40:49 +0000 (21:40 +1000)
commit22b6839b914bbe5d94de11bbb83931952090719c
tree1c6a83218ddf1d09d2acdc70795bd236cd994102
parentc13dcf9f2d6f5f06ef1bf79ec456df614c5e058b
PCI: Make pci_msi_setup_pci_dev() non-static for use by arch code

Commit 1851617cd2da ("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: 1851617cd2da ("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: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
drivers/pci/probe.c
include/linux/pci.h