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

Commit c245f242 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

Merge branch 'pci/misc' into next

* pci/misc:
  PCI: Warn on driver probe return value greater than zero
  PCI: Drop warning about drivers that don't use pci_set_master()
  PCI: Workaround missing pci_set_master in pci drivers
  PCI: Update pcie_ports 'auto' behavior for non-ACPI platforms
parents 589a1b07 f92d74c1
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -267,12 +267,20 @@ static long local_pci_probe(void *_ddi)
	pm_runtime_get_sync(dev);
	pci_dev->driver = pci_drv;
	rc = pci_drv->probe(pci_dev, ddi->id);
	if (rc) {
	if (!rc)
		return rc;
	if (rc < 0) {
		pci_dev->driver = NULL;
		pm_runtime_put_sync(dev);
	}
		return rc;
	}
	/*
	 * Probe function should return < 0 for failure, 0 for success
	 * Treat values > 0 as success, but warn.
	 */
	dev_warn(dev, "Driver probe function unexpectedly returned %d\n", rc);
	return 0;
}

static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev,
			  const struct pci_device_id *id)
+5 −1
Original line number Diff line number Diff line
@@ -1155,8 +1155,12 @@ static void pci_enable_bridge(struct pci_dev *dev)

	pci_enable_bridge(dev->bus->self);

	if (pci_is_enabled(dev))
	if (pci_is_enabled(dev)) {
		if (!dev->is_busmaster)
			pci_set_master(dev);
		return;
	}

	retval = pci_enable_device(dev);
	if (retval)
		dev_err(&dev->dev, "Error enabling bridge (%d), continuing\n",
+8 −7
Original line number Diff line number Diff line
@@ -260,13 +260,14 @@ static int get_port_device_capability(struct pci_dev *dev)
	if (pcie_ports_disabled)
		return 0;

	err = pcie_port_platform_notify(dev, &cap_mask);
	if (!pcie_ports_auto) {
	cap_mask = PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP
			| PCIE_PORT_SERVICE_VC;
	if (pci_aer_available())
		cap_mask |= PCIE_PORT_SERVICE_AER;
	} else if (err) {

	if (pcie_ports_auto) {
		err = pcie_port_platform_notify(dev, &cap_mask);
		if (err)
			return 0;
	}