History

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.

Guilherme G. Piccoli committed 11 years ago

Commit 22b68391 parent c13dcf92 files · +2 −1Browse files

Unified · Split

2 files
  1. drivers/pci/probe.c +1 −1
  2. include/linux/pci.h +1 −0
drivers/pci/probe.c+1−1
@@ -1108,7 +1108,7 @@ int pci_cfg_space_size(struct pci_dev *dev) · 1107 unmodified lines
1108 1108
1109#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)1109#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
1110 1110
1111static void pci_msi_setup_pci_dev(struct pci_dev *dev)1111void pci_msi_setup_pci_dev(struct pci_dev *dev)
1112{1112{
1113 /*1113 /*
1114 * Disable the MSI hardware to avoid screaming interrupts1114 * Disable the MSI hardware to avoid screaming interrupts
include/linux/pci.h+1−0
@@ -1202,6 +1202,7 @@ struct msix_entry { · 1201 unmodified lines
1202 u16 entry; /* driver uses to specify entry, OS writes */1202 u16 entry; /* driver uses to specify entry, OS writes */
1203};1203};
1204 1204
1205void pci_msi_setup_pci_dev(struct pci_dev *dev);
1205 1206
1206#ifdef CONFIG_PCI_MSI1207#ifdef CONFIG_PCI_MSI
1207int pci_msi_vec_count(struct pci_dev *dev);1208int pci_msi_vec_count(struct pci_dev *dev);