aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2012-09-17 17:44:20 -0400
committerBjorn Helgaas <bhelgaas@google.com>2012-09-17 17:44:20 -0400
commitb895e663f4ade8d8546bc57ea22b40e4bc993c6c (patch)
tree22f754338aa4e20d5ce48065c0f109d41a58a4e9 /drivers/pci
parent6dabee73d46bfafb8c588b21b14606914de97ee6 (diff)
parent2ccc246d9c6eaa6596818ff917721a444acd0b61 (diff)
Merge branch 'pci/jiang-get-domain-bus-slot' into next
* pci/jiang-get-domain-bus-slot: xen-pcifront: Use hotplug-safe pci_get_domain_bus_and_slot() PCI: Use hotplug-safe pci_get_domain_bus_and_slot() PCI/cpcihp: Use hotplug-safe pci_get_domain_bus_and_slot() PCI/vga: Use hotplug-safe pci_get_domain_bus_and_slot() ia64/PCI: Use hotplug-safe pci_get_domain_bus_and_slot()
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/hotplug/cpcihp_generic.c8
-rw-r--r--drivers/pci/iov.c8
-rw-r--r--drivers/pci/xen-pcifront.c10
3 files changed, 6 insertions, 20 deletions
diff --git a/drivers/pci/hotplug/cpcihp_generic.c b/drivers/pci/hotplug/cpcihp_generic.c
index 81af764c629b..a6a71c41cdf8 100644
--- a/drivers/pci/hotplug/cpcihp_generic.c
+++ b/drivers/pci/hotplug/cpcihp_generic.c
@@ -154,12 +154,8 @@ static int __init cpcihp_generic_init(void)
154 if(!r) 154 if(!r)
155 return -EBUSY; 155 return -EBUSY;
156 156
157 bus = pci_find_bus(0, bridge_busnr); 157 dev = pci_get_domain_bus_and_slot(0, bridge_busnr,
158 if (!bus) { 158 PCI_DEVFN(bridge_slot, 0));
159 err("Invalid bus number %d", bridge_busnr);
160 return -EINVAL;
161 }
162 dev = pci_get_slot(bus, PCI_DEVFN(bridge_slot, 0));
163 if(!dev || dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) { 159 if(!dev || dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
164 err("Invalid bridge device %s", bridge); 160 err("Invalid bridge device %s", bridge);
165 pci_dev_put(dev); 161 pci_dev_put(dev);
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index aeccc911abb8..b0fe7712b4d4 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -152,15 +152,11 @@ failed1:
152static void virtfn_remove(struct pci_dev *dev, int id, int reset) 152static void virtfn_remove(struct pci_dev *dev, int id, int reset)
153{ 153{
154 char buf[VIRTFN_ID_LEN]; 154 char buf[VIRTFN_ID_LEN];
155 struct pci_bus *bus;
156 struct pci_dev *virtfn; 155 struct pci_dev *virtfn;
157 struct pci_sriov *iov = dev->sriov; 156 struct pci_sriov *iov = dev->sriov;
158 157
159 bus = pci_find_bus(pci_domain_nr(dev->bus), virtfn_bus(dev, id)); 158 virtfn = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus),
160 if (!bus) 159 virtfn_bus(dev, id), virtfn_devfn(dev, id));
161 return;
162
163 virtfn = pci_get_slot(bus, virtfn_devfn(dev, id));
164 if (!virtfn) 160 if (!virtfn)
165 return; 161 return;
166 162
diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
index d6cc62cb4cf7..def8d0b5620c 100644
--- a/drivers/pci/xen-pcifront.c
+++ b/drivers/pci/xen-pcifront.c
@@ -982,7 +982,6 @@ static int pcifront_detach_devices(struct pcifront_device *pdev)
982 int err = 0; 982 int err = 0;
983 int i, num_devs; 983 int i, num_devs;
984 unsigned int domain, bus, slot, func; 984 unsigned int domain, bus, slot, func;
985 struct pci_bus *pci_bus;
986 struct pci_dev *pci_dev; 985 struct pci_dev *pci_dev;
987 char str[64]; 986 char str[64];
988 987
@@ -1032,13 +1031,8 @@ static int pcifront_detach_devices(struct pcifront_device *pdev)
1032 goto out; 1031 goto out;
1033 } 1032 }
1034 1033
1035 pci_bus = pci_find_bus(domain, bus); 1034 pci_dev = pci_get_domain_bus_and_slot(domain, bus,
1036 if (!pci_bus) { 1035 PCI_DEVFN(slot, func));
1037 dev_dbg(&pdev->xdev->dev, "Cannot get bus %04x:%02x\n",
1038 domain, bus);
1039 continue;
1040 }
1041 pci_dev = pci_get_slot(pci_bus, PCI_DEVFN(slot, func));
1042 if (!pci_dev) { 1036 if (!pci_dev) {
1043 dev_dbg(&pdev->xdev->dev, 1037 dev_dbg(&pdev->xdev->dev,
1044 "Cannot get PCI device %04x:%02x:%02x.%d\n", 1038 "Cannot get PCI device %04x:%02x:%02x.%d\n",