Linux – upgraded HBA firmware not effective

How to upgrade FC HBA firmware and drivers properly?

We were in progress of upgrading IBM SAN SVC version.  One of the prerequisite is latest recommended HBA firmware and driver level on host systems. Downloaded and installed the latest firmware & drivers from IBM website. But found server still uses old firmware even after reboot. How to make the new firmware effective?

Environment

Hardware: IBM Flex System server blade x240

Operating System: SUSE Linux Enterprise 11 SP2

HBA model: IBM Flex System FC3172 2-port 8Gb FC Adapter (Qlogic)

Current HBA firmware version: 7.03

New version trying to update: 7.04

Cause

Many Linux distributions as specially SUSE & Redhat ships kernel with default firmware (qla2xxx) for Qlogic. Kernel loads default firmware from /lib/firmware. Specifically instruct kernel to load “optrom” firmware instead of default. The kernel parameter ql2xfwloadbin=1 does this.

Solution

  1. Download the HBA driver rpm and firmware bin file from IBM. For example file names may be like these for IBM Flex system FC3172 HBA.

qlgc_fw_fc_3.12af-8g-fx.c_linux_32-64.bin

qlgc-qla2xxx-kmp-default-8.07.00.08.11.3_k2_3.0.76_0.11-1.x86_64.rpm

  1. Upgrade HBA driver first.
#rpm -ivh qlgc-qla2xxx-kmp-default-8.07.00.08.11.3_k2_3.0.76_0.11-1.x86_64.rpm
  1. Install new HBA firmware.
#cd <path to firmware file directory>
#./qlgc_fw_fc_3.12af-8g-fx.c_linux_32-64.bin –s

the “-s” switch does silent installation.

  1. Add kernel parameter “qla2xxx.ql2xfwloadbin=1“ to main kernel line.
#cp /boot/menu.lst /boot/menu.lst_bkp
#vi /boot/menu.lst

append word qla2xxx.ql2xfwloadbin=1 at end of main kernel line.

  1. Reboot server
#init 6
  1. Validate the HBA firmware and driver version now.
#dmesg |grep –i “fw=”
#dmesg |grep -i "fibre" |grep -i driver
#systool –c fc_host –d host1 –v |egrep –i “fw|driver|drv|dvr”

Was is it useful? Please post your comments.

One thought on “Linux – upgraded HBA firmware not effective

Leave a Reply

Your email address will not be published. Required fields are marked *