[panic] netmap(4) and if_lagg(4)
Vincenzo Maffione
v.maffione at gmail.com
Thu May 25 15:32:00 UTC 2017
Hi,
This is a (silly) bug that is not present anymore in the upstream code
https://github.com/luigirizzo/netmap/blob/master/sys/dev/netmap/netmap_freebsd.c#L410-L417
that is txq and rxq for generic adapter cannot be 0.
So I would say the problem is outdated code in the FreeBSD version you are
using. Which version you are using exactly? Maybe we can try to push a fix.
Cheers,
Vincenzo
2017-05-25 16:47 GMT+02:00 Harry Schmalzbauer <freebsd at omnilan.de>:
> Bezüglich Vincenzo Maffione's Nachricht vom 20.03.2017 15:01 (localtime):
> > 2017-03-20 10:40 GMT+01:00 Harry Schmalzbauer <freebsd at omnilan.de>:
> >
> >> Bezüglich Vincenzo Maffione's Nachricht vom 17.03.2017 22:28
> (localtime):
>
> …
> >> I'll try to provide more info about the panic this week. Like discussed
> >> offlist, the panic happend on a machine with the mentioned fix (latest
> >> stable).
> >> Perhaps this panic can be fixed, especialy for the vlan children.
> >>
> >
> > Ok, so if you create a vlan on an interface, and use netmap over the
> vlan,
> > you get a deterministic crash? Does the crash happen when you start
> > transmitting, receiving or both?
> >
>
> Sorry for the long delay.
>
> I now have a crash dump and could provide more info if someone can
> afford having a look at the lagg panic.
> The panic with em0.vlan vanisehd with latest -stable (11.1-prerelease),
> but using lagg reproducably panics.
>
> Unread portion of the kernel message buffer:
> 066.051358 [ 254] generic_find_num_desc called, in tx 1024 rx 1024
> 066.058166 [ 262] generic_find_num_queues called, in txq 0 rxq 0
> 066.064756 [1673] netmap_interp_ringid deprecated API, old ringid
> 0x0 -> ringid 0 reg 1
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 1; apic id = 01
> fault virtual address = 0xc
> fault code = supervisor read data, page not present
> instruction pointer = 0x20:0xffffffff80426894
> stack pointer = 0x28:0xfffffe03afccb750
> frame pointer = 0x28:0xfffffe03afccb770
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 12 (irq269: igb0:que 1)
> trap number = 12
> panic: page fault
> cpuid = 1
> KDB: stack backtrace:
> #0 0xffffffff805d8277 at kdb_backtrace+0x67
> #1 0xffffffff80596d06 at vpanic+0x186
> #2 0xffffffff80596b73 at panic+0x43
> #3 0xffffffff80898472 at trap_fatal+0x322
> #4 0xffffffff808984c9 at trap_pfault+0x49
> #5 0xffffffff80897d06 at trap+0x286
> #6 0xffffffff8087dfa1 at calltrap+0x8
> #7 0xffffffff8069dc50 at vlan_input+0x1f0
> #8 0xffffffff8068eb08 at ether_demux+0x128
> #9 0xffffffff8068f7ab at ether_nh_input+0x31b
> #10 0xffffffff806ab3f0 at netisr_dispatch_src+0xa0
> #11 0xffffffff8068edb6 at ether_input+0x26
> #12 0xffffffff8039f808 at igb_rxeof+0x738
> #13 0xffffffff8039ebcf at igb_msix_que+0x10f
> #14 0xffffffff8055e66c at intr_event_execute_handlers+0xec
> #15 0xffffffff8055e956 at ithread_loop+0xd6
> #16 0xffffffff8055bcc5 at fork_exit+0x85
> #17 0xffffffff8087e4de at fork_trampoline+0xe
> Uptime: 1m37s
> Dumping 1535 out of 15529
> MB:..2%..11%..21%..31%..41%..51%..61%..71%..81%..91%
> …
> Reading symbols from /usr/lib/debug/boot/kernel/uhid.ko.debug...done.
> Loaded symbols for /usr/lib/debug/boot/kernel/uhid.ko.debug
> #0 doadump (textdump=<value optimized out>) at pcpu.h:222
> 222 pcpu.h: No such file or directory.
> in pcpu.h
> (kgdb) list *0xffffffff80426894
> 0xffffffff80426894 is in generic_rx_handler
> (/usr/local/share/deploy-tools/RELENG_11/src/sys/dev/
> netmap/netmap_generic.c:628).
> 623 struct netmap_adapter *na = NA(ifp);
> 624 struct netmap_generic_adapter *gna = (struct
> netmap_generic_adapter *)na;
> 625 u_int work_done;
> 626 u_int rr = MBUF_RXQ(m); // receive ring number
> 627
> 628 if (rr >= na->num_rx_rings) {
> 629 rr = rr % na->num_rx_rings; // XXX expensive...
> 630 }
> 631
> 632 /* limit the size of the queue */
>
> Thanks,
>
> -harry
>
--
Vincenzo Maffione
More information about the freebsd-net
mailing list