From owner-freebsd-stable@FreeBSD.ORG Thu Sep 22 10:11:57 2011 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ECD57106566C; Thu, 22 Sep 2011 10:11:57 +0000 (UTC) (envelope-from dg@dglawrence.com) Received: from dglawrence.com (75-148-92-18-Oregon.hfc.comcastbusiness.net [75.148.92.18]) by mx1.freebsd.org (Postfix) with ESMTP id AD00F8FC19; Thu, 22 Sep 2011 10:11:57 +0000 (UTC) Received: from black.dglawrence.com (localhost [127.0.0.1]) by dglawrence.com (8.14.4/8.14.4) with ESMTP id p8MABu0Q033807; Thu, 22 Sep 2011 03:11:56 -0700 (PDT) (envelope-from dg@dglawrence.com) Received: (from dg@localhost) by black.dglawrence.com (8.14.4/8.14.4/Submit) id p8MABuFW033806; Thu, 22 Sep 2011 03:11:56 -0700 (PDT) (envelope-from dg@dglawrence.com) X-Authentication-Warning: black.dglawrence.com: dg set sender to dg@dglawrence.com using -f Date: Thu, 22 Sep 2011 03:11:56 -0700 From: David G Lawrence To: Craig Leres Message-ID: <20110922101156.GA11465@black.dglawrence.com> References: <4E7AAAF6.7050004@ee.lbl.gov> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E7AAAF6.7050004@ee.lbl.gov> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.6 (dglawrence.com [127.0.0.1]); Thu, 22 Sep 2011 03:11:56 -0700 (PDT) Cc: freebsd-stable@freebsd.org, John Baldwin Subject: Re: Panic during kernel booting on HP Proliant DL180G6 and latest STABLE X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Sep 2011 10:11:58 -0000 > 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; /*