tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ci_mtx_count issue on NetBSD/Milkymist
Yann Sionneau <yann.sionneau%gmail.com@localhost> wrote:
> > It asserts for -1 because only the LWP lock should be held at that
> > point.
> Ok, but locking the LWP lock won't make ci_mtx_count be -1 because the
> lock is a MUTEX_DEFAULT and not a MUTEX_SPIN.
MUTEX_DEFAULT can either mean a spin-lock or an adaptive lock, depending
on the specified IPL value. Please see mutex(9) manpage for details. All
LWP locks (i.e. the locks which can be associated with lwp_t::l_mutex) are
spin-locks.
> >> Do I miss a MUTEX_SPIN somewhere? which spin mutex is supposed to be
> >> held before calling mi_switch()? (or at least before the KASSERTMSG
> >> happens).
> > That assert is generally for catching locking bugs. Perhaps you missed
> > mutex_exit()/mutex_spin_exit() somewhere in your MD code? Get a
> > backtrace and inspect the code?
> >
> Well, it's 0 because no spin lock is locked. So I don't think I missed a
> mutex_spin_exit() ... I think I don't understand the situation at all
> here :/
If the value is 0 at the point of assertion, then I would suggest to add
some debug code to find out when it becomes zero. Perhaps your MD code
does not initialise struct cpu_info or the relevant members to zero?
--
Mindaugas
Home |
Main Index |
Thread Index |
Old Index