NAME
ciss
—
Common Interface for SCSI-3 Support
driver
SYNOPSIS
To compile this driver into the kernel, place the following lines in your kernel configuration file:
device scbus
device ciss
Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):
ciss_load="YES"
DESCRIPTION
The ciss
driver claims to provide a common
interface between generic SCSI transports and intelligent host adapters.
The ciss
driver supports
CISS as defined in
the document entitled CISS Command Interface for SCSI-3
Support Open Specification, Version 1.04, Valence Number 1, dated
2000/11/27, produced by Compaq Computer Corporation.
We provide a shim layer between the
ciss
interface and
CAM(4), offloading most of the queueing and being-a-disk chores onto
CAM. Entry to the driver is via the PCI bus attachment
ciss_probe
(),
ciss_attach
(),
etc. and via the CAM interface
ciss_cam_action
(),
and
ciss_cam_poll
().
The Compaq ciss
adapters require faked responses to
get reasonable behavior out of them. In addition, the
ciss
command set is by no means adequate to support
the functionality of a RAID controller, and thus the supported Compaq
adapters utilize portions of the control protocol from earlier Compaq
adapter families.
Currently ciss
only supports the
“simple” transport layer over PCI. This interface (ab)uses the
I2O register set (specifically the post queues) to exchange commands with
the adapter. Other interfaces are available, but we are not supposed to know
about them, and it is dubious whether they would provide major performance
improvements except under extreme load.
Non-disk devices (such as internal DATs and devices attached to the external SCSI bus) are supported as normal CAM devices provided that they are exported by the controller firmware and are not marked as being masked. Masked devices can be exposed by setting the hw.ciss.expose_hidden_physical tunable to non-zero at boot time. Direct Access devices (such as disk drives) are only exposed as pass(4) devices. Hot-insertion and removal of devices is supported but a bus rescan might be necessary.
The problem which adapter freezes with the message “ADAPTER HEARTBEAT FAILED” might be solved by updating the firmware and/or setting the hw.ciss.nop_message_heartbeat tunable to non-zero at boot time.
LOADER TUNABLES
In addition to
hw.ciss.nop_message_heartbeat, the
ciss
driver supports a number of loader
tunables:
- This tunable controls whether physical devices that are marked hidden by the firmware should be exposed anyways. The default is 0 (to not expose hidden physical devices).
- hw.ciss.force_transport
- This tunable forces a particular transport to be used. Values are 0 (use hardware specific default), 1 (forces simple transport) and 2 (forces performant transport). The default is 0 (to let the driver decide based on hardware).
- hw.ciss.force_interrupt
- This tunable forces a particular interrupt delivery method to be used. Values are 0 (use hardware specific default), 1 (forces INTx) and 2 (forces MSI). The default is 0 (to let the driver decide based on hardware).
HARDWARE
Controllers supported by the ciss
driver
include:
- Compaq Smart Array 5300
- Compaq Smart Array 532
- Compaq Smart Array 5i
- HP Smart Array 5312
- HP Smart Array 6i
- HP Smart Array 641
- HP Smart Array 642
- HP Smart Array 6400
- HP Smart Array 6400 EM
- HP Smart Array E200
- HP Smart Array E200i
- HP Smart Array P212
- HP Smart Array P220i
- HP Smart Array P222
- HP Smart Array P400
- HP Smart Array P400i
- HP Smart Array P410
- HP Smart Array P410i
- HP Smart Array P411
- HP Smart Array P420
- HP Smart Array P420i
- HP Smart Array P421
- HP Smart Array P600
- HP Smart Array P721m
- HP Smart Array P800
- HP Smart Array P812
- HP Modular Smart Array 20 (MSA20)
- HP Modular Smart Array 500 (MSA500)
SEE ALSO
cam(4), pass(4), xpt(4), loader.conf(5), camcontrol(8)
CISS Command Interface for SCSI-3 Support Open Specification, Version 1.04, Valence Number 1, Compaq Computer Corporation, 2000/11/27.
AUTHORS
The ciss
driver was written by
Mike Smith
<msmith@FreeBSD.org>.
This manual page is based on his comments and was written by Tom Rhodes <trhodes@FreeBSD.org>.