em, polling, carp LOR

Gleb Smirnoff glebius at FreeBSD.org
Fri Jan 27 01:46:21 PST 2006

On Fri, Jan 27, 2006 at 04:22:03AM -0500, ben wrote:
b> Please excuse if this is already known.  It used to work.

Yes, it is known. The em(4) driver in HEAD is now undergoing some
aggressive changes, and ATM the polling(4) mode is a bit broken
in HEAD. However, the driver now works very well in interrupt mode.
I suggest you to try to turn polling(4) off.

b> lock order reversal:
b> 1st 0xc4be31a4 em1 (network driver) @ /usr/src/sys/dev/em/if_em.c:1070
b> 2nd 0xc50d41d0 carp_if (carp_if) @ /usr/src/sys/netinet/ip_carp.c:1251
b> KDB: stack backtrace:
b> witness_checkorder(c50d41d0,9,c08b29b5,4e3) at witness_checkorder+0x56b
b> _mtx_lock_flags(c50d41d0,0,c08b29b5,4e3,800) at _mtx_lock_flags+0x50
b> carp_forus(c50d41c0,c50c5802,0,1,5dc) at carp_forus+0x4b
b> ether_demux(c4c1d800,c5090800,c4be3000,83,c4c23820) at ether_demux+0x1f7
b> ether_input(c4c1d800,c5090800,0,e35d6c70,c0698a28) at ether_input+0x15b
b> em_process_receive_interrupts(1,1,5,0,e35d6cd4) at  
b> em_process_receive_interrupts+0x2d3
b> em_poll(c4c1d800,0,5) at em_poll+0x79
b> netisr_poll(0,c4b3c980,c4b3ee00,0,e35d6d0c) at netisr_poll+0x70
b> swi_net(0,c4b3ee38,c4aefb60,c0660d38,c4aee450) at swi_net+0x2d
b> ithread_loop(c4ab5870,e35d6d38,c4ab5870,c0660d38,0) at ithread_loop 
b> +0x1eb
b> fork_exit(c0660d38,c4ab5870,e35d6d38) at fork_exit+0x80
b> fork_trampoline() at fork_trampoline+0x8
b> --- trap 0x1, eip = 0, esp = 0xe35d6d6c, ebp = 0 ---
b> Thanks,
b> bw.
b> _______________________________________________
b> freebsd-current at freebsd.org mailing list
b> http://lists.freebsd.org/mailman/listinfo/freebsd-current
b> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"

Totus tuus, Glebius.

More information about the freebsd-current mailing list