Browse Source

x86/PCI/ACPI: Ignore resources consumed by host bridge itself

When parsing resources for PCI host bridge, we should ignore resources
consumed by host bridge itself and only report window resources available
to child PCI busses.

Fixes: 593669c2ac0f (x86/PCI/ACPI: Use common ACPI resource interfaces ...)
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Jiang Liu 10 years ago
parent
commit
63f1789ec7
1 changed files with 8 additions and 3 deletions
  1. 8 3
      arch/x86/pci/acpi.c

+ 8 - 3
arch/x86/pci/acpi.c

@@ -331,7 +331,7 @@ static void probe_pci_root_info(struct pci_root_info *info,
 				struct list_head *list)
 				struct list_head *list)
 {
 {
 	int ret;
 	int ret;
-	struct resource_entry *entry;
+	struct resource_entry *entry, *tmp;
 
 
 	sprintf(info->name, "PCI Bus %04x:%02x", domain, busnum);
 	sprintf(info->name, "PCI Bus %04x:%02x", domain, busnum);
 	info->bridge = device;
 	info->bridge = device;
@@ -345,8 +345,13 @@ static void probe_pci_root_info(struct pci_root_info *info,
 		dev_dbg(&device->dev,
 		dev_dbg(&device->dev,
 			"no IO and memory resources present in _CRS\n");
 			"no IO and memory resources present in _CRS\n");
 	else
 	else
-		resource_list_for_each_entry(entry, list)
-			entry->res->name = info->name;
+		resource_list_for_each_entry_safe(entry, tmp, list) {
+			if ((entry->res->flags & IORESOURCE_WINDOW) == 0 ||
+			    (entry->res->flags & IORESOURCE_DISABLED))
+				resource_list_destroy_entry(entry);
+			else
+				entry->res->name = info->name;
+		}
 }
 }
 
 
 struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)