Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pci-v5.1-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci

Pull PCI fixes from Bjorn Helgaas:
"I apologize for sending these so late in the cycle. We went back and
forth about how to deal with the unexpected logging of intentional
link state changes and finally decided to just config them off by
default.

PCI fixes:

- Stop ignoring "pci=disable_acs_redir" parameter (Logan Gunthorpe)

- Use shared MSI/MSI-X vector for Link Bandwidth Management (Alex
Williamson)

- Add Kconfig option for Link Bandwidth notification messages (Keith
Busch)"

* tag 'pci-v5.1-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
PCI/LINK: Add Kconfig option (default off)
PCI/portdrv: Use shared MSI/MSI-X vector for Bandwidth Management
PCI: Fix issue with "pci=disable_acs_redir" parameter being ignored

+32 -4
+17 -2
drivers/pci/pci.c
··· 6262 6262 } else if (!strncmp(str, "pcie_scan_all", 13)) { 6263 6263 pci_add_flags(PCI_SCAN_ALL_PCIE_DEVS); 6264 6264 } else if (!strncmp(str, "disable_acs_redir=", 18)) { 6265 - disable_acs_redir_param = 6266 - kstrdup(str + 18, GFP_KERNEL); 6265 + disable_acs_redir_param = str + 18; 6267 6266 } else { 6268 6267 printk(KERN_ERR "PCI: Unknown option `%s'\n", 6269 6268 str); ··· 6273 6274 return 0; 6274 6275 } 6275 6276 early_param("pci", pci_setup); 6277 + 6278 + /* 6279 + * 'disable_acs_redir_param' is initialized in pci_setup(), above, to point 6280 + * to data in the __initdata section which will be freed after the init 6281 + * sequence is complete. We can't allocate memory in pci_setup() because some 6282 + * architectures do not have any memory allocation service available during 6283 + * an early_param() call. So we allocate memory and copy the variable here 6284 + * before the init section is freed. 6285 + */ 6286 + static int __init pci_realloc_setup_params(void) 6287 + { 6288 + disable_acs_redir_param = kstrdup(disable_acs_redir_param, GFP_KERNEL); 6289 + 6290 + return 0; 6291 + } 6292 + pure_initcall(pci_realloc_setup_params);
+8
drivers/pci/pcie/Kconfig
··· 142 142 143 143 This is only useful if you have devices that support PTM, but it 144 144 is safe to enable even if you don't. 145 + 146 + config PCIE_BW 147 + bool "PCI Express Bandwidth Change Notification" 148 + depends on PCIEPORTBUS 149 + help 150 + This enables PCI Express Bandwidth Change Notification. If 151 + you know link width or rate changes occur only to correct 152 + unreliable links, you may answer Y.
+1 -1
drivers/pci/pcie/Makefile
··· 3 3 # Makefile for PCI Express features and port driver 4 4 5 5 pcieportdrv-y := portdrv_core.o portdrv_pci.o err.o 6 - pcieportdrv-y += bw_notification.o 7 6 8 7 obj-$(CONFIG_PCIEPORTBUS) += pcieportdrv.o 9 8 ··· 12 13 obj-$(CONFIG_PCIE_PME) += pme.o 13 14 obj-$(CONFIG_PCIE_DPC) += dpc.o 14 15 obj-$(CONFIG_PCIE_PTM) += ptm.o 16 + obj-$(CONFIG_PCIE_BW) += bw_notification.o
+4
drivers/pci/pcie/portdrv.h
··· 49 49 static inline int pcie_dpc_init(void) { return 0; } 50 50 #endif 51 51 52 + #ifdef CONFIG_PCIE_BW 52 53 int pcie_bandwidth_notification_init(void); 54 + #else 55 + static inline int pcie_bandwidth_notification_init(void) { return 0; } 56 + #endif 53 57 54 58 /* Port Type */ 55 59 #define PCIE_ANY_PORT (~0)
+2 -1
drivers/pci/pcie/portdrv_core.c
··· 55 55 * 7.8.2, 7.10.10, 7.31.2. 56 56 */ 57 57 58 - if (mask & (PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP)) { 58 + if (mask & (PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP | 59 + PCIE_PORT_SERVICE_BWNOTIF)) { 59 60 pcie_capability_read_word(dev, PCI_EXP_FLAGS, &reg16); 60 61 *pme = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9; 61 62 nvec = *pme + 1;