--- src/sys/platform/vkernel/i386/cpu_regs.c 2007/07/02 01:37:10 1.19 +++ src/sys/platform/vkernel/i386/cpu_regs.c 2007/07/02 06:30:26 1.20 @@ -697,8 +697,24 @@ cpu_idle(void) if (cpu_idle_hlt && !lwkt_runnable() && (td->td_flags & TDF_IDLE_NOHLT) == 0) { splz(); - if (!lwkt_runnable()) - umtx_sleep(&gd->mi.gd_runqmask, 0, 0); + if (!lwkt_runnable()) { +#ifdef DEBUGIDLE + struct timeval tv1, tv2; + gettimeofday(&tv1, NULL); +#endif + umtx_sleep(&gd->mi.gd_runqmask, 0, 1000000); +#ifdef DEBUGIDLE + gettimeofday(&tv2, NULL); + if (tv2.tv_usec - tv1.tv_usec + + (tv2.tv_sec - tv1.tv_sec) * 1000000 + > 500000) { + kprintf("cpu %d idlelock %08x %08x\n", + gd->mi.gd_cpuid, + gd->mi.gd_runqmask, + gd->gd_fpending); + } +#endif + } #ifdef SMP else { __asm __volatile("pause");