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 include (1 of 2 files). Show all
Unified · Split
| @@ -1202,6 +1202,7 @@ struct msix_entry { · 1201 unmodified lines | ||
| 1202 | 1202 | u16 entry; /* driver uses to specify entry, OS writes */ |
| 1203 | 1203 | }; |
| 1204 | 1204 | |
| 1205 | +void pci_msi_setup_pci_dev(struct pci_dev *dev); | |
| 1205 | 1206 | |
| 1206 | 1207 | #ifdef CONFIG_PCI_MSI |
| 1207 | 1208 | int pci_msi_vec_count(struct pci_dev *dev); |