HP QLA Driver Kit
--------------------

This driver kit contains all the drivers and utilities needed to
deploy supported HP adapters on Linux

The following adapters are supported with this driver kit:

Adapter			Supported Architectures

FCA2214 		x86, x86_64
FCA2214DC 		x86, x86_64
bl20p Mezzanine Card	x86
bl25p Mezzanine Card	x86_64
bl30p Balcony Card	x86
bl35p Balcony Card	x86_64
A6826A			ia64
A7538A			ia64

The following distributions are supported with this driver kit:

Distribution			Architectures

Red Hat Advanced Server 2.1 	i386, ia64
Red Hat Enterprise Linux 3.0 	i386, ia64, x86_64
SUSE Linux Enterprise Server 8	i386, ia64, x86_64
(Service Pack 3 or higher)
SUSE Linux Enterprise Server 9	i386, ia64, x86_64
Red Hat Enterprise Linux 4	i386, ia64, x86_64

This driver kit contains the following components:

Scripted RPM for QLA 7.x driver (hp_qla2x00src)
Scripted RPM for QLA 8.x driver (hp_qla2x00src)
Source RPM for QLA 7.x driver (hp_qla2x00)
Source RPM for QLA 8.x driver (hp_qla2x00)
Fibre Channel Utilities for x86 architecture (fibreutils)
Fibre Channel Utilities for x86_64 architecture (fibreutils)
Fibre Channel Utilities for ia64 architectures (fibreutils)
Driver parameter configuration script for 2.4 kernels (set_parm2.24)
Driver parameter configuration script for 2.6 kernels (set_parm2.26)
Master installation utility (INSTALL)

Installation

The INSTALL script will install the hp_qla2x00src RPM and the
fibreutils RPM for your architecture (x86, x86_64, ia64).  For a fresh
installation, this script takes no arguments and can be invoked
by issuing the command:

	# ./INSTALL

By default the driver will set the load time parameter for failover mode
depending upon which mode the currently loaded driver is in.  If no
driver is loaded, the default mode is having failover turned on.  If
you want to explicitly turn failover on you can use the INSTALL script
with the -f option:

	# ./INSTALL -f

You can also install the driver manually using the RPM command.  There are
two hp_qla2x00src RPMs.  One is for kernel 2.4 kernel based distributions
(version 7.xx) and one is for 2.6 kernel based distributions (version 8.xx).
You can see what kernel version you are running by executing the "uname -r"
command.  So, based upon which kernel version you are running, use
the following commands to install the driver RPM manually:

To install the hp_qla2x00src RPM on a fresh system use the command:

	# rpm -ivh hp_qla2x00src-<version>-<revision>.linux.rpm

To install the hp_qla2x00src RPM without running the driver build scripts:

	# rpm -ivh --noscripts hp_qla2x00src-<version>-<revision>.linux.rpm

Upgrade

If you have any installed components from a previous solution kit
or driver kit (such as the qla2x00 RPM) the recommended way fo upgrade
everything is to use the INSTALL script without any arguments.

	# ./INSTALL

If you want to manually upgrade the components you should use one of the
following commands depending upon which component you are upgrading.

Use the following command for the hp_qla2x00src RPM.  Note that you
should use the 7.x version of hp_qla2x00src for 2.4 kernel based
distributions and the 8.x version of hp_qla2x00src for 2.6 kernel based
distributions:

	# rpm -Uvh hp_qla2x00src-<version>-<revision>.linux.rpm

Use the following command for the fibreutils RPM:

	# rpm -e fibreutils
	# rpm -ivh fibreutils-<version>-<revision>.linux.<architecture>.rpm

Note on Upgrading from qla2x00 RPMs

If you have a qla2x00 RPM from HP installed on your system, you should
use the INSTALL script.  The INSTALL script will remove the old qla2x00 RPM
and install the new hp_qla2x00src while keeping the driver settings from
the previous installation.  The script takes no arguments.  To use it,
execute the command:

	# ./INSTALL

! NOTE: If you are going to use the failover functionality of the QLA
        driver, you should uninstall Secure Path first before you attempt
        to upgrade the driver.  Failing to do so could cause a kernel
	panic.

Note about Third Party Storage Detection

The preinstall portion of the RPM contains code to check for non-HP storage.
The reason for doing this is so that the RPM will not overwrite any settings
that another vendor may be using.  You can skip the detection by setting the
environmental variable HPQLA2X00FORCE to y by issuing the following two commands

	# HPQLA2X00FORCE=y
	# export HPQLA2X00FORCE

or using the -F option of the INSTALL script:

	# ./INSTALL -F

Note about Multiple Installed Kernels

If your system has multiple kernels installed on it, you can compile the driver
for all the installed kernels by setting the INSTALLALLKERNELS environmental
variable to "y" and exporting it by issuing the following commands:

	# INSTALLALLKERNELS=y
	# export INSTALLALLKERNELS

or using the -a option of the INSTALL script:

	# ./INSTALL -a

Uninstall

To uninstall the components from this driver kit you can use the
INSTALL script with the -u option:

	# ./INSTALL -u

If you want to manually uninstall all the components or you
want to uninstall just one of the components, you should
use one or all of the following commands:

	# rpm -e fibreutils
	# rpm -e hp_qla2x00
	# rpm -e hp_qla2x00src

Using the Source RPM

In some cases, you may have to build a binary RPM (hp_qla2x00) from the
source RPM and use that in place of the scripted RPM (hp_qla2x00src).
You will need to do this if your production servers do not have the kernel
sources and gcc installed.

If you need to build a binary RPM to install, you will need a development
machine with the same kernel as the production servers that you will be
deploying to.  You can then install the binary RPM produced rpm methods
on your production servers.  Note that the binary RPM that you build will
only work for that kernel and configuration that you build on (possibly
some errata kernels).  Also note that you should use the 7.x version
of the hp_qla2x00 source RPM for 2.4 kernel based distributions and the 8.x
version of the hp_qla2x00 source RPM for 2.6 kernel based distributions.

To create the binary RPM from the source RPM do the following:

Issue the command:

# ./INSTALL -s

	-or-

1. Install the source rpm by issuing the command

	# rpm -ivh hp_qla2x00-<version>-<revision>.src.rpm

2. Depending on the distribution, change directory to

   Red Hat: /usr/src/redhat/SPECS
   SUSE: /usr/src/packages/SPECS

3. Build the RPM by using the rpmbuild command (the rpm command contains the
   RPM build functionality in some older distributions) using the command:

	# rpmbuild -bb hp_qla2x00.spec

4. At the end of the command output there should be a line that says
   "Wrote: ...rpm".  This line shows where the binary RPM is.

You should copy the binary RPM to the production servers and install it using
the command:

	# rpm -ivh hp_qla2x00-<version>-<revision>.<architecture>.rpm

Contents of hp_qla2x00 and hp_qla2x00src

The hp_qla2x00src and hp_qla2x00 RPMs contains the following scripts in the
/opt/hp/src/hp_qla2x00src or /opt/hp/hp_qla2x00 directories respectively in
addition to the driver source code.

condition_kernel   	sets the kernel source dependencies
                   	to reflect the current running kernel
                   	or the specified kernel
*build_driver      	builds the QLA driver from source code
edit_conf         	 makes the proper edits to system configuration files
                   	to imbed the qla2200 and qla2300 modules in
                   	the initrd with the proper driver load time
                   	parameters
make_initrd        	builds a new initrd using the correct
                   	system utilities
set_parm           	sets up the /etc/hp_qla2x00.conf file so that
                   	it has the correct driver settings based upon
                   	the configuration that the user wants to run and
                   	rebuilds the initrd
*master.sh         	runs the condition_kernel, build_driver, edit_conf
                   	and make_initrd utilities.  Useful to compile a new
                   	driver when a new kernel is loaded
*compile_all_kernels	Runs master.sh for all installed kernels
scsi_patch_sles9.bin	(For use with SLES 9 only)
		   	Corrects the HSV110 entry in scsi_devinfo.c file.  It
		   	also recompiles scsi_mod.ko and creates a new initrd.
toggle_debug_switch	toggles the debug flag in the driver source code and
			rebuilds the driver so that debug output will be sent
			to /var/log/messages

* Only contained in the hp_qla2x00src RPM

QLA SDM/HBAAPI Libraries

The hp_qla2x00src and hp_qla2x00 RPMs contain the QLA SDM libraries
(libqlsdm) for x86, x86_64 and ia64 architectures.  This library can
be found in /usr/lib as libqlsdm.so.  There is also a readme that
comes with the library which is located in /opt/hp/src/hp_qla2x00src or
/opt/hp/hp_qla2x00 as readme.libqlsdm.

Changing Driver Parameters

You can change the parameters of the driver using the set_parm script in
either the /opt/hp/src/hp_qla2x00src directory or the /opt/hp/hp_qla2x00
directory (depending upon which RPM you have installed).  There are three
preset settings:

1. Single Path (-s)     you are connected through one path to the storage
                        without any redudany
2. Secure Path (-m)     you are using the Secure Path software for multipathing
                        and failover
3. QLogic Failover (-x) you are using the multipathing and failover
                        functionality built into the qla2x00 adapter driver

You can also manually set the driver parameters if you invoke set_parm with
no arguments and select the manual option from the menu.

Note that if you change the driver parameters, a new initrd has to be build.
This is done by the set_parm script by calling the edit_conf and make_initrd
scripts.

Notes on Upgrading Kernels

1. After you upgrade your kernel and kernel sources, you can compile
   new qla2200.o and qla2300.o modules for the new kernel without rebooting.
   You may need to do this as the new kernel that you just installed
   may not contain the latest supported HP driver.  To do this you
   should:

a. Go to /opt/hp/src/hp_qla2x00src
b. Execute the command "./master.sh -l" to get a list of
   valid module and source directories
c. Choose the set of directories that match your new kernel
   and enter them with the -s and -m switches of the master.sh
   script

for example:

master.sh -s linux-2.4.21-9.EL -m linux-2.4.21-9.ELsmp

The script should take care of the rest of the compilation
automatically.

2. When you upgrade from an old kernel to a new kernel, you may need to
   manually remove the entry for qla2300_conf from /etc/modules.conf.
   Having these entries present in /etc/modules.conf may cause the initrd
   build to fail because those modules may not come with the new kernel.
   The entries will be replaced and new qla2200_conf and qla2300_conf
   modules built when you compile a new driver for the new kernel.

scsi_patch_sles9.bin

This file patches the scsi_devinfo.c source file in the original shipping
version of SLES 9 so that it contains the correct device information entry
for COMPAQ HSV110.  You can run it by going to the /opt/hp/src/hp_qla2x00src
or /opt/hp/hp_qla2x00 directory and running the command:

	# ./scsi_patch_sles9.bin

The script will patch the source file, recompile scsi_mod.ko and rebuild
the initrd for the current running kernel.

NOTE: you will have to reboot for the changes to scsi_mod.ko to take effect

Fibre Channel Utilities RPMs

The fibre channel utilities RPMs (fibreutils) are a collection of utilities
that are used to configure the supported HP HBAs or gather information on
them.  See the README in /opt/hp/hp_fibreutils for a description of the
contents.

Array Device Host Type

You should set your HP Storage to the following host types so that they work
correctly with with HP supported Linux HBAs and drivers:

EVA5000		Sun Solaris
EVA3000		Sun Solaris
MSA1000		Linux
MSA1500		Linux
XP		Host Mode 00

Note on using QLogic Failover with Enterprise Virtual Array (EVA)

If you are using the built-in failover functionality of the QLogic driver
(version 7.00.03 or later), set the failover preference to Path A Failover
or Path B Failover in the Management Appliance host settings. Failure to do
so can cause i/o errors when a failover occurs.

Note on using QLogic Failover with MSA1000

If you are using the built-in failover functionality of the QLogic driver
(version 7.00.03 or later), set the host mode to "Linux".  Failure to do
so can cause i/o errors when a failover occurs.

Note on QLogic Failover and HSG80 based Storage

The failover mode of the QLogic driver is not supported on HSG80
controller based storage.
