Latest 6.2 Kernel Is Broken

I just kickstarted a new machine with the latest CentOS 6.2 files, including kernel 2.6.32-220.13.1.el6.x86_64. It came up without network interfaces.

dmesg says:

bnx2: Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v2.2.1 (Dec 18, 2011)
alloc irq_desc for 36 on node -1
alloc kstat_irqs on node -1
bnx2 0000:01:00.0: PCI INT A -> GSI 36 (level, low) -> IRQ 36
bnx2 0000:01:00.0: setting latency timer to 64
bnx2 0000:01:00.0: firmware: requesting bnx2/bnx2-mips-09-6.2.1b.fw
bnx2: Can’t load firmware file "bnx2/bnx2-mips-09-6.2.1b.fw"
bnx2 0000:01:00.0: PCI INT A disabled
bnx2: probe of 0000:01:00.0 failed with error -2

The firmware file is missing from /lib/firmware and the kernel-firmware rpm.

I found a copy of it on a Fedora site and dumped it into the right location, but it wasn’t found after a reboot. Yet, it was found after a second reboot. Why is that? Is a rebuild of initramfs triggered somehow?

What I don’t understand is: I have an identical machine that I installed under 6.2 a while back, and kept up to date, and it doesn’t have this problem. However, it tells me it uses version v2.1.11 (July 20, 2011) of the driver, how is that possible?

# grep bnx2 /var/log/messages
Apr 23 17:10:03 localhost kernel: bnx2: Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v2.1.11 (July 20, 2011)
Apr 23 17:10:03 localhost kernel: bnx2 0000:01:00.0: PCI INT A -> GSI 36 (level, low) -> IRQ 36
Apr 23 17:10:03 localhost kernel: bnx2 0000:01:00.0: firmware: requesting bnx2/bnx2-mips-09-6.2.1a.fw
Apr 23 17:10:03 localhost kernel: bnx2 0000:01:00.0: firmware: requesting bnx2/bnx2-rv2p-09-6.0.17.fw
Apr 23 17:10:03 localhost kernel: bnx2 0000:01:00.0: eth0: Broadcom NetXtreme II BCM5716 1000Base-T (C0) PCI Express found at mem da000000, IRQ 36, node addr 78:2b:cb:67:3f:b6
[]

# modinfo /lib/modules/2.6.32-220.13.1.el6.x86_64/kernel/drivers/net/bnx2.ko
filename: /lib/modules/2.6.32-220.13.1.el6.x86_64/kernel/drivers/net/bnx2.ko
firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw
firmware: bnx2/bnx2-rv2p-09-6.0.17.fw
firmware: bnx2/bnx2-mips-09-6.2.1a.fw
firmware: bnx2/bnx2-rv2p-06-6.0.15.fw
firmware: bnx2/bnx2-mips-06-6.2.1.fw
version: 2.1.11
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver
[]

# lspci -v -s 01:00.1
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet (rev 20)
Subsystem: Dell PowerEdge R410 BCM5716 Gigabit Ethernet
Flags: bus master, fast devsel, latency 0, IRQ 48
Memory at dc000000 (64-bit, non-prefetchable) [size=32M]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/16 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=9 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Device Serial Number 78-2b-cb-ff-fe-67-3f-b7
Capabilities: [110] Advanced Error Reporting
Capabilities: [150] Power Budgeting
Capabilities: [160] Virtual Channel
Kernel driver in use: bnx2
Kernel modules: bnx2

, , , , , , ,

  1. #1 by Johnny Hughes on April 23rd, 2012 - 1:25 pm

    There are now new external kernel modules for that:

    http://lists.centos.org/pipermail/centos-announce/2012-April/018587.html

    yum install kmod-bnx2

  2. #2 by Lars Hecking on April 23rd, 2012 - 3:34 pm

    They are all installed.

    # yum list installed kmod*
    Loaded plugins: fastestmirror, kabi, refresh-packagekit, security
    Loading support for CentOS kernel ABI
    Cleaning repos: base extras updates
    Cleaning up Everything
    Cleaning up list of fastest mirrors
    Loaded plugins: fastestmirror, kabi, refresh-packagekit, security
    Loading support for CentOS kernel ABI
    Determining fastest mirrors
    base | 3.7 kB 00:00 …
    base/primary_db | 4.5 MB 00:00 …
    updates | 3.5 kB 00:00 …
    updates/primary_db | 2.9 MB 00:00 …
    Installed Packages
    kmod-bnx2.x86_64 2.2.1-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-bnx2fc.x86_64 1.0.10-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-bnx2i.x86_64 2.7.2.1-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-bnx2x.x86_64 1.72.00_0-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-bnx2x-firmware.x86_64
    1.72.00_0-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-cnic.x86_64 2.5.9-1.el6_2 @anaconda-CentOS-201112091719.x86_64/6.2
    kmod-tg3.x86_64 3.119-2.el6_1 @base
    Loaded plugins: fastestmirror, kabi, refresh-packagekit, security
    Loading support for CentOS kernel ABI
    Cleaning repos: base extras updates
    0 package files removed

  3. #3 by Peter Kjellstr on April 24th, 2012 - 7:02 am

    This is because you have the kmod-bnx2 package which contains a newer driver
    (2.2.1) but not a complete set of firmwares (two out of five files missing).

    This machine is using the normal bnx2 driver (2.1.11) for which there is a
    complete set of firmwares (provided by the kernel-firmware package).

    If you don’t need the 2.2.1 driver I suggest you remove the kmod-bnx2 package
    from the first machine and fall back to the driver in the normal kernel
    package.

    /Peter

  4. #4 by Ned Slider on April 24th, 2012 - 11:05 am

    This is fixed in RHEL6.3 (beta) where the kernel-firmware package
    contains the latest firmware that you are missing above:

    $ rpm -q kernel-firmware
    kernel-firmware-2.6.32-262.el6.noarch
    $ rpm -ql kernel-firmware | grep bnx2-mips
    /lib/firmware/bnx2/bnx2-mips-06-5.0.0.j6.fw
    /lib/firmware/bnx2/bnx2-mips-06-6.0.15.fw
    /lib/firmware/bnx2/bnx2-mips-06-6.2.1.fw
    /lib/firmware/bnx2/bnx2-mips-06-6.2.3.fw
    /lib/firmware/bnx2/bnx2-mips-09-5.0.0.j15.fw
    /lib/firmware/bnx2/bnx2-mips-09-5.0.0.j3.fw
    /lib/firmware/bnx2/bnx2-mips-09-6.0.17.fw
    /lib/firmware/bnx2/bnx2-mips-09-6.2.1a.fw
    /lib/firmware/bnx2/bnx2-mips-09-6.2.1b.fw

    In the meantime (as a workaround), just grab the missing firmware and
    place it in the appropriate directory.

  5. #5 by Peter Kjellstr on April 25th, 2012 - 5:40 am

    What you’re hitting is similar but not the same. You installed an rpm that
    redhat built for a few new NICs as part of their DUP (Driver Update Program):

    https://rhn.redhat.com/errata/RHEA-2012-0503.html

    Afaict, they say not to use it for other NICs. In your case a non listed NIC
    broke because that package lacked some firmware.

    That is, the problem is crystal clear, bug in the kmod-bnx2 package (but it
    could be claimed to be a documented limitation…).

    “yum remove kmod-bnx2″ is suggested way to remove packages in a dependency-
    aware way.

    /Peter

  6. #6 by Peter Kjellstr on April 25th, 2012 - 5:45 am


    To be clear, there is no bug/problem in the kernel-firmware package in 6.2.
    This thread is about the behaviour of a driver update (kmod-bnx2) with its own
    (incomplete) set of firmware. As you point out, 6.3 will have the new driver
    and its firmware.

    No, in the meantime don’t install kmod-bnx2 unless you need it, it’s not meant
    as a general update for the kernel provided bnx2.

    /Peter

  7. #7 by Ned Slider on April 25th, 2012 - 7:16 am

    Agreed.

    My workaround was assuming that one actually *needs* the updated driver.

  8. #8 by Peter Kjellstr on April 25th, 2012 - 7:31 am

    Interesting, are you saying that any standard install package selection
    includes these updated drivers?

    /Peter

  9. #9 by Lars Hecking on April 25th, 2012 - 7:48 am

    Peter Kjellstr??m writes:

    I’m using a custom group that install pretty much everything. Ok, not
    really everything, but about three quartes of all >6k packages. The local
    repo is a repomanage merge of os and updates tree.

  10. #10 by Peter Kjellstr on April 25th, 2012 - 10:50 am

    Let me rephrase that, did you explicitly select these packages or did a group
    pull them in?

    /Peter

  11. #11 by Lars Hecking on April 25th, 2012 - 11:00 am

    It is a custom group that originally included kmod-bnx2. I removed it but
    according to the yum log during install, it was still pulled in by kmod-cnic.
    So I needed to remove that one as well.

(will not be published)
Subscribe to comments feed