Error loading Qlogic HBA driver module during initrd

  • 3331914
  • 15-Oct-2007
  • 12-Dec-2012

Environment

SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 10
SUSE Linux Enterprise Server 9
Novell Open Enterprise Server 2 (OES 2) Linux
Novell Open Enterprise Server 1 (OES 1) Linux
SAN, Qlogic HBA

Situation

  • A driver for a Qlogic HBA fails to load during the initial RAM disk (initrd) phase of the boot process with an error message ERROR: Unknown symbol
  • Access to the SAN is lost after a reboot.
  • Unknown parameter errors observed

Sample messages observed during boot or in the boot.msg file:

SLES10/11

<3>qla2xxx: Unknown parameter `ql2xfailover'

SLES9
Loading kernel/drivers/scsi/qla2xxx/qla2300.ko
qla2300: Unknown symbol qla2x00_remove_one
qla2300: Unknown symbol qla2x00_probe_one
insmod: error inserting'/lib/modules/2.6.5-7.244-smp/kernel/drivers/scsi/qla2xxx/qla2300.ko' -1
Unknown symbol in module

Resolution

Remove unsupported parameters from /etc/modprobe.conf, /etc/modprobe.conf.local, or the associated /etc/modprobe.conf.d file.
Generate a new initial RAM disk (initrd) using mkinitrd
Reboot the system to use the new initrd.


You can see a list of valid kernel driver parameters using the modinfo command. For example:

# modinfo qla2xxx
filename:       /lib/modules/2.6.16.60-0.21-default/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
version:        8.02.00-k6-SLES10-05
license:        GPL
description:    QLogic Fibre Channel HBA Driver
author:         QLogic Corporation
srcversion:     9C4DF7DECE33DFC897AE39B
alias:          pci:v00001077d00002532sv*sd*bc*sc*i*
alias:          pci:v00001077d00005432sv*sd*bc*sc*i*
alias:          pci:v00001077d00005422sv*sd*bc*sc*i*
alias:          pci:v00001077d00002432sv*sd*bc*sc*i*
alias:          pci:v00001077d00002422sv*sd*bc*sc*i*
alias:          pci:v00001077d00006322sv*sd*bc*sc*i*
alias:          pci:v00001077d00006312sv*sd*bc*sc*i*
alias:          pci:v00001077d00002322sv*sd*bc*sc*i*
alias:          pci:v00001077d00002312sv*sd*bc*sc*i*
alias:          pci:v00001077d00002300sv*sd*bc*sc*i*
alias:          pci:v00001077d00002200sv*sd*bc*sc*i*
alias:          pci:v00001077d00002100sv*sd*bc*sc*i*
depends:        scsi_mod,scsi_transport_fc,firmware_class
supported:      yes
vermagic:       2.6.16.60-0.21-default 586 REGPARM gcc-4.1
parm:           ql2xlogintimeout:Login timeout value in seconds. (int)
parm:           qlport_down_retry:Maximum number of command retries to a port that returns a PORT-DOWN status. (int)
parm:           ql2xplogiabsentdevice:Option to enable PLOGI to devices that are not present after a Fabric scan.  This is needed for several broken switches. Default is 0- no PLOGI. 1 - perfom PLOGI. (int)
parm:           ql2xloginretrycount:Specify an alternate value for the NVRAM login retry count. (int)
parm:           ql2xallocfwdump:Option to enable allocation of memory for a firmware dump during HBA initialization.  Memory allocation requirements vary by ISP type.  Default is 1 - allocate memory. (int)
parm:           ql2xextended_error_logging:Option to enable extended error logging, Default is 0 - no logging. 1 - log errors. (int)
parm:           ql2xfdmienable:Enables FDMI registratons Default is 0 - no FDMI. 1 - perfom FDMI. (int)
parm:           ql2xmaxqdepth:Maximum queue depth to report for target devices. (int)
parm:           ql2xqfullrampup:Number of seconds to wait to begin to ramp-up the queue depth for a device after a queue-full condition has been detected.  Default is 120 seconds. (int)

Additional Information

Root cause

In general, the parameters supported by a driver may differ between different versions of a driver and between drivers of different origin.

In the case of Qlogic HBAs, some vendors supply their own versions of drivers and document parameter settings which apply to those drivers and which may not apply to the Qlogic drivers shipped with Novell's Linux products.

When /etc/modprobe.conf contains settings for such parameters and a new initrd is generated which does not include the vendor-supplied drivers (e.g. as part of a kernel update), the new initrd may cause problems (like loss of access to a SAN) at boot time. In particular, loading of the qla2xxx driver may fail and cause subsequent failures to load the model-specific drivers like qla2100 andqla2300.

A partial list of such problematic parameters: buffers, mtu, ql2xallocfwdump, ql2xautorestore, ql2xmap2actpath.

Related information


TID 3864925 - Troubleshooting Common Boot Issues covers a more general list of (initrd-related) boot issues with Linux.