>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:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to