On 11/29/2011 10:50 AM, John Baldwin wrote:
On Monday, November 28, 2011 5:37:27 pm Mike Andrews wrote:
*Sometimes* when booting 9.0-RC2 on *some* of my machines, I'll get one of
the following two panics during multiuser startup, usually while running
the /usr/local/etc/rc.d scripts.  (The instruction pointer is always
exactly one of these two, and they look fairly related.)  If after two or
three reboots it manages to not panic, the system will run perfectly
stable.

For some probably-unrelated reason, the dump never finishes in either case.

First panic (note em0 warning before it):
-----
em0: discard frame w/o packet header
This is odd.  I see one bug that could possibly trigger this, but not on
x86:

This is amd64, which of course depending on what you meant by "not on x86" may or may not be the same thing ;-)

This is with RELENG_9_0 sources built yesterday morning (Nov 28). Kernel config's reasonably close to GENERIC with many unused drivers removed. Hardware is Supermicro X8STi-F -- we do have other (older) systems we haven't yet tried upgrading that have slightly different em revs -- maybe I'll try one of those today just to see if it's 82574L specific.

em0: <Intel(R) PRO/1000 Network Connection 7.2.3> port 0xdc00-0xdc1f mem 0xfbce0000-0xfbcfffff,0xfbcdc000-0xfbcdffff irq 16 at device 0.0 on pci1
em0: Using MSIX interrupts with 3 vectors
em0: Ethernet address: 00:25:90:xx:xx:xx
em1: <Intel(R) PRO/1000 Network Connection 7.2.3> port 0xec00-0xec1f mem 0xfbde0000-0xfbdfffff,0xfbddc000-0xfbddffff irq 16 at device 0.0 on pci2
em1: Using MSIX interrupts with 3 vectors
em1: Ethernet address: 00:25:90:xx:xx:xx

em0@pci0:1:0:0: class=0x020000 card=0x10d315d9 chip=0x10d38086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82574L Gigabit Network Connection'
    class      = network
    subclass   = ethernet
bar [10] = type Memory, range 32, base 0xfbce0000, size 131072, enabled
    bar   [18] = type I/O Port, range 32, base 0xdc00, size 32, enabled
bar [1c] = type Memory, range 32, base 0xfbcdc000, size 16384, enabled
    cap 01[c8] = powerspec 2  supports D0 D3  current D0
    cap 05[d0] = MSI supports 1 message, 64 bit
    cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
    cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected
em1@pci0:2:0:0: class=0x020000 card=0x10d315d9 chip=0x10d38086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82574L Gigabit Network Connection'
    class      = network
    subclass   = ethernet
bar [10] = type Memory, range 32, base 0xfbde0000, size 131072, enabled
    bar   [18] = type I/O Port, range 32, base 0xec00, size 32, enabled
bar [1c] = type Memory, range 32, base 0xfbddc000, size 16384, enabled
    cap 01[c8] = powerspec 2  supports D0 D3  current D0
    cap 05[d0] = MSI supports 1 message, 64 bit
    cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
    cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected



Index: if_em.c
===================================================================
--- if_em.c     (revision 228074)
+++ if_em.c     (working copy)
@@ -4305,8 +4305,10 @@ em_rxeof(struct rx_ring *rxr, int count, int *done
  #ifndef __NO_STRICT_ALIGNMENT
                        if (adapter->max_frame_size>
                        (MCLBYTES - ETHER_ALIGN)&&
-                           em_fixup_rx(rxr) != 0)
-                               goto skip;
+                           em_fixup_rx(rxr) != 0) {
+                               sendmp = NULL;
+                               goto next_desc;
+                       }
  #endif
                        if (status&  E1000_RXD_STAT_VP) {
                                sendmp->m_pkthdr.ether_vtag =
@@ -4318,9 +4320,6 @@ em_rxeof(struct rx_ring *rxr, int count, int *done
                        sendmp->m_pkthdr.flowid = rxr->msix;
                        sendmp->m_flags |= M_FLOWID;
  #endif
-#ifndef __NO_STRICT_ALIGNMENT
-skip:
-#endif
                        rxr->fmp = rxr->lmp = NULL;
                }
  next_desc:
@@ -4426,6 +4425,7 @@ em_fixup_rx(struct rx_ring *rxr)
                        adapter->dropped_pkts++;
                        m_freem(rxr->fmp);
                        rxr->fmp = NULL;
+                       rxr->lmp = NULL;
                        error = ENOMEM;
                }
        }


_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to