QLogic Driver Readme File QLogic Corporation All rights reserved Table of Contents 1. Package Contents 2. Supported Adapters/Controllers 3. Supported Operating Systems 4. Installing the Driver 5. Additional Notes 6. Contacting Support 1. Package Contents The Fibre Channel Adapter and Converged Network Adapter Inbox Driver for Linux Kernel 2.6.x and 3.x package contains the following files: * qla2xxx-src-vx.xx.xx.xx.5.x-k.tar.gz - Compressed package that contains the driver for Red Hat RHEL 5.x. * qla2xxx-src-vx.xx.xx.xx.06.x-k.tar.gz - Compressed package that contains the driver for Red Hat RHEL 6.x. * qla2xxx-src-vx.xx.xx.xx.07.x-k.tar.gz - Compressed package that contains the driver for Red Hat RHEL 7.x. * qla2xxx-src-vx.xx.xx.xx.10.x-k.tar.gz - Compressed package that contains the driver for SuSE SLES 10.x. * qla2xxx-src-vx.xx.xx.xx.11.1-k.tar.gz - Compressed package that contains the driver for SuSE SLES 11 SP 1/2. * qla2xxx-src-vx.xx.xx.xx.11.3-k.tar.gz - Compressed package that contains the driver for SuSE SLES 11 SP 3. * qla2xxx-src-vx.xx.xx.xx.55.x-k.tar.gz - Compressed package that contains the driver for Citrix Xenserver 6.x. * qla2xxx-src-vx.xx.xx.xx.32.x-k.tar.gz - Compressed package that contains the driver for Oracle UEK 1. * qla2xxx-src-vx.xx.xx.xx.39.x-k.tar.gz - Compressed package that contains the driver for Oracle UEK 2. NOTE: xx represents the driver package version number. 2. Supported adapters 2400/2500/2600/10000 Series Fibre Channel Adapters. 8100/8200/8300 Series Converged Network Adapters. 3. Supported operating systems The Fibre Channel Adapter and Converged Network Adapter Inbox Driver for Linux is compatible with the following OS platforms: * Red Hat RHEL AS 5.x (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 * Red Hat RHEL AS 6.x (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 * Red Hat RHEL AS 7.x (64-bit) on Intel 64, AMD64 * SuSE SLES 10.x (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 * SuSE SLES 11.x (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 * Citrix Xenserver 6.x (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 * Oracle UEK (32-bit, 64-bit) on Intel x86, Intel 64, AMD64 4. Installing the driver This section provides procedures for deploying the driver on various Linux versions, including the following: * 4.1 Building the Driver for RHEL 5.x Linux * 4.2 Building the Driver for RHEL 6.x Linux * 4.3 Building the Driver for SLES 10.x Linux * 4.4 Building the Driver for SLES 11.x Linux * 4.5 Building the Driver for XenServer 6.x. * 4.6 Building the Driver for UEK 1. * 4.7 Building the Driver for UEK 2. * 4.8 Building the Errata Kernel with the Driver. * 4.9 Updating Driver on Citrix Xenserver 6.x from RPM. * 4.10 Build Script Directives. 4.1 Building the Driver for RHEL 5.x Linux 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.5.x-k.tar.gz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.5.x-k.tar.gz # cd qla2xxx-src-vx.xx.xx.xx.5.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Copies the .ko files to the appropriate /lib/modules/2.6.../extra/qlgc-qla2xxx directory. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * To directly load the driver from the local build directory, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko # insmod qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver as follows: a. Edit the /etc/modprobe.conf file and add the following entry (if they are not present): alias scsi_hostadapterX qla2xxx where, X is based on the order of the SCSI modules being loaded. b. Create a backup copy of the RAMDISK image by issuing the following commands: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak # mkinitrd -v `uname -r` -f initrd-[kernel version].img NOTE: Depending on the server hardware, the RAMDISK file name may be different. c. To load the driver, reboot the host. 4.2 Building the Driver for RHEL 6.x Linux 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.06.x-k.tar.gz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.06.x-k.tar.gz # cd qla2xxx-src-vx.xx.xx.xx.06.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Copies the .ko files to the appropriate /lib/modules/2.6.../extra/qlgc-qla2xxx directory. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * To directly load the driver from the local build directory, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/scsi_tgt.ko (if not already loaded) # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko # insmod qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver as follows: a. Edit the /etc/modprobe.d/modprobe.conf file and add the following entry. (Create a modprobe.conf file if it does not exist): alias scsi_hostadapterX qla2xxx where, X is based on the order of the SCSI modules being loaded. b. Create a backup copy of the RAMDISK image by issuing the following commands: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak # mkinitrd -v `uname -r` -f initrd-[kernel version].img NOTE: Depending on the server hardware, the RAMDISK file name may be different. c. To load the driver, reboot the host. 4.3 Building the Driver for SLES 10.x Linux 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.xx.x-k.tgz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.10.x-k.tgz # cd qla2xxx-src-vx.xx.xx.xx.10.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Copies the .ko files to the appropriate /lib/modules/2.6.../updates directory. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * To directly load the driver from the local build directories, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko (if not already loaded) # insmod /lib/modules/2.6.../kernel/drivers/base/ firmware_class.ko (if not already loaded) # insmod /lib/modules/2.6.../updates/qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver as follows: a. Edit the /etc/sysconfig/kernel file to modify the INITRD_MODULES directive and append "qla2xxx" to the string. For example: INITRD_MODULES=".... qla2xxx" where, qla2xxx is appended to the end of the directive. b. Create a backup copy of the RAMDISK image by issuing the following commands: # cd /boot # cp initrd-[kernel version] initrd-[kernel version].bak # mkinitrd NOTE: Depending on the server hardware, the RAMDISK file name may be different. c. To load the driver, reboot the host. 4.4 Building the Driver for SLES 11.x Linux 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.xx.x-k.tgz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.11.x-k.tgz # cd qla2xxx-src-vx.xx.xx.xx.11.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Copies the .ko files to the appropriate /lib/modules/2.6.../updates directory. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * For SLES 11 only, edit the /etc/modprobe.d/unsupported_modules file to make the following change: allow_unsupported_modules 1 (replace 0 by 1) * To directly load the driver from the local build directories, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/scsi_tgt.ko (if not already loaded) # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko (if not already loaded) # insmod /lib/modules/2.6.../updates/qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver. * For SLES 11 only, edit the /etc/modprobe.d/unsupported_modules file to make the following change: allow_unsupported_modules 1 (replace 0 by 1) * Create a copy of the current RAMDISK by issuing the following commands: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak # mkinitrd NOTE: Depending on the server hardware, the RAMDISK file name may be different. * To load the driver, reboot the host. 4.5 Building the Driver for XenServer 6.x. 1. Install the XenServer host software on the server(s). 2. Install XenCenter on the workstation(s). 3. Connect XenCenter to the XenServer host(s). 4. Compiling the driver inside DDK VM. # DDK VM comes in "ddk.iso" format, extract it. # This creats a directory which contain ova.xml file. # Click on import VM & point out "ova.xml" file. Import process takes more than 15 minutes. # Power on DDK VM. # Make sure you can access DDK VM through virtual NIC. 1. Copy qla2xxx sources inside DDK VM. 2. Extract the source 3. Inside the extracted directory above, Run /extras/build_rpm.sh or /extras/build.sh. ./extras/build_rpm.sh will generate a driver rpm file. ./extras/build.sh will generate qla2xxx.ko file 5. Installing the driver Citrix Xenserver 6.x Copy the driver rpm or qla2xxx.ko file generated above to Xenserver. Depending upon rpm or kernel module build perform following 1. In case of qla2xxx.ko kernel module built, run command "modinfo qla2xxx | grep /lib/" to find out the path where qla2xxx.ko to be copied. Replace the qla2xxx.ko at the path obtained. 2. In case of rpm built, install rpm using --force command. (e.g rpm -ivh qla2xxx...*.rpm --force) # Reboot XenServer. XenServer will come up with latest driver. 4.6 Building the Driver for UEK 1. 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.32.x-k.tar.gz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.32.x-k.tar.gz # cd qla2xxx-src-vx.xx.xx.xx.32.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * To directly load the driver from the local build directory, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko # insmod qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver as follows: a. Edit the /etc/modprobe.d/modprobe.conf file and add the following entry. (Create a modprobe.conf file if it does not exist): alias scsi_hostadapterX qla2xxx where, X is based on the order of the SCSI modules being loaded. b. Create a backup copy of the RAMDISK image by issuing the following commands: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak # mkinitrd -v `uname -r` -f initrd-[kernel version].img NOTE: Depending on the server hardware, the RAMDISK file name may be different. c. To load the driver, reboot the host. 4.7 Building the Driver for UEK 2. 1. In the directory that contains the source driver file, qla2xxx-src-vx.xx.xx.xx.39.x-k.tar.gz, issue the following commands: # tar -xzvf qla2xxx-src-vx.xx.xx.xx.39.x-k.tar.gz # cd qla2xxx-src-vx.xx.xx.xx.39.x-k 2. Build and install the driver modules from the source code by executing the build.sh script as follows: # ./extras/build.sh install The build.sh script does the following: * Builds the driver .ko files. * Adds the appropriate directive in the modprobe.conf (if applicable). 3. Manually load the driver for Linux Using insmod or modprobe. * To directly load the driver from the local build directory, issue the following insmod commands in order: # insmod /lib/modules/2.6.../kernel/drivers/scsi/ scsi_transport_fc.ko # insmod qla2xxx.ko * To load the driver using modprobe, issue the following command: # modprobe -v qla2xxx * To unload the driver using modprobe, issue the following command: # modprobe -r qla2xxx 4. Automatically load the driver by rebuilding the RAM disk to include the driver as follows: a. Edit the /etc/modprobe.d/modprobe.conf file and add the following entry. (Create a modprobe.conf file if it does not exist): alias scsi_hostadapterX qla2xxx where, X is based on the order of the SCSI modules being loaded. b. Create a backup copy of the RAMDISK image by issuing the following commands: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak # mkinitrd -v `uname -r` -f initrd-[kernel version].img NOTE: Depending on the server hardware, the RAMDISK file name may be different. c. To load the driver, reboot the host. 4.8 Building the Errata Kernel with the Driver. 1. Install the errata kernel. 2. Copy the driver to the errata kernel module location: # cp /lib/modules/[running kernel version]/extra/qlgc-qla2xxx/*.* /lib/modules/[errata kernel version]/extra/qlgc-qla2xxx/ OR # cp /lib/modules/[out-of-box driver location]/qla2xxx/*.* /lib/modules/[errata kernel version]/extra/qlgc-qla2xxx/ 3. In case of out-of-box (OOB) driver, copy the driver (qla2xxx.ko) to /lib/modules/[errata kernel version]/extra/qlgc-qla2xxx/ In case of OOB driver, please make sure the OOB driver is present in /lib/modules/[errata kernel version]/extra/qlgc-qla2xxx/ before running step 4. 4. Create the dependency list for the errata kernel: # depmod -v [errata kernel version] 5. Create the errata kernel RAMDISK image: # mkinitrd -v [errata kernel version] -f initrd-[errata kernel version].img 6. Reboot the host. Example: if running kernel is 2.6.18-348.el5 and errata kernel is 2.6.18-348.3.1.el5, then after installing the errata kernel, steps 2-4 above would be: # cp /lib/modules/2.6.18-348.el5/extra/qlgc-qla2xxx/*.* /lib/modules/2.6.18-348.3.1.el5/extra/qlgc-qla2xxx # depmod -v 2.6.18-348.3.1.el5 # mkinitrd -v 2.6.18-348.3.1.el5 -f initrd-2.6.18-348.3.1.el5.img 4.9 Updating Driver on Citrix Xenserver 6.x from RPM. On Citrix Xenserver 6.x in a boot-from-SAN environment, to upgrade the driver from a rpm driver package, a manual rebuild of the RAMDISK is required. 1. Install the qla2xxx driver rpm: # rpm -ihv qla2xxx-modules-[kernel version]-[driver version].i386.rpm 2. Create a backup copy of the RAMDISK image: # cd /boot # cp initrd-[kernel version].img initrd-[kernel version].img.bak 3. Rebuild the RAMDISK and reboot: # mkinitrd -f initrd-[kernel version].img `uname -r` # reboot 4.10 Build Script Directives. The following describes the various build.sh directives: Start by changing to the driver source directory: # cd Then build.sh can be invoked in the following manner: # ./extras/build.sh Build the driver sources based on the standard SLES10/SLES11/RHEL5/RHEL6 build environment. # ./extras/build.sh clean Clean driver source directory of all build files (i.e. *.ko, *.o, etc). # ./extras/build.sh new Rebuild the driver sources from scratch. This is essentially a shortcut for: # ./build.sh clean # ./build.sh # ./extras/build.sh install Build and install the driver module files. This command performs the following: 1. Builds the driver .ko files. 2. Copies the .ko files to the appropriate /lib/modules/... directory. # ./extras/build.sh remove Remove/uninstall the driver module files. This command performs the following: 1. Uninstalls the driver .ko files from the appropriate /lib/modules/... directory. 2. Rebuilds the initrd image with the /sbin/mk_initrd command. # ./extras/build.sh initrd Build, install, and update the initrd image. This command performs the following: 1. All steps in the 'install' directive. 2. Rebuilds the initrd image with the /sbin/mk_initrd command. NOTE: In order build drivers, a kernel with full development package is needed. 5. Additional Notes 5.1 Boot from SAN 5.2 System parameters 5.3 Performance Tunning 5.4 Uninstalling/removing the driver 5.5 Firmware Installation 5.6 Dynamically Modifying SCSI Blacklist Entries 5.1 Boot from SAN Booting from SAN means booting to the OS from a Fibre Channel target device. We recommend using the QLogic inbox driver to install the OS to a Fibre Channel target device that is attached to a QLogic adapter. If there is no QLogic inbox driver that supports the adapter, you should use a DD-kit to boot from SAN. RHEL 5.x Boot from SAN Installation on Non-LUN 0 LUN ---------------------------------------------------- NOTE: The following procedure is for the RHEL 5 distribution only. When installing to a LUN other than LUN 0 and LUN 0 is present, follow these steps to successfully boot from the LUN: 1. On the Boot Loader Configuration screen, select the Configure Advance Boot Loader Option, and then click Next. 2. On the Advanced Boot Loader Configuration screen, select Change Drive Order. 3. On the Edit Drive Order window, move the entry for the boot LUN. 4. To continue, click OK. 5. Continue with the OS installation as usual. 5.2 System parameters The driver gets its parameters when specified with the insmod command. For example: # insmod qla2xxx.ko ql2xextended_error_logging=1 If using the modprobe command, you must specify the parameters as options in the following file (specific to each distro): * /etc/modprobe.conf file for RHEL 5.x, * /etc/modprobe.d/modprobe.conf for RHEL 6.x, * /etc/modprobe.conf.local for SLES 11.x. For example: options qla2xxx ql2xextended_error_logging=1 Parameters for the Linux driver include the following: * ql2xlogintimeout - Defines the login timeout value in seconds during the initial login. Default: 20 seconds * qlport_down_retry - Defines how long to wait for a port that returns a PORT-DOWN status before returning I/O back to the OS. Default: 30 seconds * ql2xplogiabsentdevice - Enables 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. * ql2xloginretrycount - Specifies an alternate value for the NVRAM login retry count. Default is 8. * ql2xallocfwdump - Enables allocation of memory for a firmware dump during initialization. Memory allocation requirements vary by type. Default is 1 - allocate memory. * ql2xextended_error_logging - Defines whether the driver prints verbose logging information. 0 to disable; 1 to enable. Default: 0. * ql2xfdmienable - Enables FDMI registrations Default is 0 - no FDMI. 1 - perfom FDMI. * ql2xmaxqdepth - Defines the maximum queue depth reported to SCSI mid-level per device. The Queue depth specifies the number of outstanding requests per LUN. Default is 32. * ql2xqfullrampup - Number of seconds to wait to begin to ramp-up of the queue depth for a device after a queue-full condition has been detected. Default is 120 seconds. * ql2xqfulltracking - Controls whether the driver tracks queue full status returns and dynamically adjusts a SCSI device's queue depth. Default is 1 to perform tracking. Set to 0 to disable tracking and adjustment of queue. * ql2xfwloadbin - Specifies location from which to load ISP firmware. 2 - load firmware via the request_firmware() interface. 1 - load firmware from Flash. 0 - use default semantics. * ql2xshiftctondsd - Set to control shifting of command type processing based on total number of SG elements. Default is 6. * ql2xenabledif - Enables T10 DIF support. Default is 2. 2 - enable DIF for all types, except Type 0. 1 - enable T10 DIF. 0 - disable T10 DIF. * ql2xenablehba_err_chk - Enable T10 DIF Error isolation. Default is 2. 2 - enable error isolation for all Types. 1 - enable error isolation only for DIF Type 0. 0 - disable error isolation. * ql2xiidmaenable - Enable iIDMA. Default is 1. 1 - enable iIDMA. 0 - disable iIDMA. * ql2xmaxqueues - Enable multiple queues. Default is 1 (single queue). Sets the number of queues in multiqueue mode. * ql2xmultique_tag - Enable CPU affinity to IO request/response. Default is 0. 1 - enable cpu affinity. 0 - disable cpu affinity. * ql2xetsenable - Enable firmware ETS burst. Default is 0. 1 - enable firmware ETS burst. 0 - disable firmware ETS burst. * ql2xdbwr - Specifies scheme for request queue posting. Default is 1. 1 - CAMRAM doorbell (faster). 0 - Regular doorbell. * ql2xdontresethba - Specifies reset behaviour. Default is 0. 0 - Reset on failure. 1 - Do not reset on failure. * ql2xmaxlun - Specifies maximum LUN's to register with SCSI midlayer. Default is 65535. * ql2xtargetreset - Enable target reset on error handling. Default is 1. 1 - enable target reset on IO completion error. 0 - disable target reset on IO completion error. * ql2xgffidenable - Enable GFF_ID checking of port type. Default is 0. 1 - enabble GFF_ID port type checking. 0 - disable GFF_ID port type checking. * ql2xasynctmfenable - Specify mechanism for Task Management (TM) commands. Default is 0. 1 - issue TM commands asynchonously using IOCB's. 0 - issue TM commands using MBC's. * ql2xmdcapmask - Specify Minidump capture mask level. Default is 0x1F. Can be set to these values only: 0x3, 0x7, 0xF, 0x1F, 0x7F. * ql2xmdenable - Enable MiniDump on 82xx firmware error. Default is 1. 0 - enable MiniDump. 1 - disable MiniDump. To view the list of parameters, enter the following command: # /sbin/modinfo qla2xxx 5.3 Performance Tunning 5.4 Uninstalling/removing the driver See 4. Installing the Driver above. 5.5 Firmware Installation To install a firmware RPM on a: - SLES10/11 machine: 1. Save original firmwares in /lib/firmware: $ cd / $ cp /lib/firmware/ql2400_fw.bin /lib/firmware/ql2400_fw.bin.orig $ cp /lib/firmware/ql2500_fw.bin /lib/firmware/ql2500_fw.bin.orig 2. Extract firmware: $ rpm -Uvh --force qlogic-firmware-x.yy.zz.noarch.rpm - RHEL6 machine: 1. Save original firmwares in /lib/firmware: $ cd / $ cp /lib/firmware/ql2400_fw.bin /lib/firmware/ql2400_fw.bin.orig $ cp /lib/firmware/ql2500_fw.bin /lib/firmware/ql2500_fw.bin.orig 2. Extract firmware: $ rpm -Uvh --force ql2400-firmware-x.yy.zz.noarch.rpm $ rpm -Uvh --force ql2500-firmware-x.yy.zz.noarch.rpm Note: qla2xxx driver has to be loaded with module parameter ql2xfwloadbin=2 to load the firmware at /lib/firmware/ directory. 5.6 Dynamically Modifying SCSI Blacklist Entries On 2.6.x kernels, you can dynamically change the SCSI blacklist, either by writing to a /proc entry or using the scsi_mod module parameter, which allows persistence across reboot. This requires the SCSI Vendor/Model information for the SCSI device, available at /proc/scsi/scsi. Blacklist entries are in the following form: vendor:model:flags[v:m:f] Where flags can be the following integer values: 0x001 /* Only scan LUN 0 */ 0x002 /* Known to have LUNs, force scanning, deprecated: Use max_luns=N */ 0x004 /* Flag for broken handshaking */ 0x008 /* unlock by special command */ 0x010 /* Do not use LUNs in parallel */ 0x020 /* Buggy Tagged Command Queuing */ 0x040 /* Non-consecutive LUN numbering */ - -> value need to be passed to "flags" variable for sparse LUN 0x080 /* Avoid LUNS >= 5 */ 0x100 /* Treat as (removable) CD-ROM */ 0x200 /* LUNs past 7 on a SCSI-2 device */ 0x400 /* override additional length field */ 0x800 /* ... for broken inquiry responses */ 0x1000 /* do not do automatic start on add */ 0x2000 /* do not send ms page 0x08 */ 0x4000 /* do not send ms page 0x3f */ 0x8000 /* use 10 byte ms before 6 byte ms */ 0x10000 /* 192 byte ms page 0x3f request */ 0x20000 /* try REPORT_LUNS even for SCSI-2 devs (if supports more than 8 LUNs) */ 0x40000 /* don't try REPORT_LUNS scan (SCSI-3 devs) */ 0x80000 /* don't use PREVENT-ALLOW commands */ 0x100000 /* device is actually for RAID config */ 0x200000 /* select without ATN */ 0x400000 /* retry HARDWARE_ERROR */ For example: # echo ::040 > /proc/scsi/device_info To enable persistence across reboots: 1. Edit the following file (based on distribution): /etc/modprobe.conf for RHEL 5 2. Add the following line to the file: options scsi_mod dev_flags=:: 3. Rebuild the RAMDISK (refer to section 4.3, step 4). 6. Contacting Support Please feel free to contact QLogic Support at http://support.qlogic.com for further assistance. (c) Copyright 2014. All rights reserved worldwide. QLogic, the QLogic logo, and the Powered by QLogic logo are registered trademarks of QLogic Corporation. All other brand and product names are trademarks or registered trademarks of their respective owners.