PCI: for address space collisions, show conflicting resource
With request_resource_conflict(), we can learn what the actual conflict is, so print that info for debugging purposes. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
committed by
Jesse Barnes
parent
66f1207bce
commit
966f3a7570
@@ -93,8 +93,7 @@ void pci_update_resource(struct pci_dev *dev, int resno)
|
|||||||
int pci_claim_resource(struct pci_dev *dev, int resource)
|
int pci_claim_resource(struct pci_dev *dev, int resource)
|
||||||
{
|
{
|
||||||
struct resource *res = &dev->resource[resource];
|
struct resource *res = &dev->resource[resource];
|
||||||
struct resource *root;
|
struct resource *root, *conflict;
|
||||||
int err;
|
|
||||||
|
|
||||||
root = pci_find_parent_resource(dev, res);
|
root = pci_find_parent_resource(dev, res);
|
||||||
if (!root) {
|
if (!root) {
|
||||||
@@ -103,12 +102,15 @@ int pci_claim_resource(struct pci_dev *dev, int resource)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = request_resource(root, res);
|
conflict = request_resource_conflict(root, res);
|
||||||
if (err)
|
if (conflict) {
|
||||||
dev_err(&dev->dev,
|
dev_err(&dev->dev,
|
||||||
"address space collision: %pR already in use\n", res);
|
"address space collision: %pR conflicts with %s %pR\n",
|
||||||
|
res, conflict->name, conflict);
|
||||||
|
return -EBUSY;
|
||||||
|
}
|
||||||
|
|
||||||
return err;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(pci_claim_resource);
|
EXPORT_SYMBOL(pci_claim_resource);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user