Fibre Channel Storage Is Unavailable When Using Sun StorageTek 4Gb FC EM

Affected OS

Red Hat Enterprise Linux Advanced Server 4 Update 4

Problem

During Red Hat Linux installation, the incorrect driver is installed for the Sun StorageTek 4Gb FC Dual-Port Express Module (EM). Consequently the hardware prober kudzu never loads the correct driver for this EM. The following problems occur:

  1. The qla2322 driver loads instead of the qla2400 driver. The qla2322 driver prevents the use of any Fibre drives attached to the I/O card during installation.

  2. The following incorrect entry is entered in /etc/modprobe.conf and is included in the kernel’s initial ramdisk.

    /etc/modprobe.conf

  3. After the installation is complete, the following lines are incorrect in /usr/share/hwdata/pcitable and cause kudzu to assign incorrect drivers on the installed system:

    0x1077       0x2422  "qla2322"       "QLogic Corp.|QLA2422 Fibre Channel Adapter"
    0x1077       0x2432  "qla2322"       "QLogic Corp.|QLA2432 Fibre Channel Adapter"

    During the installation, the following lines are incorrect in /modules/pcitableand cause kudzu to assign incorrect drivers on the installed system:

    0x1077       0x2422  "qla2322"       "QLogic Corp.|QLA2422 Fibre Channel Adapter"
    0x1077       0x2432  "qla2322"       "QLogic Corp.|QLA2432 Fibre Channel Adapter"
  4. The following output shows the incorrect driver assigned to the I/O card by kudzu:

    class: SCSI
    bus: PCI
    detached: 0
    driver: qla2322
    desc: "QLogic Corp. QLA2432 Fibre Channel Adapter"
    vendorId: 1077
    deviceId: 2432
    subVendorId: 1077
    subDeviceId: 013d
    pciType: 1
    pcidom:    0
    pcibus: 83
    pcidev:  0
    pcifn:  1
    -
    class: SCSI
    bus: PCI
    detached: 0
    driver: qla2322
    desc: "QLogic Corp. QLA2432 Fibre Channel Adapter"
    vendorId: 1077
    deviceId: 2432
    subVendorId: 1077
    subDeviceId: 013d
    pciType: 1
    pcidom:    0
    pcibus: 83
    pcidev:  0
    pcifn:  0

Workaround

At the time of the Red Hat Linux installation, perform these steps:

  1. Use a Kickstart file for installation. Add a device command to the Kickstart file:

    "device scsi qla2400"

  2. On the installed system, run the up2date application to get the latest updates from Red Hat.

  3. Edit the file /etc/modprobe.conf:

    1. Find "qla2322" in the last field on any alias scsi_hostadapter lines.

    2. Replace "qla2322" with "qla2400"

      Example

      alias scsi_hostadapter1 qla2322

      becomes

      alias scsi_hostadapter1 qla2400

    3. Save the file and backup your existing initial ramdisk.

  4. Create a new initial ramdisk that will include the qla2400 module.

    Example: mkinitrd -vf /boot/initrd-2.6.9-42.ELsmp.img 2.6.9-42.ELsmp

  5. Reboot and verify that the new image boots and loads the qla2400 driver.