--- sys/dev/acpica/acpi_ec.c Tue Feb 27 19:21:12 2007 +++ sys/dev/acpica/acpi_ec.c Tue Feb 27 19:22:17 2007 @@ -936,6 +936,7 @@ count = ec_poll_time / EC_POLL_DELAY; if (count <= 0) count = 1; + slp_ival = max(hz / 1000, 1); for (i = 0; i < count; i++) { EcStatus = EC_GET_CSR(sc); if (sc->ec_burstactive && (EcStatus & EC_FLAG_BURST_MODE) == 0) { @@ -947,7 +948,15 @@ Status = AE_OK; break; } - AcpiOsStall(EC_POLL_DELAY); + if (sc->ec_burstactive) + AcpiOsStall(EC_POLL_DELAY); + else { + if (!cold) + msleep(&sc->ec_csrvalue, &sc->ec_mtx, PZERO, "ecpoll", + slp_ival); + else + AcpiOsStall(1000); + } } /*