On 17.3.2022. 21:31, Alexander Bluhm wrote: > On Thu, Mar 17, 2022 at 01:01:11AM +0100, Hrvoje Popovski wrote: >> On 16.3.2022. 20:00, Hrvoje Popovski wrote: >>> Hi all, >>> >>> While opensbd box is under pressure and in that moment i run ifconfig >>> bnxt0 down i get panic... it's not every time and it's that easy to >>> trigger panic >>> >>> I'm sending traffic over ix interfaces and bnxt is for ssh and nothing >>> else. >>> >>> I've compiled kernel with "option BNXT_DEBUG" and put debug in >>> hostname.bnxt0 but i didn't saw any log regarding bnxt interfaces. >>> >>> I will try to trigger panic few more times and will post them here.. >> >> this is same panic but with snapshot kernel without debug options >> >> uvm_fault(0xfffffd904e3a9440, 0x0, 0, 1) -> e >> kernel: page fault trap, code=0 >> Stopped at bnxt_intr+0x195: movq 0(%r14,%r12,1),%rbx >> TID PID UID PRFLAGS PFLAGS CPU COMMAND >> *465591 26407 0 0x3 0 0K ifconfig >> bnxt_intr(ffff8000002bc7c0) at bnxt_intr+0x195 >> intr_handler(ffff800027d3d7b0,ffff800000269880) at intr_handler+0x6e >> Xintr_ioapic_edge28_untramp() at Xintr_ioapic_edge28_untramp+0x18f >> Xspllower() at Xspllower+0x19 >> softintr_dispatch(0) at softintr_dispatch+0xdc >> Xsoftclock() at Xsoftclock+0x1f >> bnxt_ioctl(ffff8000002bc048,80206910,ffff800027d3dae0) at bnxt_ioctl+0x165 >> ifioctl(fffffd8e5a4f13a8,80206910,ffff800027d3dae0,ffff800027d8da50) at >> ifioctl+0x92b >> soo_ioctl(fffffd904cc0b2e8,80206910,ffff800027d3dae0,ffff800027d8da50) >> at soo_ioctl+0x161 >> sys_ioctl(ffff800027d8da50,ffff800027d3dbf0,ffff800027d3dc40) at >> sys_ioctl+0x2c4 >> syscall(ffff800027d3dcb0) at syscall+0x374 >> Xsyscall() at Xsyscall+0x128 >> end of kernel >> end trace frame: 0x7f7fffffaf30, count: 3 >> https://www.openbsd.org/ddb.html describes the minimum info required in >> bug reports. Insufficient info makes it difficult to find and fix bugs. > > I don't have the device and don't know the code. But other drivers > don't process rx and tx interrupts when the interface is not running. > > Maybe this helps. dlg@ and jmatthew@ should know better than me. > > bluhm >
Hi all, is it good time to commit this diff? Thank you > Index: dev/pci/if_bnxt.c > =================================================================== > RCS file: /data/mirror/openbsd/cvs/src/sys/dev/pci/if_bnxt.c,v > retrieving revision 1.36 > diff -u -p -r1.36 if_bnxt.c > --- dev/pci/if_bnxt.c 14 Mar 2022 23:41:42 -0000 1.36 > +++ dev/pci/if_bnxt.c 17 Mar 2022 20:26:49 -0000 > @@ -1543,6 +1543,7 @@ bnxt_intr(void *xq) > { > struct bnxt_queue *q = (struct bnxt_queue *)xq; > struct bnxt_softc *sc = q->q_sc; > + struct ifnet *ifp = &sc->sc_ac.ac_if; > struct bnxt_cp_ring *cpr = &q->q_cp; > struct bnxt_rx_queue *rx = &q->q_rx; > struct bnxt_tx_queue *tx = &q->q_tx; > @@ -1565,10 +1566,13 @@ bnxt_intr(void *xq) > bnxt_handle_async_event(sc, cmpl); > break; > case CMPL_BASE_TYPE_RX_L2: > - rollback = bnxt_rx(sc, rx, cpr, &ml, &rxfree, &agfree, > cmpl); > + if (ISSET(ifp->if_flags, IFF_RUNNING)) > + rollback = bnxt_rx(sc, rx, cpr, &ml, &rxfree, > + &agfree, cmpl); > break; > case CMPL_BASE_TYPE_TX_L2: > - bnxt_txeof(sc, tx, &txfree, cmpl); > + if (ISSET(ifp->if_flags, IFF_RUNNING)) > + bnxt_txeof(sc, tx, &txfree, cmpl); > break; > default: > printf("%s: unexpected completion type %u\n", >