Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7a5b22b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents e2a4b102 2078e1e7
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -6262,8 +6262,7 @@ static int __init pci_setup(char *str)
			} else if (!strncmp(str, "pcie_scan_all", 13)) {
				pci_add_flags(PCI_SCAN_ALL_PCIE_DEVS);
			} else if (!strncmp(str, "disable_acs_redir=", 18)) {
				disable_acs_redir_param =
					kstrdup(str + 18, GFP_KERNEL);
				disable_acs_redir_param = str + 18;
			} else {
				printk(KERN_ERR "PCI: Unknown option `%s'\n",
						str);
@@ -6274,3 +6273,19 @@ static int __init pci_setup(char *str)
	return 0;
}
early_param("pci", pci_setup);

/*
 * 'disable_acs_redir_param' is initialized in pci_setup(), above, to point
 * to data in the __initdata section which will be freed after the init
 * sequence is complete. We can't allocate memory in pci_setup() because some
 * architectures do not have any memory allocation service available during
 * an early_param() call. So we allocate memory and copy the variable here
 * before the init section is freed.
 */
static int __init pci_realloc_setup_params(void)
{
	disable_acs_redir_param = kstrdup(disable_acs_redir_param, GFP_KERNEL);

	return 0;
}
pure_initcall(pci_realloc_setup_params);
+8 −0
Original line number Diff line number Diff line
@@ -142,3 +142,11 @@ config PCIE_PTM

	  This is only useful if you have devices that support PTM, but it
	  is safe to enable even if you don't.

config PCIE_BW
	bool "PCI Express Bandwidth Change Notification"
	depends on PCIEPORTBUS
	help
	  This enables PCI Express Bandwidth Change Notification.  If
	  you know link width or rate changes occur only to correct
	  unreliable links, you may answer Y.
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@
# Makefile for PCI Express features and port driver

pcieportdrv-y			:= portdrv_core.o portdrv_pci.o err.o
pcieportdrv-y			+= bw_notification.o

obj-$(CONFIG_PCIEPORTBUS)	+= pcieportdrv.o

@@ -13,3 +12,4 @@ obj-$(CONFIG_PCIEAER_INJECT) += aer_inject.o
obj-$(CONFIG_PCIE_PME)		+= pme.o
obj-$(CONFIG_PCIE_DPC)		+= dpc.o
obj-$(CONFIG_PCIE_PTM)		+= ptm.o
obj-$(CONFIG_PCIE_BW)		+= bw_notification.o
+4 −0
Original line number Diff line number Diff line
@@ -49,7 +49,11 @@ int pcie_dpc_init(void);
static inline int pcie_dpc_init(void) { return 0; }
#endif

#ifdef CONFIG_PCIE_BW
int pcie_bandwidth_notification_init(void);
#else
static inline int pcie_bandwidth_notification_init(void) { return 0; }
#endif

/* Port Type */
#define PCIE_ANY_PORT			(~0)
+2 −1
Original line number Diff line number Diff line
@@ -55,7 +55,8 @@ static int pcie_message_numbers(struct pci_dev *dev, int mask,
	 * 7.8.2, 7.10.10, 7.31.2.
	 */

	if (mask & (PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP)) {
	if (mask & (PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP |
		    PCIE_PORT_SERVICE_BWNOTIF)) {
		pcie_capability_read_word(dev, PCI_EXP_FLAGS, &reg16);
		*pme = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9;
		nvec = *pme + 1;