Panic during kernel booting on HP Proliant DL180G6 and latest
STABLE
David G Lawrence
dg at dglawrence.com
Thu Sep 22 10:11:58 UTC 2011
> I have a lot of supermicro motherboards and the newest ones have igb
> chipsets; they've been quite a headache with respect to FreeBSD 8. I'm
> running 8.2-RELEASE but have upgraded parts of my kernel to 8-RELENG (as
> of a few months ago). Some of them work ok while others panic on bootup.
> Upgrading to newer versions of the intel igb code fixes some but breaks
> others. It's been frustrating.
>
> While working on this today, I saw two different kernel panics:
>
> Could not setup receive structures
> m_getzone: m_getjcl: invalid cluster type
I fixed this awhile back in my local sources. A 12 core Supermicro
MB system I'm building here was hitting the bug 100% of the time during
startup. Patch attached.
-DG
Dr. David G. Lawrence
President
Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500
Pave the road of life with opportunities.
Index: if_igb.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/e1000/if_igb.c,v
retrieving revision 1.21.2.20
diff -c -r1.21.2.20 if_igb.c
*** if_igb.c 29 Jun 2011 16:16:59 -0000 1.21.2.20
--- if_igb.c 22 Sep 2011 10:04:31 -0000
***************
*** 1278,1286 ****
/* Don't lose promiscuous settings */
igb_set_promisc(adapter);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
-
callout_reset(&adapter->timer, hz, igb_local_timer, adapter);
e1000_clear_hw_cntrs_base_generic(&adapter->hw);
--- 1278,1283 ----
***************
*** 1308,1313 ****
--- 1305,1313 ----
/* Don't reset the phy next time init gets called */
adapter->hw.phy.reset_disable = TRUE;
+
+ ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
}
static void
***************
*** 1490,1501 ****
E1000_WRITE_REG(&adapter->hw, E1000_EIMC, que->eims);
++que->irqs;
IGB_TX_LOCK(txr);
more_tx = igb_txeof(txr);
IGB_TX_UNLOCK(txr);
- more_rx = igb_rxeof(que, adapter->rx_process_limit, NULL);
-
if (igb_enable_aim == FALSE)
goto no_calc;
/*
--- 1490,1505 ----
E1000_WRITE_REG(&adapter->hw, E1000_EIMC, que->eims);
++que->irqs;
+ if (!(adapter->ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ return;
+ }
+
+ more_rx = igb_rxeof(que, adapter->rx_process_limit, NULL);
+
IGB_TX_LOCK(txr);
more_tx = igb_txeof(txr);
IGB_TX_UNLOCK(txr);
if (igb_enable_aim == FALSE)
goto no_calc;
/*
More information about the freebsd-stable
mailing list