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;

Reply via email to