From owner-freebsd-bugs@FreeBSD.ORG Thu Sep 27 11:10:11 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0F515106564A for ; Thu, 27 Sep 2012 11:10:11 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id DCEA88FC18 for ; Thu, 27 Sep 2012 11:10:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q8RBAAaA001532 for ; Thu, 27 Sep 2012 11:10:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q8RBAAj9001526; Thu, 27 Sep 2012 11:10:10 GMT (envelope-from gnats) Resent-Date: Thu, 27 Sep 2012 11:10:10 GMT Resent-Message-Id: <201209271110.q8RBAAj9001526@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Eugene Grosbein Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 31C1C106566C; Thu, 27 Sep 2012 11:07:39 +0000 (UTC) (envelope-from eugen@eg.sd.rdtc.ru) Received: from eg.sd.rdtc.ru (eg.sd.rdtc.ru [IPv6:2a03:3100:c:13::5]) by mx1.freebsd.org (Postfix) with ESMTP id 4C8918FC15; Thu, 27 Sep 2012 11:07:37 +0000 (UTC) Received: from eg.sd.rdtc.ru (localhost [127.0.0.1]) by eg.sd.rdtc.ru (8.14.5/8.14.5) with ESMTP id q8RB7YXJ010637; Thu, 27 Sep 2012 18:07:34 +0700 (NOVT) (envelope-from eugen@eg.sd.rdtc.ru) Received: (from eugen@localhost) by eg.sd.rdtc.ru (8.14.5/8.14.5/Submit) id q8RB7TKg010636; Thu, 27 Sep 2012 18:07:29 +0700 (NOVT) (envelope-from eugen) Message-Id: <201209271107.q8RB7TKg010636@eg.sd.rdtc.ru> Date: Thu, 27 Sep 2012 18:07:29 +0700 (NOVT) From: Eugene Grosbein To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: jfv@FreeBSD.org, qa@FreeBSD.org Subject: kern/172113: [panic] [igb] [patch] 9.1-RC1/amd64 panices in igb(4): m_getjcl: invalid cluster type X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Sep 2012 11:10:11 -0000 >Number: 172113 >Category: kern >Synopsis: [panic] [igb] [patch] 9.1-RC1/amd64 panices in igb(4): m_getjcl: invalid cluster type >Confidential: no >Severity: critical >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Sep 27 11:10:09 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Eugene Grosbein >Release: FreeBSD 9.1-RC1 amd64 >Organization: RDTC JSC >Environment: System: FreeBSD 9.1-RC1 >Description: We have got SuperMicro-based server (X8DTU-6+ motherboard), with CPU having 12 cores (with hyperthreadng that's 24 CPUs). We downloaded 9.1-RC1 installation CD and tried to boot it. It panices during igb(4) driver init: http://www.grosbein.net/img/crash-91rc.png This is 100% repeatable. >How-To-Repeat: See above. >Fix: Workaround is to disable MSI-X in /boot/loader.conf: hw.pci.enable_msix=0 This allows us to boot installation CD and install the system. I've found this problem is pretty old and should have been fixed over a year ago in 9.0 but it wasn't. I've found patch by David G. Lawrence in that thread: http://lists.freebsd.org/pipermail/freebsd-stable/2011-September/063963.html The patch needed some corrections to be applied to 9.1-RC1, so I've corrected it and it solved the problem. Here is version for 9.1-RC1: --- sys/dev/e1000/if_igb.c.orig 2012-09-27 14:57:22.000000000 +0700 +++ sys/dev/e1000/if_igb.c 2012-09-27 15:04:35.000000000 +0700 @@ -1328,9 +1328,6 @@ /* 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); @@ -1356,6 +1353,9 @@ /* Set Energy Efficient Ethernet */ if (adapter->hw.phy.media_type == e1000_media_type_copper) e1000_set_eee_i350(&adapter->hw); + + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; } static void @@ -1570,6 +1570,11 @@ 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); igb_txeof(txr); #if __FreeBSD_version >= 800000 @@ -1583,8 +1588,6 @@ #endif IGB_TX_UNLOCK(txr); - more_rx = igb_rxeof(que, adapter->rx_process_limit, NULL); - if (adapter->enable_aim == FALSE) goto no_calc; /* >Release-Note: >Audit-Trail: >Unformatted: