Ver Fonte

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 há 11 anos atrás
pai
commit
63f1789ec7
1 ficheiros alterados com 8 adições e 3 exclusões
  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)