Date: Tue, 29 Nov 2011 15:27:43 -0500 From: Mike Andrews <mandrews@bit0.com> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-stable@freebsd.org, Jack Vogel <jack.vogel@intel.com> Subject: Re: Sporadic 9.0-RC2 boot-time panic Message-ID: <4ED5403F.6050401@bit0.com> In-Reply-To: <201111291050.30016.jhb@freebsd.org> References: <alpine.BSF.2.00.1111281728210.29446@beast.int.bit0.com> <201111291050.30016.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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; > } > } > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4ED5403F.6050401>