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.
Showing the changes to drivers (1 of 2 files). Show all
Unified · Split
| @@ -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 | ||
| 1111 | static void pci_msi_setup_pci_dev(struct pci_dev *dev) | 1111 | void pci_msi_setup_pci_dev(struct pci_dev *dev) |
| 1112 | { | 1112 | { |
| 1113 | /* | 1113 | /* |
| 1114 | * Disable the MSI hardware to avoid screaming interrupts | 1114 | * Disable the MSI hardware to avoid screaming interrupts |