Index: acpi_cpu.c =================================================================== RCS file: /home/source/dragonfly/cvs/src/sys/dev/acpica5/acpi_cpu.c,v retrieving revision 1.19 diff -u -p -r1.19 acpi_cpu.c --- acpi_cpu.c 22 Feb 2007 04:02:50 -0000 1.19 +++ acpi_cpu.c 4 Mar 2007 16:51:20 -0000 @@ -182,10 +182,15 @@ static devclass_t acpi_cpu_devclass; DRIVER_MODULE(cpu, acpi, acpi_cpu_driver, acpi_cpu_devclass, 0, 0); MODULE_DEPEND(cpu, acpi, 1, 1, 1); +static int acpi_cpu_probe_debug_knob = 0; +TUNABLE_INT("debug.acpi.cpu.knob", &acpi_cpu_probe_debug_knob); +#define DEBUG_KNOB(n) \ + if (acpi_cpu_probe_debug_knob == (n)) return(ENXIO) + static int acpi_cpu_probe(device_t dev) { - int acpi_id, cpu_id, cx_count; + int acpi_id, cpu_id, proc_id, cx_count; ACPI_BUFFER buf; ACPI_HANDLE handle; char msg[32]; @@ -221,11 +226,17 @@ acpi_cpu_probe(device_t dev) * ProcId as a key, however, some boxes do not have the same values * in their Processor object as the ProcId values in the MADT. */ - acpi_id = obj->Processor.ProcId; + acpi_id = proc_id = obj->Processor.ProcId; AcpiOsFree(obj); - if (acpi_pcpu_get_id(device_get_unit(dev), &acpi_id, &cpu_id) != 0) + if (acpi_pcpu_get_id(device_get_unit(dev), &acpi_id, &cpu_id) != 0) { + if (bootverbose) + device_printf(dev, "ProcId %d: can't find cpu_id\n", proc_id); return (ENXIO); - + } + if (bootverbose) { + device_printf(dev, "ProcId %d: acpi_id=%d, cpu_id=%d\n", proc_id, + acpi_id, cpu_id); + } /* * Check if we already probed this processor. We scan the bus twice * so it's possible we've already seen this one. @@ -313,19 +324,25 @@ acpi_cpu_attach(device_t dev) * Probe for throttling and Cx state support. * If none of these is present, free up unused resources. */ +DEBUG_KNOB(1); thr_ret = acpi_cpu_throttle_probe(sc); +DEBUG_KNOB(2); cx_ret = acpi_cpu_cx_probe(sc); +DEBUG_KNOB(3); if (thr_ret == 0 || cx_ret == 0) { status = AcpiInstallNotifyHandler(sc->cpu_handle, ACPI_DEVICE_NOTIFY, acpi_cpu_notify, sc); +DEBUG_KNOB(4); if (device_get_unit(dev) == 0) AcpiOsExecute(OSL_NOTIFY_HANDLER, acpi_cpu_startup, NULL); } else { sysctl_ctx_free(&acpi_cpu_sysctl_ctx); } +DEBUG_KNOB(5); return_VALUE (0); } +#undef DEBUG_KNOB /* * Find the nth present CPU and return its pc_cpuid as well as set the