On Mon, Nov 23, 2015 at 11:21:26AM +0000, Ricardo Mestre wrote:
> Hi,
>
> As soon as dlg@ sent the patch to tech@ for sys/net/if.c (1.408) and
> sys/dev/pci/if_de.c (1.127), a few days ago, I wanted to test them
> before the actual commit, but was not able until today. And it bit me
> the hard way, my Hyper-V VMs don't boot anymore with the lastest kernel
> from today, it crashes as soon as "starting network" appears in the
> screen (I know it's not real hardware, and I still can boot from a
> previous kernel, so it's not critical, nevertheless you should be aware
> of this).
>
> crash, trace, ps, registers, and dmesg from kernel built on 15/11 below:
\o/
im happy to find this out before everything fell out of my head.
could you try the diff below?
Index: if_de.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_de.c,v
retrieving revision 1.127
diff -u -p -r1.127 if_de.c
--- if_de.c 20 Nov 2015 03:35:23 -0000 1.127
+++ if_de.c 23 Nov 2015 14:22:14 -0000
@@ -3259,9 +3259,6 @@ tulip_rx_intr(tulip_softc_t * const sc)
TULIP_RXMAP_POSTSYNC(sc, map);
bus_dmamap_unload(sc->tulip_dmatag, map);
tulip_free_rxmap(sc, map);
-#if defined(DIAGNOSTIC)
- TULIP_SETCTX(me, NULL);
-#endif
me->m_len = TULIP_RX_BUFLEN;
last_offset += TULIP_RX_BUFLEN;
me->m_next = ml_dequeue(&sc->tulip_rxq);
@@ -3282,9 +3279,6 @@ tulip_rx_intr(tulip_softc_t * const sc)
BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(sc->tulip_dmatag, map);
tulip_free_rxmap(sc, map);
-#if defined(DIAGNOSTIC)
- TULIP_SETCTX(me, NULL);
-#endif
sc->tulip_flags |= TULIP_RXACT;
accept = 1;
} else {
@@ -3320,9 +3314,6 @@ tulip_rx_intr(tulip_softc_t * const sc)
map = TULIP_GETCTX(me, bus_dmamap_t);
bus_dmamap_unload(sc->tulip_dmatag, map);
tulip_free_rxmap(sc, map);
-#if defined(DIAGNOSTIC)
- TULIP_SETCTX(me, NULL);
-#endif
}
#if defined(TULIP_DEBUG)
cnt++;
@@ -3914,8 +3905,6 @@ tulip_txput(tulip_softc_t * const sc, st
nextout = ri->ri_first;
}
TULIP_TXMAP_PRESYNC(sc, map);
- TULIP_SETCTX(m, map);
- map = NULL;
/*
* The descriptors have been filled in. Now get ready
@@ -3923,6 +3912,9 @@ tulip_txput(tulip_softc_t * const sc, st
*/
if (!notonqueue)
ifq_deq_commit(&ifp->if_snd, m);
+
+ TULIP_SETCTX(m, map);
+ map = NULL;
ml_enqueue(&sc->tulip_txq, m);
m = NULL;