Date: Thu, 27 Sep 2012 18:07:29 +0700 (NOVT) From: Eugene Grosbein <egrosbein@rdtc.ru> To: FreeBSD-gnats-submit@FreeBSD.org 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 Message-ID: <201209271107.q8RB7TKg010636@eg.sd.rdtc.ru> Resent-Message-ID: <201209271110.q8RBAAj9001526@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209271107.q8RB7TKg010636>