Server with 3TB Crashing at boot

Konstantin Belousov kostikbel at gmail.com
Tue Mar 17 22:06:50 UTC 2015


On Tue, Mar 17, 2015 at 09:26:13AM +0100, Michael Fuckner wrote:
> >>
> >> At least I figured out how to remove the empty Lines (Ctrl-a, shift-A).
> >> Don't run minicom inside a screen ;-)
> > I do not quite understand why such programs as minicom are needed at all.
> > Isn't tip (AKA cu) good enough ?
> OK, I'll test cu+tee for logging. Basicially I like cu, but logging with 
> minicom is quite easy
> 
> 
> > Please add the following patch to the kernel.
> >
> > diff --git a/sys/x86/iommu/intel_gas.c b/sys/x86/iommu/intel_gas.c
> <snip>
> it looks like this with the gas patch.
> 
> 
> http://dedi3.fuckner.net/~molli123/temp/head-ixgbe-gas.txt
So machine booted, right ?

Do network and non-nvme HBAs function correctly ?

> 
> but when I do nvmecontrol devlist, I get a panic again
> http://dedi3.fuckner.net/~molli123/temp/nvme.log

I committed the hardening of some assert that supposedly could catch
the situation earlier.  Also I committed the boundary fix.

Please update the head to at least r280196.  Since there were conflicting
changes to ixgbe, below is the re-merged patch to fix NULL dereference.

diff --git a/sys/dev/ixgbe/ix_txrx.c b/sys/dev/ixgbe/ix_txrx.c
index b16301d..79a5f92 100644
--- a/sys/dev/ixgbe/ix_txrx.c
+++ b/sys/dev/ixgbe/ix_txrx.c
@@ -1040,7 +1040,6 @@ ixgbe_txeof(struct tx_ring *txr)
 			    buf->map);
 			m_freem(buf->m_head);
 			buf->m_head = NULL;
-			buf->map = NULL;
 		}
 		buf->eop = NULL;
 		++txr->tx_avail;
@@ -1066,7 +1065,6 @@ ixgbe_txeof(struct tx_ring *txr)
 				    buf->map);
 				m_freem(buf->m_head);
 				buf->m_head = NULL;
-				buf->map = NULL;
 			}
 			++txr->tx_avail;
 			buf->eop = NULL;
@@ -1386,8 +1384,7 @@ ixgbe_allocate_receive_buffers(struct rx_ring *rxr)
 
 	for (i = 0; i < rxr->num_desc; i++, rxbuf++) {
 		rxbuf = &rxr->rx_buffers[i];
-		error = bus_dmamap_create(rxr->ptag,
-		    BUS_DMA_NOWAIT, &rxbuf->pmap);
+		error = bus_dmamap_create(rxr->ptag, 0, &rxbuf->pmap);
 		if (error) {
 			device_printf(dev, "Unable to create RX dma map\n");
 			goto fail;


More information about the freebsd-hackers mailing list