panic with em(4) in current

Brooks Davis brooks at
Fri Dec 11 17:31:02 UTC 2009

On Fri, Dec 11, 2009 at 01:20:08AM +0300, pluknet wrote:
> 2009/12/11 Brooks Davis <brooks at>:
> > Something with the latest e1000 update in current causes a panic during
> > attach on my laptop. ?Rolling sys/dev/e1000 back to the previous version
> > fixes the problem. ?Here's the hand transcribed panic:
> >
> > panic: mtx_lock() of spin mutex &dev_spec->swflag_mutex @ ../../../dev/e1000/e1000_ich8lan.c:651
> >
> > The back trace places me at: e1000_acquire_swflag_ich8lan()+0x30
> Hi, I see bug there:
> +#define E1000_MUTEX_INIT(mutex)         mtx_init((mutex), #mutex, \
> +                                        MTX_NETWORK_LOCK, \
> +                                        MTX_DEF | MTX_SPIN)
> mtx_init() first looks for MTX_SPIN flag and assign
> lock_class_mtx_spin class to mutex.
> Then mtx_lock() on spin mutex called.

I can confirm that removing MTX_SPIN fixes the panic.  This is invalid
code because MTX_DEF and MTX_SPIN are exclusive flags.  Unfortunately,
MTX_DEF is 0x0 so there's no way to check for that error at runtime.

If a spin mutex were actually needed here then the _LOCK and _UNLOCK
macros need to be change and the unused _TRYLOCK macro needs to be

-- Brooks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url :

More information about the freebsd-current mailing list