diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c index 5b716b7c4a0b..0d3a4acd4ee3 100644 --- a/sys/dev/acpica/acpi_cpu.c +++ b/sys/dev/acpica/acpi_cpu.c @@ -807,16 +807,23 @@ acpi_cpu_idle() uint32_t start_time, end_time; int bm_active, i, asleep; - /* Look up our CPU id and to get our softc. */ - sc = cpu_softc[PCPU_GET(cpuid)]; - KASSERT(sc != NULL, ("NULL softc for %d", PCPU_GET(cpuid))); - /* If disabled, return immediately. */ if (cpu_cx_count == 0) { ACPI_ENABLE_IRQS(); return; } + /* + * Look up our CPU id to get our softc. If it's NULL, we'll use C1 + * since there is no ACPI processor object for this CPU. This occurs + * for logical CPUs in the HTT case. + */ + sc = cpu_softc[PCPU_GET(cpuid)]; + if (sc == NULL) { + acpi_cpu_c1(); + return; + } + /* Record that a CPU is in the idle function. */ atomic_add_int(&cpu_idle_busy, 1);