x86/PCI: for host bridge address space collisions, show conflicting resource
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Thu, 25 Mar 2010 15:28:24 +0000 (09:28 -0600)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 25 Mar 2010 17:14:07 +0000 (10:14 -0700)
With insert_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>
arch/x86/pci/acpi.c

index 6e22454bfaa6d51e4f22ce9eb5c379e1770319d6..75ac3f856ea54bf07382d1d577b5b6820b4c4d06 100644 (file)
@@ -122,7 +122,7 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
        struct acpi_resource_address64 addr;
        acpi_status status;
        unsigned long flags;
-       struct resource *root;
+       struct resource *root, *conflict;
        u64 start, end;
 
        status = resource_to_addr(acpi_res, &addr);
@@ -157,9 +157,12 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
                return AE_OK;
        }
 
-       if (insert_resource(root, res)) {
+       conflict = insert_resource_conflict(root, res);
+       if (conflict) {
                dev_err(&info->bridge->dev,
-                       "can't allocate host bridge window %pR\n", res);
+                       "address space collision: host bridge window %pR "
+                       "conflicts with %s %pR\n",
+                       res, conflict->name, conflict);
        } else {
                pci_bus_add_resource(info->bus, res, 0);
                info->res_num++;