xen/pcifront: Deprecate pci_get_bus_and_slot()
authorSinan Kaya <okaya@codeaurora.org>
Tue, 19 Dec 2017 05:37:55 +0000 (00:37 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 17 Jan 2018 14:16:46 +0000 (08:16 -0600)
pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
where a PCI device is present. This restricts the device drivers to be
reused for other domain numbers.

Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
extract the domain number. Other places, use the actual domain number from
the device.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
Reviewed-by: Juergen Gross <jgross@suse.com>
drivers/pci/xen-pcifront.c

index 8fc2e95..94b25b5 100644 (file)
@@ -595,6 +595,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
        struct pci_driver *pdrv;
        int bus = pdev->sh_info->aer_op.bus;
        int devfn = pdev->sh_info->aer_op.devfn;
+       int domain = pdev->sh_info->aer_op.domain;
        struct pci_dev *pcidev;
        int flag = 0;
 
@@ -603,7 +604,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
                cmd, bus, devfn);
        result = PCI_ERS_RESULT_NONE;
 
-       pcidev = pci_get_bus_and_slot(bus, devfn);
+       pcidev = pci_get_domain_bus_and_slot(domain, bus, devfn);
        if (!pcidev || !pcidev->driver) {
                dev_err(&pdev->xdev->dev, "device or AER driver is NULL\n");
                pci_dev_put(pcidev);