iommu/amd: Deprecate pci_get_bus_and_slot()
authorSinan Kaya <okaya@codeaurora.org>
Tue, 19 Dec 2017 05:37:47 +0000 (00:37 -0500)
committerBjorn Helgaas <helgaas@kernel.org>
Thu, 11 Jan 2018 23:31:05 +0000 (17:31 -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.

Getting ready to remove pci_get_bus_and_slot() function in favor of
pci_get_domain_bus_and_slot().

Hard-code the domain number as 0 for the AMD IOMMU driver.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
Reviewed-by: Gary R Hook <gary.hook@amd.com>
Acked-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd_iommu.c
drivers/iommu/amd_iommu_init.c
drivers/iommu/amd_iommu_v2.c

index 7d5eb004091d1d64f6956825e9dd14bf975a8b68..821547b23c65db57956f08a4fca640fe36d73302 100644 (file)
@@ -527,7 +527,8 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
        struct iommu_dev_data *dev_data = NULL;
        struct pci_dev *pdev;
 
-       pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+       pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+                                          devid & 0xff);
        if (pdev)
                dev_data = get_dev_data(&pdev->dev);
 
index 6fe2d03460730cabe0aa78060114844ad1a2a3cf..4e4a615bf13f1995903ff46c1da215fc8e745812 100644 (file)
@@ -1697,8 +1697,8 @@ static int iommu_init_pci(struct amd_iommu *iommu)
        u32 range, misc, low, high;
        int ret;
 
-       iommu->dev = pci_get_bus_and_slot(PCI_BUS_NUM(iommu->devid),
-                                         iommu->devid & 0xff);
+       iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
+                                                iommu->devid & 0xff);
        if (!iommu->dev)
                return -ENODEV;
 
@@ -1764,8 +1764,9 @@ static int iommu_init_pci(struct amd_iommu *iommu)
        if (is_rd890_iommu(iommu->dev)) {
                int i, j;
 
-               iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
-                               PCI_DEVFN(0, 0));
+               iommu->root_pdev =
+                       pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
+                                                   PCI_DEVFN(0, 0));
 
                /*
                 * Some rd890 systems may not be fully reconfigured by the
index 7d94e1d39e5e7fb229d39bb4242bae286692854a..8696382be837c839029501db67074268ee20200c 100644 (file)
@@ -564,7 +564,8 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)
        finish      = (iommu_fault->tag >> 9) & 1;
 
        devid = iommu_fault->device_id;
-       pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+       pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+                                          devid & 0xff);
        if (!pdev)
                return -ENODEV;
        dev_data = get_dev_data(&pdev->dev);