summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2008-07-23 15:13:06 +0000
committerjhb <jhb@FreeBSD.org>2008-07-23 15:13:06 +0000
commit8f8e4f1bbb2510f24536ec8cf617c14fe25ba146 (patch)
treeba823e15892ddb7872db989e4dfcb8d3331289e1
parentc83fb5aadad6f7eb1e65c1cb14a7ddc2d98bd334 (diff)
downloadFreeBSD-src-8f8e4f1bbb2510f24536ec8cf617c14fe25ba146.zip
FreeBSD-src-8f8e4f1bbb2510f24536ec8cf617c14fe25ba146.tar.gz
Further refine the probe order of devices to more closely match the previous
behavior. Specifically, probe Host-PCI bridges in the order they are encountered in the tree. For CPUs, just use an order of 100000 and assume that no Host-PCI bridges will be more than 10000 levels deep in the namespace. This fixes an issue on some boxes where the HPET timer stopped attaching.
-rw-r--r--sys/dev/acpica/acpi.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index 48b8d8a..d9a26cc 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -1531,8 +1531,7 @@ acpi_probe_order(ACPI_HANDLE handle, int *order)
* 1. I/O port and memory system resource holders
* 2. Embedded controllers (to handle early accesses)
* 3. PCI Link Devices
- * ACPI_DEV_BASE_ORDER. Host-PCI bridges
- * ACPI_DEV_BASE_ORDER + 10. CPUs
+ * 100000. CPUs
*/
AcpiGetType(handle, &type);
if (acpi_MatchHid(handle, "PNP0C01") || acpi_MatchHid(handle, "PNP0C02"))
@@ -1541,10 +1540,8 @@ acpi_probe_order(ACPI_HANDLE handle, int *order)
*order = 2;
else if (acpi_MatchHid(handle, "PNP0C0F"))
*order = 3;
- else if (acpi_MatchHid(handle, "PNP0A03"))
- *order = ACPI_DEV_BASE_ORDER;
else if (type == ACPI_TYPE_PROCESSOR)
- *order = ACPI_DEV_BASE_ORDER + 10;
+ *order = 100000;
}
/*
@@ -1594,10 +1591,8 @@ acpi_probe_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status)
* placeholder so that the probe/attach passes will run
* breadth-first. Orders less than ACPI_DEV_BASE_ORDER
* are reserved for special objects (i.e., system
- * resources). Orders between ACPI_DEV_BASE_ORDER and 100
- * are used for Host-PCI bridges (and effectively all
- * their children) and CPUs. Larger values are used for
- * all other devices.
+ * resources). CPU devices have a very high order to
+ * ensure they are probed after other devices.
*/
ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "scanning '%s'\n", handle_str));
order = level * 10 + 100;
OpenPOWER on IntegriCloud