On Wed, 6 Mar 2002 [EMAIL PROTECTED] wrote: > I inserted a pair of printf() inside mtx_lock_spin/mtx_unlock_spin in > i8254_get_timecount() and it kept printing the message while tc_init() > was blocked, so I think it's blocked at mtx_lock_spin in i8254_get_timecount() > when called from tc_init(), but not when called from somewhere else. > (maybe an interrupt handler?)
Apparently you have KTR enabled (not the default in GENERIC). I think WITNESS+KTR already caused nasty recursion from the mtx_lock_spin, and we now get an endless loop when nanotime() is called with an invalid timecounter in the following call chain: tc_init -> tc_windup -> tco_delta -> i8254_get_timecount -> mtx_foo -> witness_foo -> ktr_foo -> nanotime, just after nanotime has somehow recursed back into i8254_get_timecounter without causing endless recursion! Try setting MTX_NOWITNESS in the initialization of clock_lock in i386/machdep.c. Bruce To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message