1
0
Fork 0

SCSI misc on 20200402

update changing all our txt files to rst ones.  Excluding that, we
 have the usual driver updates (qla2xxx, ufs, lpfc, zfcp, ibmvfc,
 pm80xx, aacraid), a treewide update for scnprintf and some other minor
 updates.  The major core update is Hannes moving functions out of the
 aacraid driver and into the core.
 
 Signed-off-by: James E.J. Bottomley <jejb@linux.ibm.com>
 -----BEGIN PGP SIGNATURE-----
 
 iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCXoYKiyYcamFtZXMuYm90
 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishSasAP4iGwSB
 Y8tFaZgWadu76+wj5MdqTBoXdhnIuFF0rZG3pQEAiIKdsfQlbSFdm75+gUtx5hG/
 GOilX/pJczTRJDCGNis=
 =g7Sk
 -----END PGP SIGNATURE-----

Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI updates from James Bottomley:
 "This series has a huge amount of churn because it pulls in Mauro's doc
  update changing all our txt files to rst ones.

  Excluding that, we have the usual driver updates (qla2xxx, ufs, lpfc,
  zfcp, ibmvfc, pm80xx, aacraid), a treewide update for scnprintf and
  some other minor updates.

  The major core change is Hannes moving functions out of the aacraid
  driver and into the core"

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (223 commits)
  scsi: aic7xxx: aic97xx: Remove FreeBSD-specific code
  scsi: ufs: Do not rely on prefetched data
  scsi: dc395x: remove dc395x_bios_param
  scsi: libiscsi: Fix error count for active session
  scsi: hpsa: correct race condition in offload enabled
  scsi: message: fusion: Replace zero-length array with flexible-array member
  scsi: qedi: Add PCI shutdown handler support
  scsi: qedi: Add MFW error recovery process
  scsi: ufs: Enable block layer runtime PM for well-known logical units
  scsi: ufs-qcom: Override devfreq parameters
  scsi: ufshcd: Let vendor override devfreq parameters
  scsi: ufshcd: Update the set frequency to devfreq
  scsi: ufs: Resume ufs host before accessing ufs device
  scsi: ufs-mediatek: customize the delay for enabling host
  scsi: ufs: make HCE polling more compact to improve initialization latency
  scsi: ufs: allow custom delay prior to host enabling
  scsi: ufs-mediatek: use common delay function
  scsi: ufs: introduce common and flexible delay function
  scsi: ufs: use an enum for host capabilities
  scsi: ufs: fix uninitialized tx_lanes in ufshcd_disable_tx_lcc()
  ...
alistair/sensors
Linus Torvalds 2020-04-02 17:03:53 -07:00
commit 79f51b7b9c
264 changed files with 13006 additions and 8514 deletions

View File

@ -401,7 +401,7 @@ Error handling
==============
This chapter describes how errors are handled under libata. Readers are
advised to read SCSI EH (Documentation/scsi/scsi_eh.txt) and ATA
advised to read SCSI EH (Documentation/scsi/scsi_eh.rst) and ATA
exceptions doc first.
Origins of commands

View File

@ -131,6 +131,7 @@ needed).
bpf/index
usb/index
PCI/index
scsi/index
misc-devices/index
scheduler/index

View File

@ -1,3 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
=======================
The 53c700 Driver Notes
=======================
General Description
===================
@ -16,9 +22,9 @@ fill in to get the driver working.
Compile Time Flags
==================
A compile time flag is:
A compile time flag is::
CONFIG_53C700_LE_ON_BE
CONFIG_53C700_LE_ON_BE
define if the chipset must be supported in little endian mode on a big
endian architecture (used for the 700 on parisc).
@ -51,9 +57,11 @@ consistent with the best operation of the chip (although some choose
to drive it off the CPU or bus clock rather than going to the expense
of an extra clock chip). The best operation clock speeds are:
53c700 - 25MHz
53c700-66 - 50MHz
53c710 - 40Mhz
========= =====
53c700 25MHz
53c700-66 50MHz
53c710 40Mhz
========= =====
Writing Your Glue Driver
========================
@ -69,7 +77,7 @@ parameters that matter to you (see below), plumb the NCR_700_intr
routine into the interrupt line and call NCR_700_detect with the host
template and the new parameters as arguments. You should also call
the relevant request_*_region function and place the register base
address into the `base' pointer of the host parameters.
address into the 'base' pointer of the host parameters.
In the release routine, you must free the NCR_700_Host_Parameters that
you allocated, call the corresponding release_*_region and free the
@ -78,7 +86,7 @@ interrupt.
Handling Interrupts
-------------------
In general, you should just plumb the card's interrupt line in with
In general, you should just plumb the card's interrupt line in with
request_irq(irq, NCR_700_intr, <irq flags>, <driver name>, host);
@ -95,41 +103,32 @@ Settable NCR_700_Host_Parameters
The following are a list of the user settable parameters:
clock: (MANDATORY)
Set to the clock speed of the chip in MHz.
Set to the clock speed of the chip in MHz.
base: (MANDATORY)
set to the base of the io or mem region for the register set. On 64
bit architectures this is only 32 bits wide, so the registers must be
mapped into the low 32 bits of memory.
Set to the base of the io or mem region for the register set. On 64
bit architectures this is only 32 bits wide, so the registers must be
mapped into the low 32 bits of memory.
pci_dev: (OPTIONAL)
set to the PCI board device. Leave NULL for a non-pci board. This is
used for the pci_alloc_consistent() and pci_map_*() functions.
Set to the PCI board device. Leave NULL for a non-pci board. This is
used for the pci_alloc_consistent() and pci_map_*() functions.
dmode_extra: (OPTIONAL, 53c710 only)
extra flags for the DMODE register. These are used to control bus
output pins on the 710. The settings should be a combination of
DMODE_FC1 and DMODE_FC2. What these pins actually do is entirely up
to the board designer. Usually it is safe to ignore this setting.
Extra flags for the DMODE register. These are used to control bus
output pins on the 710. The settings should be a combination of
DMODE_FC1 and DMODE_FC2. What these pins actually do is entirely up
to the board designer. Usually it is safe to ignore this setting.
differential: (OPTIONAL)
set to 1 if the chip drives a differential bus.
Set to 1 if the chip drives a differential bus.
force_le_on_be: (OPTIONAL, only if CONFIG_53C700_LE_ON_BE is set)
set to 1 if the chip is operating in little endian mode on a big
endian architecture.
Set to 1 if the chip is operating in little endian mode on a big
endian architecture.
chip710: (OPTIONAL)
set to 1 if the chip is a 53c710.
Set to 1 if the chip is a 53c710.
burst_disable: (OPTIONAL, 53c710 only)
disable 8 byte bursting for DMA transfers.
Disable 8 byte bursting for DMA transfers.

View File

@ -1,6 +1,11 @@
BusLogic MultiMaster and FlashPoint SCSI Driver for Linux
.. SPDX-License-Identifier: GPL-2.0
=========================================================
BusLogic MultiMaster and FlashPoint SCSI Driver for Linux
=========================================================
Version 2.0.15 for Linux 2.0
Version 2.1.15 for Linux 2.1
PRODUCTION RELEASE
@ -8,13 +13,16 @@
17 August 1998
Leonard N. Zubkoff
Dandelion Digital
lnz@dandelion.com
Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
INTRODUCTION
Introduction
============
BusLogic, Inc. designed and manufactured a variety of high performance SCSI
host adapters which share a common programming interface across a diverse
@ -86,9 +94,11 @@ Contact information for offices in Europe and Japan is available on the Web
site.
DRIVER FEATURES
Driver Features
===============
o Configuration Reporting and Testing
Configuration Reporting and Testing
-----------------------------------
During system initialization, the driver reports extensively on the host
adapter hardware configuration, including the synchronous transfer parameters
@ -130,7 +140,8 @@ o Configuration Reporting and Testing
The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing
are reported as "Enabled", Disabled", or a sequence of "Y" and "N" letters.
o Performance Features
Performance Features
--------------------
BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so
support has been included in the driver to utilize tagged queuing with any
@ -150,7 +161,8 @@ o Performance Features
queue depth of 1 is selected. Tagged queuing is also disabled for individual
target devices if disconnect/reconnect is disabled for that device.
o Robustness Features
Robustness Features
-------------------
The driver implements extensive error recovery procedures. When the higher
level parts of the SCSI subsystem request that a timed out command be reset,
@ -174,7 +186,8 @@ o Robustness Features
lock up or crash, and thereby allowing a clean shutdown and restart after the
offending component is removed.
o PCI Configuration Support
PCI Configuration Support
-------------------------
On PCI systems running kernels compiled with PCI BIOS support enabled, this
driver will interrogate the PCI configuration space and use the I/O port
@ -184,19 +197,22 @@ o PCI Configuration Support
used to disable the ISA compatible I/O port entirely as it is not necessary.
The ISA compatible I/O port is disabled by default on the BT-948/958/958D.
o /proc File System Support
/proc File System Support
-------------------------
Copies of the host adapter configuration information together with updated
data transfer and error recovery statistics are available through the
/proc/scsi/BusLogic/<N> interface.
o Shared Interrupts Support
Shared Interrupts Support
-------------------------
On systems that support shared interrupts, any number of BusLogic Host
Adapters may share the same interrupt request channel.
SUPPORTED HOST ADAPTERS
Supported Host Adapters
=======================
The following list comprises the supported BusLogic SCSI Host Adapters as of
the date of this document. It is recommended that anyone purchasing a BusLogic
@ -205,6 +221,7 @@ that it is or will be supported.
FlashPoint Series PCI Host Adapters:
======================= =============================================
FlashPoint LT (BT-930) Ultra SCSI-3
FlashPoint LT (BT-930R) Ultra SCSI-3 with RAIDPlus
FlashPoint LT (BT-920) Ultra SCSI-3 (BT-930 without BIOS)
@ -214,15 +231,19 @@ FlashPoint LW (BT-950) Wide Ultra SCSI-3
FlashPoint LW (BT-950R) Wide Ultra SCSI-3 with RAIDPlus
FlashPoint DW (BT-952) Dual Channel Wide Ultra SCSI-3
FlashPoint DW (BT-952R) Dual Channel Wide Ultra SCSI-3 with RAIDPlus
======================= =============================================
MultiMaster "W" Series Host Adapters:
======= === ==============================
BT-948 PCI Ultra SCSI-3
BT-958 PCI Wide Ultra SCSI-3
BT-958D PCI Wide Differential Ultra SCSI-3
======= === ==============================
MultiMaster "C" Series Host Adapters:
======== ==== ==============================
BT-946C PCI Fast SCSI-2
BT-956C PCI Wide Fast SCSI-2
BT-956CD PCI Wide Differential Fast SCSI-2
@ -232,9 +253,11 @@ BT-757C EISA Wide Fast SCSI-2
BT-757CD EISA Wide Differential Fast SCSI-2
BT-545C ISA Fast SCSI-2
BT-540CF ISA Fast SCSI-2
======== ==== ==============================
MultiMaster "S" Series Host Adapters:
======= ==== ==============================
BT-445S VLB Fast SCSI-2
BT-747S EISA Fast SCSI-2
BT-747D EISA Differential Fast SCSI-2
@ -244,11 +267,14 @@ BT-545S ISA Fast SCSI-2
BT-542D ISA Differential Fast SCSI-2
BT-742A EISA SCSI-2 (742A revision H)
BT-542B ISA SCSI-2 (542B revision H)
======= ==== ==============================
MultiMaster "A" Series Host Adapters:
======= ==== ==============================
BT-742A EISA SCSI-2 (742A revisions A - G)
BT-542B ISA SCSI-2 (542B revisions A - G)
======= ==== ==============================
AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones are also
supported by this driver.
@ -260,9 +286,11 @@ list. The retail kit includes the bare board and manual as well as cabling and
driver media and documentation that are not provided with bare boards.
FLASHPOINT INSTALLATION NOTES
FlashPoint Installation Notes
=============================
o RAIDPlus Support
RAIDPlus Support
----------------
FlashPoint Host Adapters now include RAIDPlus, Mylex's bootable software
RAID. RAIDPlus is not supported on Linux, and there are no plans to support
@ -273,7 +301,8 @@ o RAIDPlus Support
than RAIDPlus, so there is little impetus to include RAIDPlus support in the
BusLogic driver.
o Enabling UltraSCSI Transfers
Enabling UltraSCSI Transfers
----------------------------
FlashPoint Host Adapters ship with their configuration set to "Factory
Default" settings that are conservative and do not allow for UltraSCSI speed
@ -287,12 +316,14 @@ o Enabling UltraSCSI Transfers
the "Optimum Performance" settings are loaded.
BT-948/958/958D INSTALLATION NOTES
BT-948/958/958D Installation Notes
==================================
The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may
require attention in some circumstances when installing Linux.
o PCI I/O Port Assignments
PCI I/O Port Assignments
------------------------
When configured to factory default settings, the BT-948/958/958D will only
recognize the PCI I/O port assignments made by the motherboard's PCI BIOS.
@ -312,7 +343,8 @@ o PCI I/O Port Assignments
possible future I/O port conflicts. The older BT-946C/956C/956CD also have
this configuration option, but the factory default setting is "Primary".
o PCI Slot Scanning Order
PCI Slot Scanning Order
-----------------------
In systems with multiple BusLogic PCI Host Adapters, the order in which the
PCI slots are scanned may appear reversed with the BT-948/958/958D as
@ -339,7 +371,8 @@ o PCI Slot Scanning Order
so as to recognize the host adapters in the same order as they are enumerated
by the host adapter's BIOS.
o Enabling UltraSCSI Transfers
Enabling UltraSCSI Transfers
----------------------------
The BT-948/958/958D ship with their configuration set to "Factory Default"
settings that are conservative and do not allow for UltraSCSI speed to be
@ -353,7 +386,8 @@ o Enabling UltraSCSI Transfers
"Optimum Performance" settings are loaded.
DRIVER OPTIONS
Driver Options
==============
BusLogic Driver Options may be specified either via the Linux Kernel Command
Line or via the Loadable Kernel Module Installation Facility. Driver Options
@ -520,30 +554,34 @@ The following examples demonstrate setting the Queue Depth for Target Devices
Devices on the second host adapter to 31, and the Bus Settle Time on the
second host adapter to 30 seconds.
Linux Kernel Command Line:
Linux Kernel Command Line::
linux BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30
LILO Linux Boot Loader (in /etc/lilo.conf):
LILO Linux Boot Loader (in /etc/lilo.conf)::
append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"
INSMOD Loadable Kernel Module Installation Facility:
INSMOD Loadable Kernel Module Installation Facility::
insmod BusLogic.o \
'BusLogic="QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"'
NOTE: Module Utilities 2.1.71 or later is required for correct parsing
.. Note::
Module Utilities 2.1.71 or later is required for correct parsing
of driver options containing commas.
DRIVER INSTALLATION
Driver Installation
===================
This distribution was prepared for Linux kernel version 2.0.35, but should be
compatible with 2.0.4 or any later 2.0 series kernel.
To install the new BusLogic SCSI driver, you may use the following commands,
replacing "/usr/src" with wherever you keep your Linux kernel source tree:
replacing "/usr/src" with wherever you keep your Linux kernel source tree::
cd /usr/src
tar -xvzf BusLogic-2.0.15.tar.gz
@ -557,7 +595,8 @@ Then install "arch/x86/boot/zImage" as your standard kernel, run lilo if
appropriate, and reboot.
BUSLOGIC ANNOUNCEMENTS MAILING LIST
BusLogic Announcements Mailing List
===================================
The BusLogic Announcements Mailing List provides a forum for informing Linux
users of new driver releases and other announcements regarding Linux support

View File

@ -0,0 +1,176 @@
.. SPDX-License-Identifier: GPL-2.0
===================================
The BusLogic FlashPoint SCSI Driver
===================================
The BusLogic FlashPoint SCSI Host Adapters are now fully supported on Linux.
The upgrade program described below has been officially terminated effective
31 March 1997 since it is no longer needed.
::
MYLEX INTRODUCES LINUX OPERATING SYSTEM SUPPORT FOR ITS
BUSLOGIC FLASHPOINT LINE OF SCSI HOST ADAPTERS
FREMONT, CA, -- October 8, 1996 -- Mylex Corporation has expanded Linux
operating system support to its BusLogic brand of FlashPoint Ultra SCSI
host adapters. All of BusLogic's other SCSI host adapters, including the
MultiMaster line, currently support the Linux operating system. Linux
drivers and information will be available on October 15th at
http://sourceforge.net/projects/dandelion/.
"Mylex is committed to supporting the Linux community," says Peter Shambora,
vice president of marketing for Mylex. "We have supported Linux driver
development and provided technical support for our host adapters for several
years, and are pleased to now make our FlashPoint products available to this
user base."
The Linux Operating System
==========================
Linux is a freely-distributed implementation of UNIX for Intel x86, Sun
SPARC, SGI MIPS, Motorola 68k, Digital Alpha AXP and Motorola PowerPC
machines. It supports a wide range of software, including the X Window
System, Emacs, and TCP/IP networking. Further information is available at
http://www.linux.org and http://www.ssc.com/.
FlashPoint Host Adapters
========================
The FlashPoint family of Ultra SCSI host adapters, designed for workstation
and file server environments, are available in narrow, wide, dual channel,
and dual channel wide versions. These adapters feature SeqEngine
automation technology, which minimizes SCSI command overhead and reduces
the number of interrupts generated to the CPU.
About Mylex
===========
Mylex Corporation (NASDAQ/NM SYMBOL: MYLX), founded in 1983, is a leading
producer of RAID technology and network management products. The company
produces high performance disk array (RAID) controllers, and complementary
computer products for network servers, mass storage systems, workstations
and system boards. Through its wide range of RAID controllers and its
BusLogic line of Ultra SCSI host adapter products, Mylex provides enabling
intelligent I/O technologies that increase network management control,
enhance CPU utilization, optimize I/O performance, and ensure data security
and availability. Products are sold globally through a network of OEMs,
major distributors, VARs, and system integrators. Mylex Corporation is
headquartered at 34551 Ardenwood Blvd., Fremont, CA.
Contact:
========
::
Peter Shambora
Vice President of Marketing
Mylex Corp.
510/796-6100
peters@mylex.com
::
ANNOUNCEMENT
BusLogic FlashPoint LT/BT-948 Upgrade Program
1 February 1996
ADDITIONAL ANNOUNCEMENT
BusLogic FlashPoint LW/BT-958 Upgrade Program
14 June 1996
Ever since its introduction last October, the BusLogic FlashPoint LT has
been problematic for members of the Linux community, in that no Linux
drivers have been available for this new Ultra SCSI product. Despite its
officially being positioned as a desktop workstation product, and not being
particularly well suited for a high performance multitasking operating
system like Linux, the FlashPoint LT has been touted by computer system
vendors as the latest thing, and has been sold even on many of their high
end systems, to the exclusion of the older MultiMaster products. This has
caused grief for many people who inadvertently purchased a system expecting
that all BusLogic SCSI Host Adapters were supported by Linux, only to
discover that the FlashPoint was not supported and would not be for quite
some time, if ever.
After this problem was identified, BusLogic contacted its major OEM
customers to make sure the BT-946C/956C MultiMaster cards would still be
made available, and that Linux users who mistakenly ordered systems with
the FlashPoint would be able to upgrade to the BT-946C. While this helped
many purchasers of new systems, it was only a partial solution to the
overall problem of FlashPoint support for Linux users. It did nothing to
assist the people who initially purchased a FlashPoint for a supported
operating system and then later decided to run Linux, or those who had
ended up with a FlashPoint LT, believing it was supported, and were unable
to return it.
In the middle of December, I asked to meet with BusLogic's senior
management to discuss the issues related to Linux and free software support
for the FlashPoint. Rumors of varying accuracy had been circulating
publicly about BusLogic's attitude toward the Linux community, and I felt
it was best that these issues be addressed directly. I sent an email
message after 11pm one evening, and the meeting took place the next
afternoon. Unfortunately, corporate wheels sometimes grind slowly,
especially when a company is being acquired, and so it's taken until now
before the details were completely determined and a public statement could
be made.
BusLogic is not prepared at this time to release the information necessary
for third parties to write drivers for the FlashPoint. The only existing
FlashPoint drivers have been written directly by BusLogic Engineering, and
there is no FlashPoint documentation sufficiently detailed to allow outside
developers to write a driver without substantial assistance. While there
are people at BusLogic who would rather not release the details of the
FlashPoint architecture at all, that debate has not yet been settled either
way. In any event, even if documentation were available today it would
take quite a while for a usable driver to be written, especially since I'm
not convinced that the effort required would be worthwhile.
However, BusLogic does remain committed to providing a high performance
SCSI solution for the Linux community, and does not want to see anyone left
unable to run Linux because they have a Flashpoint LT. Therefore, BusLogic
has put in place a direct upgrade program to allow any Linux user worldwide
to trade in their FlashPoint LT for the new BT-948 MultiMaster PCI Ultra
SCSI Host Adapter. The BT-948 is the Ultra SCSI successor to the BT-946C
and has all the best features of both the BT-946C and FlashPoint LT,
including smart termination and a flash PROM for easy firmware updates, and
is of course compatible with the present Linux driver. The price for this
upgrade has been set at US $45 plus shipping and handling, and the upgrade
program will be administered through BusLogic Technical Support, which can
be reached by electronic mail at techsup@buslogic.com, by Voice at +1 408
654-0760, or by FAX at +1 408 492-1542.
As of 14 June 1996, the original BusLogic FlashPoint LT to BT-948 upgrade
program has now been extended to encompass the FlashPoint LW Wide Ultra
SCSI Host Adapter. Any Linux user worldwide may trade in their FlashPoint
LW (BT-950) for a BT-958 MultiMaster PCI Ultra SCSI Host Adapter. The
price for this upgrade has been set at US $65 plus shipping and handling.
I was a beta test site for the BT-948/958, and versions 1.2.1 and 1.3.1 of
my BusLogic driver already included latent support for the BT-948/958.
Additional cosmetic support for the Ultra SCSI MultiMaster cards was added
subsequent releases. As a result of this cooperative testing process,
several firmware bugs were found and corrected. My heavily loaded Linux
test system provided an ideal environment for testing error recovery
processes that are much more rarely exercised in production systems, but
are crucial to overall system stability. It was especially convenient
being able to work directly with their firmware engineer in demonstrating
the problems under control of the firmware debugging environment; things
sure have come a long way since the last time I worked on firmware for an
embedded system. I am presently working on some performance testing and
expect to have some data to report in the not too distant future.
BusLogic asked me to send this announcement since a large percentage of the
questions regarding support for the FlashPoint have either been sent to me
directly via email, or have appeared in the Linux newsgroups in which I
participate. To summarize, BusLogic is offering Linux users an upgrade
from the unsupported FlashPoint LT (BT-930) to the supported BT-948 for US
$45 plus shipping and handling, or from the unsupported FlashPoint LW
(BT-950) to the supported BT-958 for $65 plus shipping and handling.
Contact BusLogic Technical Support at techsup@buslogic.com or +1 408
654-0760 to take advantage of their offer.
Leonard N. Zubkoff
lnz@dandelion.com

View File

@ -1,163 +0,0 @@
The BusLogic FlashPoint SCSI Host Adapters are now fully supported on Linux.
The upgrade program described below has been officially terminated effective
31 March 1997 since it is no longer needed.
MYLEX INTRODUCES LINUX OPERATING SYSTEM SUPPORT FOR ITS
BUSLOGIC FLASHPOINT LINE OF SCSI HOST ADAPTERS
FREMONT, CA, -- October 8, 1996 -- Mylex Corporation has expanded Linux
operating system support to its BusLogic brand of FlashPoint Ultra SCSI
host adapters. All of BusLogic's other SCSI host adapters, including the
MultiMaster line, currently support the Linux operating system. Linux
drivers and information will be available on October 15th at
http://sourceforge.net/projects/dandelion/.
"Mylex is committed to supporting the Linux community," says Peter Shambora,
vice president of marketing for Mylex. "We have supported Linux driver
development and provided technical support for our host adapters for several
years, and are pleased to now make our FlashPoint products available to this
user base."
The Linux Operating System
Linux is a freely-distributed implementation of UNIX for Intel x86, Sun
SPARC, SGI MIPS, Motorola 68k, Digital Alpha AXP and Motorola PowerPC
machines. It supports a wide range of software, including the X Window
System, Emacs, and TCP/IP networking. Further information is available at
http://www.linux.org and http://www.ssc.com/.
FlashPoint Host Adapters
The FlashPoint family of Ultra SCSI host adapters, designed for workstation
and file server environments, are available in narrow, wide, dual channel,
and dual channel wide versions. These adapters feature SeqEngine
automation technology, which minimizes SCSI command overhead and reduces
the number of interrupts generated to the CPU.
About Mylex
Mylex Corporation (NASDAQ/NM SYMBOL: MYLX), founded in 1983, is a leading
producer of RAID technology and network management products. The company
produces high performance disk array (RAID) controllers, and complementary
computer products for network servers, mass storage systems, workstations
and system boards. Through its wide range of RAID controllers and its
BusLogic line of Ultra SCSI host adapter products, Mylex provides enabling
intelligent I/O technologies that increase network management control,
enhance CPU utilization, optimize I/O performance, and ensure data security
and availability. Products are sold globally through a network of OEMs,
major distributors, VARs, and system integrators. Mylex Corporation is
headquartered at 34551 Ardenwood Blvd., Fremont, CA.
####
Contact:
Peter Shambora
Vice President of Marketing
Mylex Corp.
510/796-6100
peters@mylex.com
ANNOUNCEMENT
BusLogic FlashPoint LT/BT-948 Upgrade Program
1 February 1996
ADDITIONAL ANNOUNCEMENT
BusLogic FlashPoint LW/BT-958 Upgrade Program
14 June 1996
Ever since its introduction last October, the BusLogic FlashPoint LT has
been problematic for members of the Linux community, in that no Linux
drivers have been available for this new Ultra SCSI product. Despite its
officially being positioned as a desktop workstation product, and not being
particularly well suited for a high performance multitasking operating
system like Linux, the FlashPoint LT has been touted by computer system
vendors as the latest thing, and has been sold even on many of their high
end systems, to the exclusion of the older MultiMaster products. This has
caused grief for many people who inadvertently purchased a system expecting
that all BusLogic SCSI Host Adapters were supported by Linux, only to
discover that the FlashPoint was not supported and would not be for quite
some time, if ever.
After this problem was identified, BusLogic contacted its major OEM
customers to make sure the BT-946C/956C MultiMaster cards would still be
made available, and that Linux users who mistakenly ordered systems with
the FlashPoint would be able to upgrade to the BT-946C. While this helped
many purchasers of new systems, it was only a partial solution to the
overall problem of FlashPoint support for Linux users. It did nothing to
assist the people who initially purchased a FlashPoint for a supported
operating system and then later decided to run Linux, or those who had
ended up with a FlashPoint LT, believing it was supported, and were unable
to return it.
In the middle of December, I asked to meet with BusLogic's senior
management to discuss the issues related to Linux and free software support
for the FlashPoint. Rumors of varying accuracy had been circulating
publicly about BusLogic's attitude toward the Linux community, and I felt
it was best that these issues be addressed directly. I sent an email
message after 11pm one evening, and the meeting took place the next
afternoon. Unfortunately, corporate wheels sometimes grind slowly,
especially when a company is being acquired, and so it's taken until now
before the details were completely determined and a public statement could
be made.
BusLogic is not prepared at this time to release the information necessary
for third parties to write drivers for the FlashPoint. The only existing
FlashPoint drivers have been written directly by BusLogic Engineering, and
there is no FlashPoint documentation sufficiently detailed to allow outside
developers to write a driver without substantial assistance. While there
are people at BusLogic who would rather not release the details of the
FlashPoint architecture at all, that debate has not yet been settled either
way. In any event, even if documentation were available today it would
take quite a while for a usable driver to be written, especially since I'm
not convinced that the effort required would be worthwhile.
However, BusLogic does remain committed to providing a high performance
SCSI solution for the Linux community, and does not want to see anyone left
unable to run Linux because they have a Flashpoint LT. Therefore, BusLogic
has put in place a direct upgrade program to allow any Linux user worldwide
to trade in their FlashPoint LT for the new BT-948 MultiMaster PCI Ultra
SCSI Host Adapter. The BT-948 is the Ultra SCSI successor to the BT-946C
and has all the best features of both the BT-946C and FlashPoint LT,
including smart termination and a flash PROM for easy firmware updates, and
is of course compatible with the present Linux driver. The price for this
upgrade has been set at US $45 plus shipping and handling, and the upgrade
program will be administered through BusLogic Technical Support, which can
be reached by electronic mail at techsup@buslogic.com, by Voice at +1 408
654-0760, or by FAX at +1 408 492-1542.
As of 14 June 1996, the original BusLogic FlashPoint LT to BT-948 upgrade
program has now been extended to encompass the FlashPoint LW Wide Ultra
SCSI Host Adapter. Any Linux user worldwide may trade in their FlashPoint
LW (BT-950) for a BT-958 MultiMaster PCI Ultra SCSI Host Adapter. The
price for this upgrade has been set at US $65 plus shipping and handling.
I was a beta test site for the BT-948/958, and versions 1.2.1 and 1.3.1 of
my BusLogic driver already included latent support for the BT-948/958.
Additional cosmetic support for the Ultra SCSI MultiMaster cards was added
subsequent releases. As a result of this cooperative testing process,
several firmware bugs were found and corrected. My heavily loaded Linux
test system provided an ideal environment for testing error recovery
processes that are much more rarely exercised in production systems, but
are crucial to overall system stability. It was especially convenient
being able to work directly with their firmware engineer in demonstrating
the problems under control of the firmware debugging environment; things
sure have come a long way since the last time I worked on firmware for an
embedded system. I am presently working on some performance testing and
expect to have some data to report in the not too distant future.
BusLogic asked me to send this announcement since a large percentage of the
questions regarding support for the FlashPoint have either been sent to me
directly via email, or have appeared in the Linux newsgroups in which I
participate. To summarize, BusLogic is offering Linux users an upgrade
from the unsupported FlashPoint LT (BT-930) to the supported BT-948 for US
$45 plus shipping and handling, or from the unsupported FlashPoint LW
(BT-950) to the supported BT-958 for $65 plus shipping and handling.
Contact BusLogic Technical Support at techsup@buslogic.com or +1 408
654-0760 to take advantage of their offer.
Leonard N. Zubkoff
lnz@dandelion.com

View File

@ -0,0 +1,164 @@
.. SPDX-License-Identifier: GPL-2.0
=========================================
WorkBiT NinjaSCSI-3/32Bi driver for Linux
=========================================
1. Comment
==========
This is Workbit corp.'s(http://www.workbit.co.jp/) NinjaSCSI-3
for Linux.
2. My Linux environment
=======================
:Linux kernel: 2.4.7 / 2.2.19
:pcmcia-cs: 3.1.27
:gcc: gcc-2.95.4
:PC card: I-O data PCSC-F (NinjaSCSI-3),
I-O data CBSC-II in 16 bit mode (NinjaSCSI-32Bi)
:SCSI device: I-O data CDPS-PX24 (CD-ROM drive),
Media Intelligent MMO-640GT (Optical disk drive)
3. Install
==========
(a) Check your PC card is true "NinjaSCSI-3" card.
If you installed pcmcia-cs already, pcmcia reports your card as UNKNOWN
card, and write ["WBT", "NinjaSCSI-3", "R1.0"] or some other string to
your console or log file.
You can also use "cardctl" program (this program is in pcmcia-cs source
code) to get more info.
::
# cat /var/log/messages
...
Jan 2 03:45:06 lindberg cardmgr[78]: unsupported card in socket 1
Jan 2 03:45:06 lindberg cardmgr[78]: product info: "WBT", "NinjaSCSI-3", "R1.0"
...
# cardctl ident
Socket 0:
no product info available
Socket 1:
product info: "IO DATA", "CBSC16 ", "1"
(b) Get the Linux kernel source, and extract it to /usr/src.
Because the NinjaSCSI driver requires some SCSI header files in Linux
kernel source, I recommend rebuilding your kernel; this eliminates
some versioning problems.
::
$ cd /usr/src
$ tar -zxvf linux-x.x.x.tar.gz
$ cd linux
$ make config
...
(c) If you use this driver with Kernel 2.2, unpack pcmcia-cs in some directory
and make & install. This driver requires the pcmcia-cs header file.
::
$ cd /usr/src
$ tar zxvf cs-pcmcia-cs-3.x.x.tar.gz
...
(d) Extract this driver's archive somewhere, and edit Makefile, then do make::
$ tar -zxvf nsp_cs-x.x.tar.gz
$ cd nsp_cs-x.x
$ emacs Makefile
...
$ make
(e) Copy nsp_cs.ko to suitable place, like /lib/modules/<Kernel version>/pcmcia/ .
(f) Add these lines to /etc/pcmcia/config .
If you use pcmcia-cs-3.1.8 or later, we can use "nsp_cs.conf" file.
So, you don't need to edit file. Just copy to /etc/pcmcia/ .
::
device "nsp_cs"
class "scsi" module "nsp_cs"
card "WorkBit NinjaSCSI-3"
version "WBT", "NinjaSCSI-3", "R1.0"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit)"
version "WORKBIT", "UltraNinja-16", "1"
bind "nsp_cs"
# OEM
card "WorkBit NinjaSCSI-32Bi (16bit) / IO-DATA"
version "IO DATA", "CBSC16 ", "1"
bind "nsp_cs"
# OEM
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-1"
version "KME ", "SCSI-CARD-001", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-2"
version "KME ", "SCSI-CARD-002", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-3"
version "KME ", "SCSI-CARD-003", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-4"
version "KME ", "SCSI-CARD-004", "1"
bind "nsp_cs"
(f) Start (or restart) pcmcia-cs::
# /etc/rc.d/rc.pcmcia start (BSD style)
or::
# /etc/init.d/pcmcia start (SYSV style)
4. History
==========
See README.nin_cs .
5. Caution
==========
If you eject card when doing some operation for your SCSI device or suspend
your computer, you encount some *BAD* error like disk crash.
It works good when I using this driver right way. But I'm not guarantee
your data. Please backup your data when you use this driver.
6. Known Bugs
=============
In 2.4 kernel, you can't use 640MB Optical disk. This error comes from
high level SCSI driver.
7. Testing
==========
Please send me some reports(bug reports etc..) of this software.
When you send report, please tell me these or more.
- card name
- kernel version
- your SCSI device name(hard drive, CD-ROM, etc...)
8. Copyright
============
See GPL.
2001/08/08 yokota@netlab.is.tsukuba.ac.jp <YOKOTA Hiroshi>

View File

@ -1,128 +0,0 @@
WorkBiT NinjaSCSI-3/32Bi driver for Linux
1. Comment
This is Workbit corp.'s(http://www.workbit.co.jp/) NinjaSCSI-3
for Linux.
2. My Linux environment
Linux kernel: 2.4.7 / 2.2.19
pcmcia-cs: 3.1.27
gcc: gcc-2.95.4
PC card: I-O data PCSC-F (NinjaSCSI-3)
I-O data CBSC-II in 16 bit mode (NinjaSCSI-32Bi)
SCSI device: I-O data CDPS-PX24 (CD-ROM drive)
Media Intelligent MMO-640GT (Optical disk drive)
3. Install
[1] Check your PC card is true "NinjaSCSI-3" card.
If you installed pcmcia-cs already, pcmcia reports your card as UNKNOWN
card, and write ["WBT", "NinjaSCSI-3", "R1.0"] or some other string to
your console or log file.
You can also use "cardctl" program (this program is in pcmcia-cs source
code) to get more info.
# cat /var/log/messages
...
Jan 2 03:45:06 lindberg cardmgr[78]: unsupported card in socket 1
Jan 2 03:45:06 lindberg cardmgr[78]: product info: "WBT", "NinjaSCSI-3", "R1.0"
...
# cardctl ident
Socket 0:
no product info available
Socket 1:
product info: "IO DATA", "CBSC16 ", "1"
[2] Get the Linux kernel source, and extract it to /usr/src.
Because the NinjaSCSI driver requires some SCSI header files in Linux
kernel source, I recommend rebuilding your kernel; this eliminates
some versioning problems.
$ cd /usr/src
$ tar -zxvf linux-x.x.x.tar.gz
$ cd linux
$ make config
...
[3] If you use this driver with Kernel 2.2, unpack pcmcia-cs in some directory
and make & install. This driver requires the pcmcia-cs header file.
$ cd /usr/src
$ tar zxvf cs-pcmcia-cs-3.x.x.tar.gz
...
[4] Extract this driver's archive somewhere, and edit Makefile, then do make.
$ tar -zxvf nsp_cs-x.x.tar.gz
$ cd nsp_cs-x.x
$ emacs Makefile
...
$ make
[5] Copy nsp_cs.ko to suitable place, like /lib/modules/<Kernel version>/pcmcia/ .
[6] Add these lines to /etc/pcmcia/config .
If you use pcmcia-cs-3.1.8 or later, we can use "nsp_cs.conf" file.
So, you don't need to edit file. Just copy to /etc/pcmcia/ .
-------------------------------------
device "nsp_cs"
class "scsi" module "nsp_cs"
card "WorkBit NinjaSCSI-3"
version "WBT", "NinjaSCSI-3", "R1.0"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit)"
version "WORKBIT", "UltraNinja-16", "1"
bind "nsp_cs"
# OEM
card "WorkBit NinjaSCSI-32Bi (16bit) / IO-DATA"
version "IO DATA", "CBSC16 ", "1"
bind "nsp_cs"
# OEM
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-1"
version "KME ", "SCSI-CARD-001", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-2"
version "KME ", "SCSI-CARD-002", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-3"
version "KME ", "SCSI-CARD-003", "1"
bind "nsp_cs"
card "WorkBit NinjaSCSI-32Bi (16bit) / KME-4"
version "KME ", "SCSI-CARD-004", "1"
bind "nsp_cs"
-------------------------------------
[7] Start (or restart) pcmcia-cs.
# /etc/rc.d/rc.pcmcia start (BSD style)
or
# /etc/init.d/pcmcia start (SYSV style)
4. History
See README.nin_cs .
5. Caution
If you eject card when doing some operation for your SCSI device or suspend
your computer, you encount some *BAD* error like disk crash.
It works good when I using this driver right way. But I'm not guarantee
your data. Please backup your data when you use this driver.
6. Known Bugs
In 2.4 kernel, you can't use 640MB Optical disk. This error comes from
high level SCSI driver.
7. Testing
Please send me some reports(bug reports etc..) of this software.
When you send report, please tell me these or more.
card name
kernel version
your SCSI device name(hard drive, CD-ROM, etc...)
8. Copyright
See GPL.
2001/08/08 yokota@netlab.is.tsukuba.ac.jp <YOKOTA Hiroshi>

View File

@ -1,7 +1,11 @@
.. SPDX-License-Identifier: GPL-2.0
===================================
AACRAID Driver for Linux (take two)
===================================
Introduction
-------------------------
============
The aacraid driver adds support for Adaptec (http://www.adaptec.com)
RAID controllers. This is a major rewrite from the original
Adaptec supplied driver. It has significantly cleaned up both the code
@ -9,8 +13,11 @@ and the running binary size (the module is less than half the size of
the original).
Supported Cards/Chipsets
-------------------------
========================
=================== ======= =======================================
PCI ID (pci.ids) OEM Product
=================== ======= =======================================
9005:0285:9005:0285 Adaptec 2200S (Vulcan)
9005:0285:9005:0286 Adaptec 2120S (Crusader)
9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m)
@ -117,34 +124,54 @@ Supported Cards/Chipsets
9005:0285:108e:0286 SUN STK RAID INT (Cougar)
9005:0285:108e:0287 SUN STK RAID EXT (Prometheus)
9005:0285:108e:7aae SUN STK RAID EM (Narvi)
=================== ======= =======================================
People
-------------------------
Alan Cox <alan@lxorguk.ukuu.org.uk>
Christoph Hellwig <hch@infradead.org> (updates for new-style PCI probing and SCSI host registration,
small cleanups/fixes)
Matt Domsch <matt_domsch@dell.com> (revision ioctl, adapter messages)
Deanna Bonds (non-DASD support, PAE fibs and 64 bit, added new adaptec controllers
added new ioctls, changed scsi interface to use new error handler,
increased the number of fibs and outstanding commands to a container)
======
Alan Cox <alan@lxorguk.ukuu.org.uk>
Christoph Hellwig <hch@infradead.org>
- updates for new-style PCI probing and SCSI host registration,
small cleanups/fixes
Matt Domsch <matt_domsch@dell.com>
- revision ioctl, adapter messages
Deanna Bonds
- non-DASD support, PAE fibs and 64 bit, added new adaptec controllers
added new ioctls, changed scsi interface to use new error handler,
increased the number of fibs and outstanding commands to a container
- fixed 64bit and 64G memory model, changed confusing naming convention
where fibs that go to the hardware are consistently called hw_fibs and
not just fibs like the name of the driver tracking structure
Mark Salyzyn <Mark_Salyzyn@adaptec.com>
- Fixed panic issues and added some new product ids for upcoming hbas.
- Performance tuning, card failover and bug mitigations.
(fixed 64bit and 64G memory model, changed confusing naming convention
where fibs that go to the hardware are consistently called hw_fibs and
not just fibs like the name of the driver tracking structure)
Mark Salyzyn <Mark_Salyzyn@adaptec.com> Fixed panic issues and added some new product ids for upcoming hbas. Performance tuning, card failover and bug mitigations.
Achim Leubner <Achim_Leubner@adaptec.com>
Original Driver
- Original Driver
-------------------------
Adaptec Unix OEM Product Group
Mailing List
-------------------------
============
linux-scsi@vger.kernel.org (Interested parties troll here)
Also note this is very different to Brian's original driver
so don't expect him to support it.
Adaptec does support this driver. Contact Adaptec tech support or
aacraid@adaptec.com
Original by Brian Boerner February 2001
Rewritten by Alan Cox, November 2001

View File

@ -1,3 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
=====================
AdvanSys Driver Notes
=====================
AdvanSys (Advanced System Products, Inc.) manufactures the following
RISC-based, Bus-Mastering, Fast (10 Mhz) and Ultra (20 Mhz) Narrow
(8-bit transfer) SCSI Host Adapters for the ISA, EISA, VL, and PCI
@ -12,50 +18,51 @@ adapter detected. The number of CDBs used by the driver can be
lowered in the BIOS by changing the 'Host Queue Size' adapter setting.
Laptop Products:
ABP-480 - Bus-Master CardBus (16 CDB)
- ABP-480 - Bus-Master CardBus (16 CDB)
Connectivity Products:
ABP510/5150 - Bus-Master ISA (240 CDB)
ABP5140 - Bus-Master ISA PnP (16 CDB)
ABP5142 - Bus-Master ISA PnP with floppy (16 CDB)
ABP902/3902 - Bus-Master PCI (16 CDB)
ABP3905 - Bus-Master PCI (16 CDB)
ABP915 - Bus-Master PCI (16 CDB)
ABP920 - Bus-Master PCI (16 CDB)
ABP3922 - Bus-Master PCI (16 CDB)
ABP3925 - Bus-Master PCI (16 CDB)
ABP930 - Bus-Master PCI (16 CDB)
ABP930U - Bus-Master PCI Ultra (16 CDB)
ABP930UA - Bus-Master PCI Ultra (16 CDB)
ABP960 - Bus-Master PCI MAC/PC (16 CDB)
ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
- ABP510/5150 - Bus-Master ISA (240 CDB)
- ABP5140 - Bus-Master ISA PnP (16 CDB)
- ABP5142 - Bus-Master ISA PnP with floppy (16 CDB)
- ABP902/3902 - Bus-Master PCI (16 CDB)
- ABP3905 - Bus-Master PCI (16 CDB)
- ABP915 - Bus-Master PCI (16 CDB)
- ABP920 - Bus-Master PCI (16 CDB)
- ABP3922 - Bus-Master PCI (16 CDB)
- ABP3925 - Bus-Master PCI (16 CDB)
- ABP930 - Bus-Master PCI (16 CDB)
- ABP930U - Bus-Master PCI Ultra (16 CDB)
- ABP930UA - Bus-Master PCI Ultra (16 CDB)
- ABP960 - Bus-Master PCI MAC/PC (16 CDB)
- ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
Single Channel Products:
ABP542 - Bus-Master ISA with floppy (240 CDB)
ABP742 - Bus-Master EISA (240 CDB)
ABP842 - Bus-Master VL (240 CDB)
ABP940 - Bus-Master PCI (240 CDB)
ABP940U - Bus-Master PCI Ultra (240 CDB)
ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
ABP970 - Bus-Master PCI MAC/PC (240 CDB)
ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
ABP3960UA - Bus-Master PCI MAC/PC Ultra (240 CDB)
ABP940UW/3940UW - Bus-Master PCI Ultra-Wide (253 CDB)
ABP970UW - Bus-Master PCI MAC/PC Ultra-Wide (253 CDB)
ABP3940U2W - Bus-Master PCI LVD/Ultra2-Wide (253 CDB)
- ABP542 - Bus-Master ISA with floppy (240 CDB)
- ABP742 - Bus-Master EISA (240 CDB)
- ABP842 - Bus-Master VL (240 CDB)
- ABP940 - Bus-Master PCI (240 CDB)
- ABP940U - Bus-Master PCI Ultra (240 CDB)
- ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
- ABP970 - Bus-Master PCI MAC/PC (240 CDB)
- ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
- ABP3960UA - Bus-Master PCI MAC/PC Ultra (240 CDB)
- ABP940UW/3940UW - Bus-Master PCI Ultra-Wide (253 CDB)
- ABP970UW - Bus-Master PCI MAC/PC Ultra-Wide (253 CDB)
- ABP3940U2W - Bus-Master PCI LVD/Ultra2-Wide (253 CDB)
Multi-Channel Products:
ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
ABP950UW - Dual Channel Bus-Master PCI Ultra-Wide (253 CDB Per Channel)
ABP980 - Four Channel Bus-Master PCI (240 CDB Per Channel)
ABP980U - Four Channel Bus-Master PCI Ultra (240 CDB Per Channel)
ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
ABP3950U2W - Bus-Master PCI LVD/Ultra2-Wide and Ultra-Wide (253 CDB)
ABP3950U3W - Bus-Master PCI Dual LVD2/Ultra3-Wide (253 CDB)
- ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
- ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
- ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
- ABP950UW - Dual Channel Bus-Master PCI Ultra-Wide (253 CDB Per Channel)
- ABP980 - Four Channel Bus-Master PCI (240 CDB Per Channel)
- ABP980U - Four Channel Bus-Master PCI Ultra (240 CDB Per Channel)
- ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
- ABP3950U2W - Bus-Master PCI LVD/Ultra2-Wide and Ultra-Wide (253 CDB)
- ABP3950U3W - Bus-Master PCI Dual LVD2/Ultra3-Wide (253 CDB)
Driver Compile Time Options and Debugging
=========================================
The following constants can be defined in the source file.
@ -88,26 +95,30 @@ The following constants can be defined in the source file.
first three hex digits of the pseudo I/O Port must be set to
'deb' and the fourth hex digit specifies the debug level: 0 - F.
The following command line will look for an adapter at 0x330
and set the debug level to 2.
and set the debug level to 2::
linux advansys=0x330,0,0,0,0xdeb2
If the driver is built as a loadable module this variable can be
defined when the driver is loaded. The following insmod command
will set the debug level to one.
will set the debug level to one::
insmod advansys.o asc_dbglvl=1
Debugging Message Levels:
0: Errors Only
1: High-Level Tracing
2-N: Verbose Tracing
==== ==================
0 Errors Only
1 High-Level Tracing
2-N Verbose Tracing
==== ==================
To enable debug output to console, please make sure that:
a. System and kernel logging is enabled (syslogd, klogd running).
b. Kernel messages are routed to console output. Check
/etc/syslog.conf for an entry similar to this:
/etc/syslog.conf for an entry similar to this::
kern.* /dev/console
@ -120,8 +131,11 @@ The following constants can be defined in the source file.
Alternatively you can enable printk() to console with this
program. However, this is not the 'official' way to do this.
Debug output is logged in /var/log/messages.
::
main()
{
syscall(103, 7, 0, 0);
@ -144,11 +158,11 @@ The following constants can be defined in the source file.
Statistics are only available for kernels greater than or equal
to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured.
AdvanSys SCSI adapter files have the following path name format:
AdvanSys SCSI adapter files have the following path name format::
/proc/scsi/advansys/{0,1,2,3,...}
This information can be displayed with cat. For example:
This information can be displayed with cat. For example::
cat /proc/scsi/advansys/0
@ -156,6 +170,7 @@ The following constants can be defined in the source file.
contain adapter and device configuration information.
Driver LILO Option
==================
If init/main.c is modified as described in the 'Directions for Adding
the AdvanSys Driver to Linux' section (B.4.) above, the driver will
@ -167,17 +182,30 @@ affects searching for ISA and VL boards.
Examples:
1. Eliminate I/O port scanning:
boot: linux advansys=
or
boot: linux advansys=0x0
boot::
linux advansys=
or::
boot: linux advansys=0x0
2. Limit I/O port scanning to one I/O port:
boot: linux advansys=0x110
boot::
linux advansys=0x110
3. Limit I/O port scanning to four I/O ports:
boot: linux advansys=0x110,0x210,0x230,0x330
boot::
linux advansys=0x110,0x210,0x230,0x330
For a loadable module the same effect can be achieved by setting
the 'asc_iopflag' variable and 'asc_ioport' array when loading
the driver, e.g.
the driver, e.g.::
insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
@ -187,6 +215,7 @@ the 'Driver Compile Time Options and Debugging' section above for
more information.
Credits (Chronological Order)
=============================
Bob Frey <bfrey@turbolinux.com.cn> wrote the AdvanSys SCSI driver
and maintained it up to 3.3F. He continues to answer questions

View File

@ -1,7 +1,12 @@
$Id: README.aha152x,v 1.2 1999/12/25 15:32:30 fischer Exp fischer $
Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x)
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
=====================================================
Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x)
=====================================================
Copyright |copy| 1993-1999 Jürgen Fischer <fischer@norbit.de>
Copyright 1993-1999 Jürgen Fischer <fischer@norbit.de>
TC1550 patches by Luuk van Dijk (ldz@xs4all.nl)
@ -14,8 +19,10 @@ less polling loops), has slightly higher throughput (at
least on my ancient test box; a i486/33Mhz/20MB).
CONFIGURATION ARGUMENTS:
Configuration Arguments
=======================
============ ======================================== ======================
IOPORT base io address (0x340/0x140)
IRQ interrupt level (9-12; default 11)
SCSI_ID scsi id of controller (0-7; default 7)
@ -25,31 +32,38 @@ SYNCHRONOUS enable synchronous transfers (0/1; default 1 [on])
DELAY: bus reset delay (default 100)
EXT_TRANS: enable extended translation (0/1: default 0 [off])
(see NOTES)
============ ======================================== ======================
COMPILE TIME CONFIGURATION (go into AHA152X in drivers/scsi/Makefile):
Compile Time Configuration
==========================
-DAUTOCONF
use configuration the controller reports (AHA-152x only)
(go into AHA152X in drivers/scsi/Makefile):
-DSKIP_BIOSTEST
Don't test for BIOS signature (AHA-1510 or disabled BIOS)
- DAUTOCONF
use configuration the controller reports (AHA-152x only)
-DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
override for the first controller
- DSKIP_BIOSTEST
Don't test for BIOS signature (AHA-1510 or disabled BIOS)
-DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
override for the second controller
- DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
override for the first controller
-DAHA152X_DEBUG
enable debugging output
- DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
override for the second controller
-DAHA152X_STAT
enable some statistics
- DAHA152X_DEBUG
enable debugging output
- DAHA152X_STAT
enable some statistics
LILO COMMAND LINE OPTIONS:
LILO Command Line Options
=========================
aha152x=<IOPORT>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY> [,<EXT_TRANS]]]]]]]
::
aha152x=<IOPORT>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY> [,<EXT_TRANS]]]]]]]
The normal configuration can be overridden by specifying a command line.
When you do this, the BIOS test is skipped. Entered values have to be
@ -58,17 +72,21 @@ aha152x=<IOPORT>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY
For two controllers use the aha152x statement twice.
SYMBOLS FOR MODULE CONFIGURATION:
Symbols for Module Configuration
================================
Choose from 2 alternatives:
1. specify everything (old)
1. specify everything (old)::
aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
configuration override for first controller
::
aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
configuration override for second controller
2. specify only what you need to (irq or io is required; new)
@ -101,7 +119,8 @@ exttrans=EXTTRANS0[,EXTTRANS1]
If you use both alternatives the first will be taken.
NOTES ON EXT_TRANS:
Notes on EXT_TRANS
==================
SCSI uses block numbers to address blocks/sectors on a device.
The BIOS uses a cylinder/head/sector addressing scheme (C/H/S)
@ -150,8 +169,9 @@ geometry right in most cases:
- for disks<1GB: use default translation (C/32/64)
- for disks>1GB:
- take current geometry from the partition table
(using scsicam_bios_param and accept only `valid' geometries,
(using scsicam_bios_param and accept only 'valid' geometries,
ie. either (C/32/64) or (C/63/255)). This can be extended translation
even if it's not enabled in the driver.
@ -161,7 +181,8 @@ geometry right in most cases:
disks.
REFERENCES USED:
References Used
===============
"AIC-6260 SCSI Chip Specification", Adaptec Corporation.
@ -177,7 +198,7 @@ REFERENCES USED:
Drew Eckhardt (drew@cs.colorado.edu)
Eric Youngdale (eric@andante.org)
Eric Youngdale (eric@andante.org)
special thanks to Eric Youngdale for the free(!) supplying the
documentation on the chip.

View File

@ -0,0 +1,593 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
===================================
Adaptec Ultra320 Family Manager Set
===================================
README for The Linux Operating System
.. The following information is available in this file:
1. Supported Hardware
2. Version History
3. Command Line Options
4. Additional Notes
5. Contacting Adaptec
1. Supported Hardware
=====================
The following Adaptec SCSI Host Adapters are supported by this
driver set.
============= =========================================
Ultra320 ASIC Description
============= =========================================
AIC-7901A Single Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC
AIC-7901B Single Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC with Retained Training
AIC-7902A4 Dual Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC
AIC-7902B Dual Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC with Retained Training
============= =========================================
========================== ===================================== ============
Ultra320 Adapters Description ASIC
========================== ===================================== ============
Adaptec SCSI Card 39320 Dual Channel 64-bit PCI-X 133MHz to 7902A4/7902B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin)
Adaptec SCSI Card 39320A Dual Channel 64-bit PCI-X 133MHz to 7902B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin)
Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to 7902A4
Ultra320 SCSI Card (two external VHDC
and one internal 68-pin)
Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to 7902A4
Ultra320 SCSI Card (two external VHDC
and one internal 68-pin) based on the
AIC-7902B ASIC
Adaptec SCSI Card 29320 Single Channel 64-bit PCI-X 133MHz to 7901A
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin, one
internal 50-pin)
Adaptec SCSI Card 29320A Single Channel 64-bit PCI-X 133MHz to 7901B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin, one
internal 50-pin)
Adaptec SCSI Card 29320LP Single Channel 64-bit Low Profile 7901A
PCI-X 133MHz to Ultra320 SCSI Card
(One external VHDC, one internal
68-pin)
Adaptec SCSI Card 29320ALP Single Channel 64-bit Low Profile 7901B
PCI-X 133MHz to Ultra320 SCSI Card
(One external VHDC, one internal
68-pin)
========================== ===================================== ============
2. Version History
==================
* 3.0 (December 1st, 2005)
- Updated driver to use SCSI transport class infrastructure
- Upported sequencer and core fixes from adaptec released
version 2.0.15 of the driver.
* 1.3.11 (July 11, 2003)
- Fix several deadlock issues.
- Add 29320ALP and 39320B Id's.
* 1.3.10 (June 3rd, 2003)
- Align the SCB_TAG field on a 16byte boundary. This avoids
SCB corruption on some PCI-33 busses.
- Correct non-zero luns on Rev B. hardware.
- Update for change in 2.5.X SCSI proc FS interface.
- When negotiation async via an 8bit WDTR message, send
an SDTR with an offset of 0 to be sure the target
knows we are async. This works around a firmware defect
in the Quantum Atlas 10K.
- Implement controller suspend and resume.
- Clear PCI error state during driver attach so that we
don't disable memory mapped I/O due to a stray write
by some other driver probe that occurred before we
claimed the controller.
* 1.3.9 (May 22nd, 2003)
- Fix compiler errors.
- Remove S/G splitting for segments that cross a 4GB boundary.
This is guaranteed not to happen in Linux.
- Add support for scsi_report_device_reset() found in
2.5.X kernels.
- Add 7901B support.
- Simplify handling of the packetized lun Rev A workaround.
- Correct and simplify handling of the ignore wide residue
message. The previous code would fail to report a residual
if the transaction data length was even and we received
an IWR message.
* 1.3.8 (April 29th, 2003)
- Fix types accessed via the command line interface code.
- Perform a few firmware optimizations.
- Fix "Unexpected PKT busfree" errors.
- Use a sequencer interrupt to notify the host of
commands with bad status. We defer the notification
until there are no outstanding selections to ensure
that the host is interrupted for as short a time as
possible.
- Remove pre-2.2.X support.
- Add support for new 2.5.X interrupt API.
- Correct big-endian architecture support.
* 1.3.7 (April 16th, 2003)
- Use del_timer_sync() to ensure that no timeouts
are pending during controller shutdown.
- For pre-2.5.X kernels, carefully adjust our segment
list size to avoid SCSI malloc pool fragmentation.
- Cleanup channel display in our /proc output.
- Workaround duplicate device entries in the mid-layer
device list during add-single-device.
* 1.3.6 (March 28th, 2003)
- Correct a double free in the Domain Validation code.
- Correct a reference to free'ed memory during controller
shutdown.
- Reset the bus on an SE->LVD change. This is required
to reset our transceivers.
* 1.3.5 (March 24th, 2003)
- Fix a few register window mode bugs.
- Include read streaming in the PPR flags we display in
diagnostics as well as /proc.
- Add PCI hot plug support for 2.5.X kernels.
- Correct default precompensation value for RevA hardware.
- Fix Domain Validation thread shutdown.
- Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A4.
- Correct /proc display of user read streaming settings.
- Simplify driver locking by releasing the io_request_lock
upon driver entry from the mid-layer.
- Cleanup command line parsing and move much of this code
to aiclib.
* 1.3.4 (February 28th, 2003)
- Correct a race condition in our error recovery handler.
- Allow Test Unit Ready commands to take a full 5 seconds
during Domain Validation.
* 1.3.2 (February 19th, 2003)
- Correct a Rev B. regression due to the GEM318
compatibility fix included in 1.3.1.
* 1.3.1 (February 11th, 2003)
- Add support for the 39320A.
- Improve recovery for certain PCI-X errors.
- Fix handling of LQ/DATA/LQ/DATA for the
same write transaction that can occur without
interveining training.
- Correct compatibility issues with the GEM318
enclosure services device.
- Correct data corruption issue that occurred under
high tag depth write loads.
- Adapt to a change in the 2.5.X daemonize() API.
- Correct a "Missing case in ahd_handle_scsiint" panic.
* 1.3.0 (January 21st, 2003)
- Full regression testing for all U320 products completed.
- Added abort and target/lun reset error recovery handler and
interrupt coalescing.
* 1.2.0 (November 14th, 2002)
- Added support for Domain Validation
- Add support for the Hewlett-Packard version of the 39320D
and AIC-7902 adapters.
Support for previous adapters has not been fully tested and should
only be used at the customer's own risk.
* 1.1.1 (September 24th, 2002)
- Added support for the Linux 2.5.X kernel series
* 1.1.0 (September 17th, 2002)
- Added support for four additional SCSI products:
ASC-39320, ASC-29320, ASC-29320LP, AIC-7901.
* 1.0.0 (May 30th, 2002)
- Initial driver release.
* 2.1. Software/Hardware Features
- Support for the SPI-4 "Ultra320" standard:
- 320MB/s transfer rates
- Packetized SCSI Protocol at 160MB/s and 320MB/s
- Quick Arbitration Selection (QAS)
- Retained Training Information (Rev B. ASIC only)
- Interrupt Coalescing
- Initiator Mode (target mode not currently
supported)
- Support for the PCI-X standard up to 133MHz
- Support for the PCI v2.2 standard
- Domain Validation
* 2.2. Operating System Support:
- Redhat Linux 7.2, 7.3, 8.0, Advanced Server 2.1
- SuSE Linux 7.3, 8.0, 8.1, Enterprise Server 7
- only Intel and AMD x86 supported at this time
- >4GB memory configurations supported.
Refer to the User's Guide for more details on this.
3. Command Line Options
=======================
.. Warning::
ALTERING OR ADDING THESE DRIVER PARAMETERS
INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
USE THEM WITH CAUTION.
Put a .conf file in the /etc/modprobe.d/ directory and add/edit a
line containing ``options aic79xx aic79xx=[command[,command...]]`` where
``command`` is one or more of the following:
verbose
:Definition: enable additional informative messages during driver operation.
:Possible Values: This option is a flag
:Default Value: disabled
debug:[value]
:Definition: Enables various levels of debugging information
The bit definitions for the debugging mask can
be found in drivers/scsi/aic7xxx/aic79xx.h under
the "Debug" heading.
:Possible Values: 0x0000 = no debugging, 0xffff = full debugging
:Default Value: 0x0000
no_reset
:Definition: Do not reset the bus during the initial probe
phase
:Possible Values: This option is a flag
:Default Value: disabled
extended
:Definition: Force extended translation on the controller
:Possible Values: This option is a flag
:Default Value: disabled
periodic_otag
:Definition: Send an ordered tag periodically to prevent
tag starvation. Needed for some older devices
:Possible Values: This option is a flag
:Default Value: disabled
reverse_scan
:Definition: Probe the scsi bus in reverse order, starting with target 15
:Possible Values: This option is a flag
:Default Value: disabled
global_tag_depth
:Definition: Global tag depth for all targets on all busses.
This option sets the default tag depth which
may be selectively overridden vi the tag_info
option.
:Possible Values: 1 - 253
:Default Value: 32
tag_info:{{value[,value...]}[,{value[,value...]}...]}
:Definition: Set the per-target tagged queue depth on a
per controller basis. Both controllers and targets
may be omitted indicating that they should retain
the default tag depth.
:Possible Values: 1 - 253
:Default Value: 32
Examples:
::
tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
On Controller 0
- specifies a tag depth of 16 for target 0
- specifies a tag depth of 64 for target 3
- specifies a tag depth of 8 for targets 4 and 5
- leaves target 6 at the default
- specifies a tag depth of 32 for targets 1,2,7-15
All other targets retain the default depth.
::
tag_info:{{},{32,,32}}
On Controller 1
- specifies a tag depth of 32 for targets 0 and 2
All other targets retain the default depth.
rd_strm: {rd_strm_bitmask[,rd_strm_bitmask...]}
:Definition: Enable read streaming on a per target basis.
The rd_strm_bitmask is a 16 bit hex value in which
each bit represents a target. Setting the target's
bit to '1' enables read streaming for that
target. Controllers may be omitted indicating that
they should retain the default read streaming setting.
Examples:
::
rd_strm:{0x0041}
On Controller 0
- enables read streaming for targets 0 and 6.
- disables read streaming for targets 1-5,7-15.
All other targets retain the default read
streaming setting.
::
rd_strm:{0x0023,,0xFFFF}
On Controller 0
- enables read streaming for targets 1,2, and 5.
- disables read streaming for targets 3,4,6-15.
On Controller 2
- enables read streaming for all targets.
All other targets retain the default read
streaming setting.
:Possible Values: 0x0000 - 0xffff
:Default Value: 0x0000
dv: {value[,value...]}
:Definition: Set Domain Validation Policy on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
:Possible Values:
==== ===============================
< 0 Use setting from serial EEPROM.
0 Disable DV
> 0 Enable DV
==== ===============================
:Default Value: DV Serial EEPROM configuration setting.
Example:
::
dv:{-1,0,,1,1,0}
- On Controller 0 leave DV at its default setting.
- On Controller 1 disable DV.
- Skip configuration on Controller 2.
- On Controllers 3 and 4 enable DV.
- On Controller 5 disable DV.
seltime:[value]
:Definition: Specifies the selection timeout value
:Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
:Default Value: 0
.. Warning:
The following three options should only be changed at
the direction of a technical support representative.
precomp: {value[,value...]}
:Definition: Set IO Cell precompensation value on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default precompensation setting.
:Possible Values: 0 - 7
:Default Value: Varies based on chip revision
Examples:
::
precomp:{0x1}
On Controller 0 set precompensation to 1.
::
precomp:{1,,7}
- On Controller 0 set precompensation to 1.
- On Controller 2 set precompensation to 8.
slewrate: {value[,value...]}
:Definition: Set IO Cell slew rate on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default slew rate setting.
:Possible Values: 0 - 15
:Default Value: Varies based on chip revision
Examples:
::
slewrate:{0x1}
- On Controller 0 set slew rate to 1.
::
slewrate :{1,,8}
- On Controller 0 set slew rate to 1.
- On Controller 2 set slew rate to 8.
amplitude: {value[,value...]}
:Definition: Set IO Cell signal amplitude on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
:Possible Values: 1 - 7
:Default Value: Varies based on chip revision
Examples:
::
amplitude:{0x1}
On Controller 0 set amplitude to 1.
::
amplitude :{1,,7}
- On Controller 0 set amplitude to 1.
- On Controller 2 set amplitude to 7.
Example::
options aic79xx aic79xx=verbose,rd_strm:{{0x0041}}
enables verbose output in the driver and turns read streaming on
for targets 0 and 6 of Controller 0.
4. Additional Notes
===================
4.1. Known/Unresolved or FYI Issues
-----------------------------------
* Under SuSE Linux Enterprise 7, the driver may fail to operate
correctly due to a problem with PCI interrupt routing in the
Linux kernel. Please contact SuSE for an updated Linux
kernel.
4.2. Third-Party Compatibility Issues
-------------------------------------
* Adaptec only supports Ultra320 hard drives running
the latest firmware available. Please check with
your hard drive manufacturer to ensure you have the
latest version.
4.3. Operating System or Technology Limitations
-----------------------------------------------
* PCI Hot Plug is untested and may cause the operating system
to stop responding.
* Luns that are not numbered contiguously starting with 0 might not
be automatically probed during system startup. This is a limitation
of the OS. Please contact your Linux vendor for instructions on
manually probing non-contiguous luns.
* Using the Driver Update Disk version of this package during OS
installation under RedHat might result in two versions of this
driver being installed into the system module directory. This
might cause problems with the /sbin/mkinitrd program and/or
other RPM packages that try to install system modules. The best
way to correct this once the system is running is to install
the latest RPM package version of this driver, available from
http://www.adaptec.com.
5. Adaptec Customer Support
===========================
A Technical Support Identification (TSID) Number is required for
Adaptec technical support.
- The 12-digit TSID can be found on the white barcode-type label
included inside the box with your product. The TSID helps us
provide more efficient service by accurately identifying your
product and support status.
Support Options
- Search the Adaptec Support Knowledgebase (ASK) at
http://ask.adaptec.com for articles, troubleshooting tips, and
frequently asked questions about your product.
- For support via Email, submit your question to Adaptec's
Technical Support Specialists at http://ask.adaptec.com/.
North America
- Visit our Web site at http://www.adaptec.com/.
- For information about Adaptec's support options, call
408-957-2550, 24 hours a day, 7 days a week.
- To speak with a Technical Support Specialist,
* For hardware products, call 408-934-7274,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
* For RAID and Fibre Channel products, call 321-207-2000,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
To expedite your service, have your computer with you.
- To order Adaptec products, including accessories and cables,
call 408-957-7274. To order cables online go to
http://www.adaptec.com/buy-cables/.
Europe
- Visit our Web site at http://www.adaptec.com/en-US/_common/world_index.
- To speak with a Technical Support Specialist, call, or email,
* German: +49 89 4366 5522, Monday-Friday, 9:00-17:00 CET,
http://ask-de.adaptec.com/.
* French: +49 89 4366 5533, Monday-Friday, 9:00-17:00 CET,
http://ask-fr.adaptec.com/.
* English: +49 89 4366 5544, Monday-Friday, 9:00-17:00 GMT,
http://ask.adaptec.com/.
- You can order Adaptec cables online at
http://www.adaptec.com/buy-cables/.
Japan
- Visit our web site at http://www.adaptec.co.jp/.
- To speak with a Technical Support Specialist, call
+81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m.,
1:00 p.m. to 6:00 p.m.
Copyright |copy| 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
All rights reserved.
You are permitted to redistribute, use and modify this README file in whole
or in part in conjunction with redistribution of software governed by the
General Public License, provided that the following conditions are met:
1. Redistributions of README file must retain the above copyright
notice, this list of conditions, and the following disclaimer,
without modification.
2. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
3. Modifications or new contributions must be attributed in a copyright
notice identifying the author ("Contributor") and added below the
original copyright notice. The copyright notice is for purposes of
identifying contributors and should not be deemed as permission to alter
the permissions given by Adaptec.
THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS`` AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,497 +0,0 @@
====================================================================
= Adaptec Ultra320 Family Manager Set =
= =
= README for =
= The Linux Operating System =
====================================================================
The following information is available in this file:
1. Supported Hardware
2. Version History
3. Command Line Options
4. Additional Notes
5. Contacting Adaptec
1. Supported Hardware
The following Adaptec SCSI Host Adapters are supported by this
driver set.
Ultra320 ASIC Description
----------------------------------------------------------------
AIC-7901A Single Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC
AIC-7901B Single Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC with Retained Training
AIC-7902A4 Dual Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC
AIC-7902B Dual Channel 64-bit PCI-X 133MHz to
Ultra320 SCSI ASIC with Retained Training
Ultra320 Adapters Description ASIC
--------------------------------------------------------------------------
Adaptec SCSI Card 39320 Dual Channel 64-bit PCI-X 133MHz to 7902A4/7902B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin)
Adaptec SCSI Card 39320A Dual Channel 64-bit PCI-X 133MHz to 7902B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin)
Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to 7902A4
Ultra320 SCSI Card (two external VHDC
and one internal 68-pin)
Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to 7902A4
Ultra320 SCSI Card (two external VHDC
and one internal 68-pin) based on the
AIC-7902B ASIC
Adaptec SCSI Card 29320 Single Channel 64-bit PCI-X 133MHz to 7901A
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin, one
internal 50-pin)
Adaptec SCSI Card 29320A Single Channel 64-bit PCI-X 133MHz to 7901B
Ultra320 SCSI Card (one external
68-pin, two internal 68-pin, one
internal 50-pin)
Adaptec SCSI Card 29320LP Single Channel 64-bit Low Profile 7901A
PCI-X 133MHz to Ultra320 SCSI Card
(One external VHDC, one internal
68-pin)
Adaptec SCSI Card 29320ALP Single Channel 64-bit Low Profile 7901B
PCI-X 133MHz to Ultra320 SCSI Card
(One external VHDC, one internal
68-pin)
2. Version History
3.0 (December 1st, 2005)
- Updated driver to use SCSI transport class infrastructure
- Upported sequencer and core fixes from adaptec released
version 2.0.15 of the driver.
1.3.11 (July 11, 2003)
- Fix several deadlock issues.
- Add 29320ALP and 39320B Id's.
1.3.10 (June 3rd, 2003)
- Align the SCB_TAG field on a 16byte boundary. This avoids
SCB corruption on some PCI-33 busses.
- Correct non-zero luns on Rev B. hardware.
- Update for change in 2.5.X SCSI proc FS interface.
- When negotiation async via an 8bit WDTR message, send
an SDTR with an offset of 0 to be sure the target
knows we are async. This works around a firmware defect
in the Quantum Atlas 10K.
- Implement controller suspend and resume.
- Clear PCI error state during driver attach so that we
don't disable memory mapped I/O due to a stray write
by some other driver probe that occurred before we
claimed the controller.
1.3.9 (May 22nd, 2003)
- Fix compiler errors.
- Remove S/G splitting for segments that cross a 4GB boundary.
This is guaranteed not to happen in Linux.
- Add support for scsi_report_device_reset() found in
2.5.X kernels.
- Add 7901B support.
- Simplify handling of the packetized lun Rev A workaround.
- Correct and simplify handling of the ignore wide residue
message. The previous code would fail to report a residual
if the transaction data length was even and we received
an IWR message.
1.3.8 (April 29th, 2003)
- Fix types accessed via the command line interface code.
- Perform a few firmware optimizations.
- Fix "Unexpected PKT busfree" errors.
- Use a sequencer interrupt to notify the host of
commands with bad status. We defer the notification
until there are no outstanding selections to ensure
that the host is interrupted for as short a time as
possible.
- Remove pre-2.2.X support.
- Add support for new 2.5.X interrupt API.
- Correct big-endian architecture support.
1.3.7 (April 16th, 2003)
- Use del_timer_sync() to ensure that no timeouts
are pending during controller shutdown.
- For pre-2.5.X kernels, carefully adjust our segment
list size to avoid SCSI malloc pool fragmentation.
- Cleanup channel display in our /proc output.
- Workaround duplicate device entries in the mid-layer
device list during add-single-device.
1.3.6 (March 28th, 2003)
- Correct a double free in the Domain Validation code.
- Correct a reference to free'ed memory during controller
shutdown.
- Reset the bus on an SE->LVD change. This is required
to reset our transceivers.
1.3.5 (March 24th, 2003)
- Fix a few register window mode bugs.
- Include read streaming in the PPR flags we display in
diagnostics as well as /proc.
- Add PCI hot plug support for 2.5.X kernels.
- Correct default precompensation value for RevA hardware.
- Fix Domain Validation thread shutdown.
- Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A4.
- Correct /proc display of user read streaming settings.
- Simplify driver locking by releasing the io_request_lock
upon driver entry from the mid-layer.
- Cleanup command line parsing and move much of this code
to aiclib.
1.3.4 (February 28th, 2003)
- Correct a race condition in our error recovery handler.
- Allow Test Unit Ready commands to take a full 5 seconds
during Domain Validation.
1.3.2 (February 19th, 2003)
- Correct a Rev B. regression due to the GEM318
compatibility fix included in 1.3.1.
1.3.1 (February 11th, 2003)
- Add support for the 39320A.
- Improve recovery for certain PCI-X errors.
- Fix handling of LQ/DATA/LQ/DATA for the
same write transaction that can occur without
interveining training.
- Correct compatibility issues with the GEM318
enclosure services device.
- Correct data corruption issue that occurred under
high tag depth write loads.
- Adapt to a change in the 2.5.X daemonize() API.
- Correct a "Missing case in ahd_handle_scsiint" panic.
1.3.0 (January 21st, 2003)
- Full regression testing for all U320 products completed.
- Added abort and target/lun reset error recovery handler and
interrupt coalescing.
1.2.0 (November 14th, 2002)
- Added support for Domain Validation
- Add support for the Hewlett-Packard version of the 39320D
and AIC-7902 adapters.
Support for previous adapters has not been fully tested and should
only be used at the customer's own risk.
1.1.1 (September 24th, 2002)
- Added support for the Linux 2.5.X kernel series
1.1.0 (September 17th, 2002)
- Added support for four additional SCSI products:
ASC-39320, ASC-29320, ASC-29320LP, AIC-7901.
1.0.0 (May 30th, 2002)
- Initial driver release.
2.1. Software/Hardware Features
- Support for the SPI-4 "Ultra320" standard:
- 320MB/s transfer rates
- Packetized SCSI Protocol at 160MB/s and 320MB/s
- Quick Arbitration Selection (QAS)
- Retained Training Information (Rev B. ASIC only)
- Interrupt Coalescing
- Initiator Mode (target mode not currently
supported)
- Support for the PCI-X standard up to 133MHz
- Support for the PCI v2.2 standard
- Domain Validation
2.2. Operating System Support:
- Redhat Linux 7.2, 7.3, 8.0, Advanced Server 2.1
- SuSE Linux 7.3, 8.0, 8.1, Enterprise Server 7
- only Intel and AMD x86 supported at this time
- >4GB memory configurations supported.
Refer to the User's Guide for more details on this.
3. Command Line Options
WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS
INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
USE THEM WITH CAUTION.
Put a .conf file in the /etc/modprobe.d/ directory and add/edit a
line containing 'options aic79xx aic79xx=[command[,command...]]' where
'command' is one or more of the following:
-----------------------------------------------------------------
Option: verbose
Definition: enable additional informative messages during
driver operation.
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: debug:[value]
Definition: Enables various levels of debugging information
The bit definitions for the debugging mask can
be found in drivers/scsi/aic7xxx/aic79xx.h under
the "Debug" heading.
Possible Values: 0x0000 = no debugging, 0xffff = full debugging
Default Value: 0x0000
-----------------------------------------------------------------
Option: no_reset
Definition: Do not reset the bus during the initial probe
phase
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: extended
Definition: Force extended translation on the controller
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: periodic_otag
Definition: Send an ordered tag periodically to prevent
tag starvation. Needed for some older devices
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: reverse_scan
Definition: Probe the scsi bus in reverse order, starting
with target 15
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: global_tag_depth
Definition: Global tag depth for all targets on all busses.
This option sets the default tag depth which
may be selectively overridden vi the tag_info
option.
Possible Values: 1 - 253
Default Value: 32
-----------------------------------------------------------------
Option: tag_info:{{value[,value...]}[,{value[,value...]}...]}
Definition: Set the per-target tagged queue depth on a
per controller basis. Both controllers and targets
may be omitted indicating that they should retain
the default tag depth.
Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
On Controller 0
specifies a tag depth of 16 for target 0
specifies a tag depth of 64 for target 3
specifies a tag depth of 8 for targets 4 and 5
leaves target 6 at the default
specifies a tag depth of 32 for targets 1,2,7-15
All other targets retain the default depth.
tag_info:{{},{32,,32}}
On Controller 1
specifies a tag depth of 32 for targets 0 and 2
All other targets retain the default depth.
Possible Values: 1 - 253
Default Value: 32
-----------------------------------------------------------------
Option: rd_strm: {rd_strm_bitmask[,rd_strm_bitmask...]}
Definition: Enable read streaming on a per target basis.
The rd_strm_bitmask is a 16 bit hex value in which
each bit represents a target. Setting the target's
bit to '1' enables read streaming for that
target. Controllers may be omitted indicating that
they should retain the default read streaming setting.
Example: rd_strm:{0x0041}
On Controller 0
enables read streaming for targets 0 and 6.
disables read streaming for targets 1-5,7-15.
All other targets retain the default read
streaming setting.
Example: rd_strm:{0x0023,,0xFFFF}
On Controller 0
enables read streaming for targets 1,2, and 5.
disables read streaming for targets 3,4,6-15.
On Controller 2
enables read streaming for all targets.
All other targets retain the default read
streaming setting.
Possible Values: 0x0000 - 0xffff
Default Value: 0x0000
-----------------------------------------------------------------
Option: dv: {value[,value...]}
Definition: Set Domain Validation Policy on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
Example: dv:{-1,0,,1,1,0}
On Controller 0 leave DV at its default setting.
On Controller 1 disable DV.
Skip configuration on Controller 2.
On Controllers 3 and 4 enable DV.
On Controller 5 disable DV.
Possible Values: < 0 Use setting from serial EEPROM.
0 Disable DV
> 0 Enable DV
Default Value: DV Serial EEPROM configuration setting.
-----------------------------------------------------------------
Option: seltime:[value]
Definition: Specifies the selection timeout value
Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
Default Value: 0
-----------------------------------------------------------------
*** The following three options should only be changed at ***
*** the direction of a technical support representative. ***
-----------------------------------------------------------------
Option: precomp: {value[,value...]}
Definition: Set IO Cell precompensation value on a per-controller
basis.
Controllers may be omitted indicating that
they should retain the default precompensation setting.
Example: precomp:{0x1}
On Controller 0 set precompensation to 1.
Example: precomp:{1,,7}
On Controller 0 set precompensation to 1.
On Controller 2 set precompensation to 8.
Possible Values: 0 - 7
Default Value: Varies based on chip revision
-----------------------------------------------------------------
Option: slewrate: {value[,value...]}
Definition: Set IO Cell slew rate on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default slew rate setting.
Example: slewrate:{0x1}
On Controller 0 set slew rate to 1.
Example: slewrate :{1,,8}
On Controller 0 set slew rate to 1.
On Controller 2 set slew rate to 8.
Possible Values: 0 - 15
Default Value: Varies based on chip revision
-----------------------------------------------------------------
Option: amplitude: {value[,value...]}
Definition: Set IO Cell signal amplitude on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
Example: amplitude:{0x1}
On Controller 0 set amplitude to 1.
Example: amplitude :{1,,7}
On Controller 0 set amplitude to 1.
On Controller 2 set amplitude to 7.
Possible Values: 1 - 7
Default Value: Varies based on chip revision
-----------------------------------------------------------------
Example: 'options aic79xx aic79xx=verbose,rd_strm:{{0x0041}}'
enables verbose output in the driver and turns read streaming on
for targets 0 and 6 of Controller 0.
4. Additional Notes
4.1. Known/Unresolved or FYI Issues
* Under SuSE Linux Enterprise 7, the driver may fail to operate
correctly due to a problem with PCI interrupt routing in the
Linux kernel. Please contact SuSE for an updated Linux
kernel.
4.2. Third-Party Compatibility Issues
* Adaptec only supports Ultra320 hard drives running
the latest firmware available. Please check with
your hard drive manufacturer to ensure you have the
latest version.
4.3. Operating System or Technology Limitations
* PCI Hot Plug is untested and may cause the operating system
to stop responding.
* Luns that are not numbered contiguously starting with 0 might not
be automatically probed during system startup. This is a limitation
of the OS. Please contact your Linux vendor for instructions on
manually probing non-contiguous luns.
* Using the Driver Update Disk version of this package during OS
installation under RedHat might result in two versions of this
driver being installed into the system module directory. This
might cause problems with the /sbin/mkinitrd program and/or
other RPM packages that try to install system modules. The best
way to correct this once the system is running is to install
the latest RPM package version of this driver, available from
http://www.adaptec.com.
5. Adaptec Customer Support
A Technical Support Identification (TSID) Number is required for
Adaptec technical support.
- The 12-digit TSID can be found on the white barcode-type label
included inside the box with your product. The TSID helps us
provide more efficient service by accurately identifying your
product and support status.
Support Options
- Search the Adaptec Support Knowledgebase (ASK) at
http://ask.adaptec.com for articles, troubleshooting tips, and
frequently asked questions about your product.
- For support via Email, submit your question to Adaptec's
Technical Support Specialists at http://ask.adaptec.com/.
North America
- Visit our Web site at http://www.adaptec.com/.
- For information about Adaptec's support options, call
408-957-2550, 24 hours a day, 7 days a week.
- To speak with a Technical Support Specialist,
* For hardware products, call 408-934-7274,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
* For RAID and Fibre Channel products, call 321-207-2000,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
To expedite your service, have your computer with you.
- To order Adaptec products, including accessories and cables,
call 408-957-7274. To order cables online go to
http://www.adaptec.com/buy-cables/.
Europe
- Visit our Web site at http://www.adaptec.com/en-US/_common/world_index.
- To speak with a Technical Support Specialist, call, or email,
* German: +49 89 4366 5522, Monday-Friday, 9:00-17:00 CET,
http://ask-de.adaptec.com/.
* French: +49 89 4366 5533, Monday-Friday, 9:00-17:00 CET,
http://ask-fr.adaptec.com/.
* English: +49 89 4366 5544, Monday-Friday, 9:00-17:00 GMT,
http://ask.adaptec.com/.
- You can order Adaptec cables online at
http://www.adaptec.com/buy-cables/.
Japan
- Visit our web site at http://www.adaptec.co.jp/.
- To speak with a Technical Support Specialist, call
+81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m.,
1:00 p.m. to 6:00 p.m.
-------------------------------------------------------------------
/*
* Copyright (c) 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
* All rights reserved.
*
* You are permitted to redistribute, use and modify this README file in whole
* or in part in conjunction with redistribution of software governed by the
* General Public License, provided that the following conditions are met:
* 1. Redistributions of README file must retain the above copyright
* notice, this list of conditions, and the following disclaimer,
* without modification.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
* 3. Modifications or new contributions must be attributed in a copyright
* notice identifying the author ("Contributor") and added below the
* original copyright notice. The copyright notice is for purposes of
* identifying contributors and should not be deemed as permission to alter
* the permissions given by Adaptec.
*
* THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
* WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
* FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

View File

@ -0,0 +1,458 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
========================================================
Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v7.0
========================================================
README for The Linux Operating System
The following information is available in this file:
1. Supported Hardware
2. Version History
3. Command Line Options
4. Contacting Adaptec
1. Supported Hardware
=====================
The following Adaptec SCSI Chips and Host Adapters are supported by
the aic7xxx driver.
======== ===== ========= ======== ========= ===== ===============
Chip MIPS Host Bus MaxSync MaxWidth SCBs Notes
======== ===== ========= ======== ========= ===== ===============
aic7770 10 EISA/VL 10MHz 16Bit 4 1
aic7850 10 PCI/32 10MHz 8Bit 3
aic7855 10 PCI/32 10MHz 8Bit 3
aic7856 10 PCI/32 10MHz 8Bit 3
aic7859 10 PCI/32 20MHz 8Bit 3
aic7860 10 PCI/32 20MHz 8Bit 3
aic7870 10 PCI/32 10MHz 16Bit 16
aic7880 10 PCI/32 20MHz 16Bit 16
aic7890 20 PCI/32 40MHz 16Bit 16 3 4 5 6 7 8
aic7891 20 PCI/64 40MHz 16Bit 16 3 4 5 6 7 8
aic7892 20 PCI/64-66 80MHz 16Bit 16 3 4 5 6 7 8
aic7895 15 PCI/32 20MHz 16Bit 16 2 3 4 5
aic7895C 15 PCI/32 20MHz 16Bit 16 2 3 4 5 8
aic7896 20 PCI/32 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7897 20 PCI/64 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7899 20 PCI/64-66 80MHz 16Bit 16 2 3 4 5 6 7 8
======== ===== ========= ======== ========= ===== ===============
1. Multiplexed Twin Channel Device - One controller servicing two
busses.
2. Multi-function Twin Channel Device - Two controllers on one chip.
3. Command Channel Secondary DMA Engine - Allows scatter gather list
and SCB prefetch.
4. 64 Byte SCB Support - Allows disconnected, untagged request table
for all possible target/lun combinations.
5. Block Move Instruction Support - Doubles the speed of certain
sequencer operations.
6. 'Bayonet' style Scatter Gather Engine - Improves S/G prefetch
performance.
7. Queuing Registers - Allows queuing of new transactions without
pausing the sequencer.
8. Multiple Target IDs - Allows the controller to respond to selection
as a target on multiple SCSI IDs.
============== ======= =========== =============== =============== =========
Controller Chip Host-Bus Int-Connectors Ext-Connectors Notes
============== ======= =========== =============== =============== =========
AHA-274X[A] aic7770 EISA SE-50M SE-HD50F
AHA-274X[A]W aic7770 EISA SE-HD68F SE-HD68F
SE-50M
AHA-274X[A]T aic7770 EISA 2 X SE-50M SE-HD50F
AHA-2842 aic7770 VL SE-50M SE-HD50F
AHA-2940AU aic7860 PCI/32 SE-50M SE-HD50F
AVA-2902I aic7860 PCI/32 SE-50M
AVA-2902E aic7860 PCI/32 SE-50M
AVA-2906 aic7856 PCI/32 SE-50M SE-DB25F
APC-7850 aic7850 PCI/32 SE-50M 1
AVA-2940 aic7860 PCI/32 SE-50M
AHA-2920B aic7860 PCI/32 SE-50M
AHA-2930B aic7860 PCI/32 SE-50M
AHA-2920C aic7856 PCI/32 SE-50M SE-HD50F
AHA-2930C aic7860 PCI/32 SE-50M
AHA-2930C aic7860 PCI/32 SE-50M
AHA-2910C aic7860 PCI/32 SE-50M
AHA-2915C aic7860 PCI/32 SE-50M
AHA-2940AU/CN aic7860 PCI/32 SE-50M SE-HD50F
AHA-2944W aic7870 PCI/32 HVD-HD68F HVD-HD68F
HVD-50M
AHA-3940W aic7870 PCI/32 2 X SE-HD68F SE-HD68F 2
AHA-2940UW aic7880 PCI/32 SE-HD68F
SE-50M SE-HD68F
AHA-2940U aic7880 PCI/32 SE-50M SE-HD50F
AHA-2940D aic7880 PCI/32
aHA-2940 A/T aic7880 PCI/32
AHA-2940D A/T aic7880 PCI/32
AHA-3940UW aic7880 PCI/32 2 X SE-HD68F SE-HD68F 3
AHA-3940UWD aic7880 PCI/32 2 X SE-HD68F 2 X SE-VHD68F 3
AHA-3940U aic7880 PCI/32 2 X SE-50M SE-HD50F 3
AHA-2944UW aic7880 PCI/32 HVD-HD68F HVD-HD68F
HVD-50M
AHA-3944UWD aic7880 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F 3
AHA-4944UW aic7880 PCI/32
AHA-2930UW aic7880 PCI/32
AHA-2940UW Pro aic7880 PCI/32 SE-HD68F SE-HD68F 4
SE-50M
AHA-2940UW/CN aic7880 PCI/32
AHA-2940UDual aic7895 PCI/32
AHA-2940UWDual aic7895 PCI/32
AHA-3940UWD aic7895 PCI/32
AHA-3940AUW aic7895 PCI/32
AHA-3940AUWD aic7895 PCI/32
AHA-3940AU aic7895 PCI/32
AHA-3944AUWD aic7895 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F
AHA-2940U2B aic7890 PCI/32 LVD-HD68F LVD-HD68F
AHA-2940U2 OEM aic7891 PCI/64
AHA-2940U2W aic7890 PCI/32 LVD-HD68F LVD-HD68F
SE-HD68F
SE-50M
AHA-2950U2B aic7891 PCI/64 LVD-HD68F LVD-HD68F
AHA-2930U2 aic7890 PCI/32 LVD-HD68F SE-HD50F
SE-50M
AHA-3950U2B aic7897 PCI/64
AHA-3950U2D aic7897 PCI/64
AHA-29160 aic7892 PCI/64-66
AHA-29160 CPQ aic7892 PCI/64-66
AHA-29160N aic7892 PCI/32 LVD-HD68F SE-HD50F
SE-50M
AHA-29160LP aic7892 PCI/64-66
AHA-19160 aic7892 PCI/64-66
AHA-29150LP aic7892 PCI/64-66
AHA-29130LP aic7892 PCI/64-66
AHA-3960D aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
AHA-3960D CPQ aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
AHA-39160 aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
============== ======= =========== =============== =============== =========
1. No BIOS support
2. DEC21050 PCI-PCI bridge with multiple controller chips on secondary bus
3. DEC2115X PCI-PCI bridge with multiple controller chips on secondary bus
4. All three SCSI connectors may be used simultaneously without
SCSI "stub" effects.
2. Version History
==================
* 7.0 (4th August, 2005)
- Updated driver to use SCSI transport class infrastructure
- Upported sequencer and core fixes from last adaptec released
version of the driver.
* 6.2.36 (June 3rd, 2003)
- Correct code that disables PCI parity error checking.
- Correct and simplify handling of the ignore wide residue
message. The previous code would fail to report a residual
if the transaction data length was even and we received
an IWR message.
- Add support for the 2.5.X EISA framework.
- Update for change in 2.5.X SCSI proc FS interface.
- Correct Domain Validation command-line option parsing.
- When negotiation async via an 8bit WDTR message, send
an SDTR with an offset of 0 to be sure the target
knows we are async. This works around a firmware defect
in the Quantum Atlas 10K.
- Clear PCI error state during driver attach so that we
don't disable memory mapped I/O due to a stray write
by some other driver probe that occurred before we
claimed the controller.
* 6.2.35 (May 14th, 2003)
- Fix a few GCC 3.3 compiler warnings.
- Correct operation on EISA Twin Channel controller.
- Add support for 2.5.X's scsi_report_device_reset().
* 6.2.34 (May 5th, 2003)
- Fix locking regression introduced in 6.2.29 that
could cause a lock order reversal between the io_request_lock
and our per-softc lock. This was only possible on RH9,
SuSE, and kernel.org 2.4.X kernels.
* 6.2.33 (April 30th, 2003)
- Dynamically disable PCI parity error reporting after
10 errors are reported to the user. These errors are
the result of some other device issuing PCI transactions
with bad parity. Once the user has been informed of the
problem, continuing to report the errors just degrades
our performance.
* 6.2.32 (March 28th, 2003)
- Dynamically sized S/G lists to avoid SCSI malloc
pool fragmentation and SCSI mid-layer deadlock.
* 6.2.28 (January 20th, 2003)
- Domain Validation Fixes
- Add ability to disable PCI parity error checking.
- Enhanced Memory Mapped I/O probe
* 6.2.20 (November 7th, 2002)
- Added Domain Validation.
3. Command Line Options
=======================
.. Warning::
ALTERING OR ADDING THESE DRIVER PARAMETERS
INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
USE THEM WITH CAUTION.
Put a .conf file in the /etc/modprobe.d directory and add/edit a
line containing ``options aic7xxx aic7xxx=[command[,command...]]`` where
``command`` is one or more of the following:
verbose
:Definition: enable additional informative messages during driver operation.
:Possible Values: This option is a flag
:Default Value: disabled
debug:[value]
:Definition: Enables various levels of debugging information
:Possible Values: 0x0000 = no debugging, 0xffff = full debugging
:Default Value: 0x0000
no_probe
probe_eisa_vl
:Definition: Do not probe for EISA/VLB controllers.
This is a toggle. If the driver is compiled
to not probe EISA/VLB controllers by default,
specifying "no_probe" will enable this probing.
If the driver is compiled to probe EISA/VLB
controllers by default, specifying "no_probe"
will disable this probing.
:Possible Values: This option is a toggle
:Default Value: EISA/VLB probing is disabled by default.
pci_parity
:Definition: Toggles the detection of PCI parity errors.
On many motherboards with VIA chipsets,
PCI parity is not generated correctly on the
PCI bus. It is impossible for the hardware to
differentiate between these "spurious" parity
errors and real parity errors. The symptom of
this problem is a stream of the message::
"scsi0: Data Parity Error Detected during address or write data phase"
output by the driver.
:Possible Values: This option is a toggle
:Default Value: PCI Parity Error reporting is disabled
no_reset
:Definition: Do not reset the bus during the initial probe
phase
:Possible Values: This option is a flag
:Default Value: disabled
extended
:Definition: Force extended translation on the controller
:Possible Values: This option is a flag
:Default Value: disabled
periodic_otag
:Definition: Send an ordered tag periodically to prevent
tag starvation. Needed for some older devices
:Possible Values: This option is a flag
:Default Value: disabled
reverse_scan
:Definition: Probe the scsi bus in reverse order, starting
with target 15
:Possible Values: This option is a flag
:Default Value: disabled
global_tag_depth:[value]
:Definition: Global tag depth for all targets on all busses.
This option sets the default tag depth which
may be selectively overridden vi the tag_info
option.
:Possible Values: 1 - 253
:Default Value: 32
tag_info:{{value[,value...]}[,{value[,value...]}...]}
:Definition: Set the per-target tagged queue depth on a
per controller basis. Both controllers and targets
may be omitted indicating that they should retain
the default tag depth.
:Possible Values: 1 - 253
:Default Value: 32
Examples:
::
tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
On Controller 0:
- specifies a tag depth of 16 for target 0
- specifies a tag depth of 64 for target 3
- specifies a tag depth of 8 for targets 4 and 5
- leaves target 6 at the default
- specifies a tag depth of 32 for targets 1,2,7-15
- All other targets retain the default depth.
::
tag_info:{{},{32,,32}}
On Controller 1:
- specifies a tag depth of 32 for targets 0 and 2
- All other targets retain the default depth.
seltime:[value]
:Definition: Specifies the selection timeout value
:Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
:Default Value: 0
dv: {value[,value...]}
:Definition: Set Domain Validation Policy on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
:Possible Values:
==== ===============================
< 0 Use setting from serial EEPROM.
0 Disable DV
> 0 Enable DV
==== ===============================
:Default Value: SCSI-Select setting on controllers with a SCSI Select
option for DV. Otherwise, on for controllers supporting
U160 speeds and off for all other controller types.
Example:
::
dv:{-1,0,,1,1,0}
- On Controller 0 leave DV at its default setting.
- On Controller 1 disable DV.
- Skip configuration on Controller 2.
- On Controllers 3 and 4 enable DV.
- On Controller 5 disable DV.
Example::
options aic7xxx aic7xxx=verbose,no_probe,tag_info:{{},{,,10}},seltime:1
enables verbose logging, Disable EISA/VLB probing,
and set tag depth on Controller 1/Target 2 to 10 tags.
4. Adaptec Customer Support
===========================
A Technical Support Identification (TSID) Number is required for
Adaptec technical support.
- The 12-digit TSID can be found on the white barcode-type label
included inside the box with your product. The TSID helps us
provide more efficient service by accurately identifying your
product and support status.
Support Options
- Search the Adaptec Support Knowledgebase (ASK) at
http://ask.adaptec.com for articles, troubleshooting tips, and
frequently asked questions about your product.
- For support via Email, submit your question to Adaptec's
Technical Support Specialists at http://ask.adaptec.com/.
North America
- Visit our Web site at http://www.adaptec.com/.
- For information about Adaptec's support options, call
408-957-2550, 24 hours a day, 7 days a week.
- To speak with a Technical Support Specialist,
* For hardware products, call 408-934-7274,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
* For RAID and Fibre Channel products, call 321-207-2000,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
To expedite your service, have your computer with you.
- To order Adaptec products, including accessories and cables,
call 408-957-7274. To order cables online go to
http://www.adaptec.com/buy-cables/.
Europe
- Visit our Web site at http://www.adaptec.com/en-US/_common/world_index.
- To speak with a Technical Support Specialist, call, or email,
* German: +49 89 4366 5522, Monday-Friday, 9:00-17:00 CET,
http://ask-de.adaptec.com/.
* French: +49 89 4366 5533, Monday-Friday, 9:00-17:00 CET,
http://ask-fr.adaptec.com/.
* English: +49 89 4366 5544, Monday-Friday, 9:00-17:00 GMT,
http://ask.adaptec.com/.
- You can order Adaptec cables online at
http://www.adaptec.com/buy-cables/.
Japan
- Visit our web site at http://www.adaptec.co.jp/.
- To speak with a Technical Support Specialist, call
+81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m.,
1:00 p.m. to 6:00 p.m.
Copyright |copy| 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
All rights reserved.
You are permitted to redistribute, use and modify this README file in whole
or in part in conjunction with redistribution of software governed by the
General Public License, provided that the following conditions are met:
1. Redistributions of README file must retain the above copyright
notice, this list of conditions, and the following disclaimer,
without modification.
2. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
3. Modifications or new contributions must be attributed in a copyright
notice identifying the author ("Contributor") and added below the
original copyright notice. The copyright notice is for purposes of
identifying contributors and should not be deemed as permission to alter
the permissions given by Adaptec.
THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS`` AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,394 +0,0 @@
====================================================================
= Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v7.0 =
= README for =
= The Linux Operating System =
====================================================================
The following information is available in this file:
1. Supported Hardware
2. Version History
3. Command Line Options
4. Contacting Adaptec
1. Supported Hardware
The following Adaptec SCSI Chips and Host Adapters are supported by
the aic7xxx driver.
Chip MIPS Host Bus MaxSync MaxWidth SCBs Notes
---------------------------------------------------------------
aic7770 10 EISA/VL 10MHz 16Bit 4 1
aic7850 10 PCI/32 10MHz 8Bit 3
aic7855 10 PCI/32 10MHz 8Bit 3
aic7856 10 PCI/32 10MHz 8Bit 3
aic7859 10 PCI/32 20MHz 8Bit 3
aic7860 10 PCI/32 20MHz 8Bit 3
aic7870 10 PCI/32 10MHz 16Bit 16
aic7880 10 PCI/32 20MHz 16Bit 16
aic7890 20 PCI/32 40MHz 16Bit 16 3 4 5 6 7 8
aic7891 20 PCI/64 40MHz 16Bit 16 3 4 5 6 7 8
aic7892 20 PCI/64-66 80MHz 16Bit 16 3 4 5 6 7 8
aic7895 15 PCI/32 20MHz 16Bit 16 2 3 4 5
aic7895C 15 PCI/32 20MHz 16Bit 16 2 3 4 5 8
aic7896 20 PCI/32 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7897 20 PCI/64 40MHz 16Bit 16 2 3 4 5 6 7 8
aic7899 20 PCI/64-66 80MHz 16Bit 16 2 3 4 5 6 7 8
1. Multiplexed Twin Channel Device - One controller servicing two
busses.
2. Multi-function Twin Channel Device - Two controllers on one chip.
3. Command Channel Secondary DMA Engine - Allows scatter gather list
and SCB prefetch.
4. 64 Byte SCB Support - Allows disconnected, untagged request table
for all possible target/lun combinations.
5. Block Move Instruction Support - Doubles the speed of certain
sequencer operations.
6. `Bayonet' style Scatter Gather Engine - Improves S/G prefetch
performance.
7. Queuing Registers - Allows queuing of new transactions without
pausing the sequencer.
8. Multiple Target IDs - Allows the controller to respond to selection
as a target on multiple SCSI IDs.
Controller Chip Host-Bus Int-Connectors Ext-Connectors Notes
--------------------------------------------------------------------------
AHA-274X[A] aic7770 EISA SE-50M SE-HD50F
AHA-274X[A]W aic7770 EISA SE-HD68F SE-HD68F
SE-50M
AHA-274X[A]T aic7770 EISA 2 X SE-50M SE-HD50F
AHA-2842 aic7770 VL SE-50M SE-HD50F
AHA-2940AU aic7860 PCI/32 SE-50M SE-HD50F
AVA-2902I aic7860 PCI/32 SE-50M
AVA-2902E aic7860 PCI/32 SE-50M
AVA-2906 aic7856 PCI/32 SE-50M SE-DB25F
APC-7850 aic7850 PCI/32 SE-50M 1
AVA-2940 aic7860 PCI/32 SE-50M
AHA-2920B aic7860 PCI/32 SE-50M
AHA-2930B aic7860 PCI/32 SE-50M
AHA-2920C aic7856 PCI/32 SE-50M SE-HD50F
AHA-2930C aic7860 PCI/32 SE-50M
AHA-2930C aic7860 PCI/32 SE-50M
AHA-2910C aic7860 PCI/32 SE-50M
AHA-2915C aic7860 PCI/32 SE-50M
AHA-2940AU/CN aic7860 PCI/32 SE-50M SE-HD50F
AHA-2944W aic7870 PCI/32 HVD-HD68F HVD-HD68F
HVD-50M
AHA-3940W aic7870 PCI/32 2 X SE-HD68F SE-HD68F 2
AHA-2940UW aic7880 PCI/32 SE-HD68F
SE-50M SE-HD68F
AHA-2940U aic7880 PCI/32 SE-50M SE-HD50F
AHA-2940D aic7880 PCI/32
aHA-2940 A/T aic7880 PCI/32
AHA-2940D A/T aic7880 PCI/32
AHA-3940UW aic7880 PCI/32 2 X SE-HD68F SE-HD68F 3
AHA-3940UWD aic7880 PCI/32 2 X SE-HD68F 2 X SE-VHD68F 3
AHA-3940U aic7880 PCI/32 2 X SE-50M SE-HD50F 3
AHA-2944UW aic7880 PCI/32 HVD-HD68F HVD-HD68F
HVD-50M
AHA-3944UWD aic7880 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F 3
AHA-4944UW aic7880 PCI/32
AHA-2930UW aic7880 PCI/32
AHA-2940UW Pro aic7880 PCI/32 SE-HD68F SE-HD68F 4
SE-50M
AHA-2940UW/CN aic7880 PCI/32
AHA-2940UDual aic7895 PCI/32
AHA-2940UWDual aic7895 PCI/32
AHA-3940UWD aic7895 PCI/32
AHA-3940AUW aic7895 PCI/32
AHA-3940AUWD aic7895 PCI/32
AHA-3940AU aic7895 PCI/32
AHA-3944AUWD aic7895 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F
AHA-2940U2B aic7890 PCI/32 LVD-HD68F LVD-HD68F
AHA-2940U2 OEM aic7891 PCI/64
AHA-2940U2W aic7890 PCI/32 LVD-HD68F LVD-HD68F
SE-HD68F
SE-50M
AHA-2950U2B aic7891 PCI/64 LVD-HD68F LVD-HD68F
AHA-2930U2 aic7890 PCI/32 LVD-HD68F SE-HD50F
SE-50M
AHA-3950U2B aic7897 PCI/64
AHA-3950U2D aic7897 PCI/64
AHA-29160 aic7892 PCI/64-66
AHA-29160 CPQ aic7892 PCI/64-66
AHA-29160N aic7892 PCI/32 LVD-HD68F SE-HD50F
SE-50M
AHA-29160LP aic7892 PCI/64-66
AHA-19160 aic7892 PCI/64-66
AHA-29150LP aic7892 PCI/64-66
AHA-29130LP aic7892 PCI/64-66
AHA-3960D aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
AHA-3960D CPQ aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
AHA-39160 aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F
LVD-50M
1. No BIOS support
2. DEC21050 PCI-PCI bridge with multiple controller chips on secondary bus
3. DEC2115X PCI-PCI bridge with multiple controller chips on secondary bus
4. All three SCSI connectors may be used simultaneously without
SCSI "stub" effects.
2. Version History
7.0 (4th August, 2005)
- Updated driver to use SCSI transport class infrastructure
- Upported sequencer and core fixes from last adaptec released
version of the driver.
6.2.36 (June 3rd, 2003)
- Correct code that disables PCI parity error checking.
- Correct and simplify handling of the ignore wide residue
message. The previous code would fail to report a residual
if the transaction data length was even and we received
an IWR message.
- Add support for the 2.5.X EISA framework.
- Update for change in 2.5.X SCSI proc FS interface.
- Correct Domain Validation command-line option parsing.
- When negotiation async via an 8bit WDTR message, send
an SDTR with an offset of 0 to be sure the target
knows we are async. This works around a firmware defect
in the Quantum Atlas 10K.
- Clear PCI error state during driver attach so that we
don't disable memory mapped I/O due to a stray write
by some other driver probe that occurred before we
claimed the controller.
6.2.35 (May 14th, 2003)
- Fix a few GCC 3.3 compiler warnings.
- Correct operation on EISA Twin Channel controller.
- Add support for 2.5.X's scsi_report_device_reset().
6.2.34 (May 5th, 2003)
- Fix locking regression introduced in 6.2.29 that
could cause a lock order reversal between the io_request_lock
and our per-softc lock. This was only possible on RH9,
SuSE, and kernel.org 2.4.X kernels.
6.2.33 (April 30th, 2003)
- Dynamically disable PCI parity error reporting after
10 errors are reported to the user. These errors are
the result of some other device issuing PCI transactions
with bad parity. Once the user has been informed of the
problem, continuing to report the errors just degrades
our performance.
6.2.32 (March 28th, 2003)
- Dynamically sized S/G lists to avoid SCSI malloc
pool fragmentation and SCSI mid-layer deadlock.
6.2.28 (January 20th, 2003)
- Domain Validation Fixes
- Add ability to disable PCI parity error checking.
- Enhanced Memory Mapped I/O probe
6.2.20 (November 7th, 2002)
- Added Domain Validation.
3. Command Line Options
WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS
INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
USE THEM WITH CAUTION.
Put a .conf file in the /etc/modprobe.d directory and add/edit a
line containing 'options aic7xxx aic7xxx=[command[,command...]]' where
'command' is one or more of the following:
-----------------------------------------------------------------
Option: verbose
Definition: enable additional informative messages during
driver operation.
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: debug:[value]
Definition: Enables various levels of debugging information
Possible Values: 0x0000 = no debugging, 0xffff = full debugging
Default Value: 0x0000
-----------------------------------------------------------------
Option: no_probe
Option: probe_eisa_vl
Definition: Do not probe for EISA/VLB controllers.
This is a toggle. If the driver is compiled
to not probe EISA/VLB controllers by default,
specifying "no_probe" will enable this probing.
If the driver is compiled to probe EISA/VLB
controllers by default, specifying "no_probe"
will disable this probing.
Possible Values: This option is a toggle
Default Value: EISA/VLB probing is disabled by default.
-----------------------------------------------------------------
Option: pci_parity
Definition: Toggles the detection of PCI parity errors.
On many motherboards with VIA chipsets,
PCI parity is not generated correctly on the
PCI bus. It is impossible for the hardware to
differentiate between these "spurious" parity
errors and real parity errors. The symptom of
this problem is a stream of the message:
"scsi0: Data Parity Error Detected during address or write data phase"
output by the driver.
Possible Values: This option is a toggle
Default Value: PCI Parity Error reporting is disabled
-----------------------------------------------------------------
Option: no_reset
Definition: Do not reset the bus during the initial probe
phase
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: extended
Definition: Force extended translation on the controller
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: periodic_otag
Definition: Send an ordered tag periodically to prevent
tag starvation. Needed for some older devices
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: reverse_scan
Definition: Probe the scsi bus in reverse order, starting
with target 15
Possible Values: This option is a flag
Default Value: disabled
-----------------------------------------------------------------
Option: global_tag_depth:[value]
Definition: Global tag depth for all targets on all busses.
This option sets the default tag depth which
may be selectively overridden vi the tag_info
option.
Possible Values: 1 - 253
Default Value: 32
-----------------------------------------------------------------
Option: tag_info:{{value[,value...]}[,{value[,value...]}...]}
Definition: Set the per-target tagged queue depth on a
per controller basis. Both controllers and targets
may be omitted indicating that they should retain
the default tag depth.
Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
On Controller 0
specifies a tag depth of 16 for target 0
specifies a tag depth of 64 for target 3
specifies a tag depth of 8 for targets 4 and 5
leaves target 6 at the default
specifies a tag depth of 32 for targets 1,2,7-15
All other targets retain the default depth.
tag_info:{{},{32,,32}}
On Controller 1
specifies a tag depth of 32 for targets 0 and 2
All other targets retain the default depth.
Possible Values: 1 - 253
Default Value: 32
-----------------------------------------------------------------
Option: seltime:[value]
Definition: Specifies the selection timeout value
Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
Default Value: 0
-----------------------------------------------------------------
Option: dv: {value[,value...]}
Definition: Set Domain Validation Policy on a per-controller basis.
Controllers may be omitted indicating that
they should retain the default read streaming setting.
Example: dv:{-1,0,,1,1,0}
On Controller 0 leave DV at its default setting.
On Controller 1 disable DV.
Skip configuration on Controller 2.
On Controllers 3 and 4 enable DV.
On Controller 5 disable DV.
Possible Values: < 0 Use setting from serial EEPROM.
0 Disable DV
> 0 Enable DV
Default Value: SCSI-Select setting on controllers with a SCSI Select
option for DV. Otherwise, on for controllers supporting
U160 speeds and off for all other controller types.
-----------------------------------------------------------------
Example:
'options aic7xxx aic7xxx=verbose,no_probe,tag_info:{{},{,,10}},seltime:1'
enables verbose logging, Disable EISA/VLB probing,
and set tag depth on Controller 1/Target 2 to 10 tags.
4. Adaptec Customer Support
A Technical Support Identification (TSID) Number is required for
Adaptec technical support.
- The 12-digit TSID can be found on the white barcode-type label
included inside the box with your product. The TSID helps us
provide more efficient service by accurately identifying your
product and support status.
Support Options
- Search the Adaptec Support Knowledgebase (ASK) at
http://ask.adaptec.com for articles, troubleshooting tips, and
frequently asked questions about your product.
- For support via Email, submit your question to Adaptec's
Technical Support Specialists at http://ask.adaptec.com/.
North America
- Visit our Web site at http://www.adaptec.com/.
- For information about Adaptec's support options, call
408-957-2550, 24 hours a day, 7 days a week.
- To speak with a Technical Support Specialist,
* For hardware products, call 408-934-7274,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
* For RAID and Fibre Channel products, call 321-207-2000,
Monday to Friday, 3:00 am to 5:00 pm, PDT.
To expedite your service, have your computer with you.
- To order Adaptec products, including accessories and cables,
call 408-957-7274. To order cables online go to
http://www.adaptec.com/buy-cables/.
Europe
- Visit our Web site at http://www.adaptec.com/en-US/_common/world_index.
- To speak with a Technical Support Specialist, call, or email,
* German: +49 89 4366 5522, Monday-Friday, 9:00-17:00 CET,
http://ask-de.adaptec.com/.
* French: +49 89 4366 5533, Monday-Friday, 9:00-17:00 CET,
http://ask-fr.adaptec.com/.
* English: +49 89 4366 5544, Monday-Friday, 9:00-17:00 GMT,
http://ask.adaptec.com/.
- You can order Adaptec cables online at
http://www.adaptec.com/buy-cables/.
Japan
- Visit our web site at http://www.adaptec.co.jp/.
- To speak with a Technical Support Specialist, call
+81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m.,
1:00 p.m. to 6:00 p.m.
-------------------------------------------------------------------
/*
* Copyright (c) 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
* All rights reserved.
*
* You are permitted to redistribute, use and modify this README file in whole
* or in part in conjunction with redistribution of software governed by the
* General Public License, provided that the following conditions are met:
* 1. Redistributions of README file must retain the above copyright
* notice, this list of conditions, and the following disclaimer,
* without modification.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
* 3. Modifications or new contributions must be attributed in a copyright
* notice identifying the author ("Contributor") and added below the
* original copyright notice. The copyright notice is for purposes of
* identifying contributors and should not be deemed as permission to alter
* the permissions given by Adaptec.
*
* THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
* WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
* FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

View File

@ -0,0 +1,907 @@
ARECA FIRMWARE SPEC
===================
Usage of IOP331 adapter
=======================
(All In/Out is in IOP331's view)
1. Message 0
------------
- InitThread message and return code
2. Doorbell is used for RS-232 emulation
----------------------------------------
inDoorBell
bit0
data in ready
zDRIVER DATA WRITE OK)
bit1
data out has been read
(DRIVER DATA READ OK)
outDooeBell:
bit0
data out ready
(IOP331 DATA WRITE OK)
bit1
data in has been read
(IOP331 DATA READ OK)
3. Index Memory Usage
---------------------
============ ==========================================
offset 0xf00 for RS232 out (request buffer)
offset 0xe00 for RS232 in (scratch buffer)
offset 0xa00 for inbound message code message_rwbuffer
(driver send to IOP331)
offset 0xa00 for outbound message code message_rwbuffer
(IOP331 send to driver)
============ ==========================================
4. RS-232 emulation
-------------------
Currently 128 byte buffer is used:
============ =====================
1st uint32_t Data length (1--124)
Byte 4--127 Max 124 bytes of data
============ =====================
5. PostQ
--------
All SCSI Command must be sent through postQ:
(inbound queue port)
Request frame must be 32 bytes aligned:
#bit27--bit31
flag for post ccb
#bit0--bit26
real address (bit27--bit31) of post arcmsr_cdb
===== ===================
bit31 == ===============
0 256 bytes frame
1 512 bytes frame
== ===============
bit30 == ==============
0 normal request
1 BIOS request
== ==============
bit29 reserved
bit28 reserved
bit27 reserved
===== ===================
(outbount queue port)
Request reply:
#bit27--bit31
flag for reply
#bit0--bit26
real address (bit27--bit31) of reply arcmsr_cdb
===== =======================================================
bit31 must be 0 (for this type of reply)
bit30 reserved for BIOS handshake
bit29 reserved
bit28 == ===================================================
0 no error, ignore AdapStatus/DevStatus/SenseData
1 Error, error code in AdapStatus/DevStatus/SenseData
== ===================================================
bit27 reserved
===== =======================================================
6. BIOS request
---------------
All BIOS request is the same with request from PostQ
Except:
Request frame is sent from configuration space:
============ ==========================
offset: 0x78 Request Frame (bit30 == 1)
offset: 0x18 writeonly to generate
IRQ to IOP331
============ ==========================
Completion of request::
(bit30 == 0, bit28==err flag)
7. Definition of SGL entry (structure)
--------------------------------------
8. Message1 Out - Diag Status Code (????)
-----------------------------------------
9. Message0 message code
------------------------
====== =================================================================
0x00 NOP
0x01 Get Config
->offset 0xa00 :for outbound message code message_rwbuffer
(IOP331 send to driver)
===================== ==========================================
Signature 0x87974060(4)
Request len 0x00000200(4)
numbers of queue 0x00000100(4)
SDRAM Size 0x00000100(4)-->256 MB
IDE Channels 0x00000008(4)
vendor 40 bytes char
model 8 bytes char
FirmVer 16 bytes char
Device Map 16 bytes char
FirmwareVersion DWORD
- Added for checking of
new firmware capability
===================== ==========================================
0x02 Set Config
->offset 0xa00 :for inbound message code message_rwbuffer
(driver send to IOP331)
========================= ==================
Signature 0x87974063(4)
UPPER32 of Request Frame (4)-->Driver Only
========================= ==================
0x03 Reset (Abort all queued Command)
0x04 Stop Background Activity
0x05 Flush Cache
0x06 Start Background Activity
(re-start if background is halted)
0x07 Check If Host Command Pending
(Novell May Need This Function)
0x08 Set controller time
->offset 0xa00 for inbound message code message_rwbuffer
(driver to IOP331)
====== ==================
byte 0 0xaa <-- signature
byte 1 0x55 <-- signature
byte 2 year (04)
byte 3 month (1..12)
byte 4 date (1..31)
byte 5 hour (0..23)
byte 6 minute (0..59)
byte 7 second (0..59)
====== ==================
====== =================================================================
RS-232 Interface for Areca Raid Controller
==========================================
The low level command interface is exclusive with VT100 terminal
1. Sequence of command execution
--------------------------------
(A) Header
3 bytes sequence (0x5E, 0x01, 0x61)
(B) Command block
variable length of data including length,
command code, data and checksum byte
(C) Return data
variable length of data
2. Command block
----------------
(A) 1st byte
command block length (low byte)
(B) 2nd byte
command block length (high byte)
.. Note:: command block length shouldn't > 2040 bytes,
length excludes these two bytes
(C) 3rd byte
command code
(D) 4th and following bytes
variable length data bytes
depends on command code
(E) last byte
checksum byte (sum of 1st byte until last data byte)
3. Command code and associated data
-----------------------------------
The following are command code defined in raid controller Command
code 0x10--0x1? are used for system level management,
no password checking is needed and should be implemented in separate
well controlled utility and not for end user access.
Command code 0x20--0x?? always check the password,
password must be entered to enable these command::
enum
{
GUI_SET_SERIAL=0x10,
GUI_SET_VENDOR,
GUI_SET_MODEL,
GUI_IDENTIFY,
GUI_CHECK_PASSWORD,
GUI_LOGOUT,
GUI_HTTP,
GUI_SET_ETHERNET_ADDR,
GUI_SET_LOGO,
GUI_POLL_EVENT,
GUI_GET_EVENT,
GUI_GET_HW_MONITOR,
// GUI_QUICK_CREATE=0x20, (function removed)
GUI_GET_INFO_R=0x20,
GUI_GET_INFO_V,
GUI_GET_INFO_P,
GUI_GET_INFO_S,
GUI_CLEAR_EVENT,
GUI_MUTE_BEEPER=0x30,
GUI_BEEPER_SETTING,
GUI_SET_PASSWORD,
GUI_HOST_INTERFACE_MODE,
GUI_REBUILD_PRIORITY,
GUI_MAX_ATA_MODE,
GUI_RESET_CONTROLLER,
GUI_COM_PORT_SETTING,
GUI_NO_OPERATION,
GUI_DHCP_IP,
GUI_CREATE_PASS_THROUGH=0x40,
GUI_MODIFY_PASS_THROUGH,
GUI_DELETE_PASS_THROUGH,
GUI_IDENTIFY_DEVICE,
GUI_CREATE_RAIDSET=0x50,
GUI_DELETE_RAIDSET,
GUI_EXPAND_RAIDSET,
GUI_ACTIVATE_RAIDSET,
GUI_CREATE_HOT_SPARE,
GUI_DELETE_HOT_SPARE,
GUI_CREATE_VOLUME=0x60,
GUI_MODIFY_VOLUME,
GUI_DELETE_VOLUME,
GUI_START_CHECK_VOLUME,
GUI_STOP_CHECK_VOLUME
};
Command description
^^^^^^^^^^^^^^^^^^^
GUI_SET_SERIAL
Set the controller serial#
================ =============================================
byte 0,1 length
byte 2 command code 0x10
byte 3 password length (should be 0x0f)
byte 4-0x13 should be "ArEcATecHnoLogY"
byte 0x14--0x23 Serial number string (must be 16 bytes)
================ =============================================
GUI_SET_VENDOR
Set vendor string for the controller
================ =============================================
byte 0,1 length
byte 2 command code 0x11
byte 3 password length (should be 0x08)
byte 4-0x13 should be "ArEcAvAr"
byte 0x14--0x3B vendor string (must be 40 bytes)
================ =============================================
GUI_SET_MODEL
Set the model name of the controller
================ =============================================
byte 0,1 length
byte 2 command code 0x12
byte 3 password length (should be 0x08)
byte 4-0x13 should be "ArEcAvAr"
byte 0x14--0x1B model string (must be 8 bytes)
================ =============================================
GUI_IDENTIFY
Identify device
================ =============================================
byte 0,1 length
byte 2 command code 0x13
return "Areca RAID Subsystem "
================ =============================================
GUI_CHECK_PASSWORD
Verify password
================ =============================================
byte 0,1 length
byte 2 command code 0x14
byte 3 password length
byte 4-0x?? user password to be checked
================ =============================================
GUI_LOGOUT
Logout GUI (force password checking on next command)
================ =============================================
byte 0,1 length
byte 2 command code 0x15
================ =============================================
GUI_HTTP
HTTP interface (reserved for Http proxy service)(0x16)
GUI_SET_ETHERNET_ADDR
Set the ethernet MAC address
================ =============================================
byte 0,1 length
byte 2 command code 0x17
byte 3 password length (should be 0x08)
byte 4-0x13 should be "ArEcAvAr"
byte 0x14--0x19 Ethernet MAC address (must be 6 bytes)
================ =============================================
GUI_SET_LOGO
Set logo in HTTP
================ =============================================
byte 0,1 length
byte 2 command code 0x18
byte 3 Page# (0/1/2/3) (0xff --> clear OEM logo)
byte 4/5/6/7 0x55/0xaa/0xa5/0x5a
byte 8 TITLE.JPG data (each page must be 2000 bytes)
.. Note:: page0 1st 2 byte must be
actual length of the JPG file
================ =============================================
GUI_POLL_EVENT
Poll If Event Log Changed
================ =============================================
byte 0,1 length
byte 2 command code 0x19
================ =============================================
GUI_GET_EVENT
Read Event
================ =============================================
byte 0,1 length
byte 2 command code 0x1a
byte 3 Event Page (0:1st page/1/2/3:last page)
================ =============================================
GUI_GET_HW_MONITOR
Get HW monitor data
================ =============================================
byte 0,1 length
byte 2 command code 0x1b
byte 3 # of FANs(example 2)
byte 4 # of Voltage sensor(example 3)
byte 5 # of temperature sensor(example 2)
byte 6 # of power
byte 7/8 Fan#0 (RPM)
byte 9/10 Fan#1
byte 11/12 Voltage#0 original value in ``*1000``
byte 13/14 Voltage#0 value
byte 15/16 Voltage#1 org
byte 17/18 Voltage#1
byte 19/20 Voltage#2 org
byte 21/22 Voltage#2
byte 23 Temp#0
byte 24 Temp#1
byte 25 Power indicator (bit0 power#0,
bit1 power#1)
byte 26 UPS indicator
================ =============================================
GUI_QUICK_CREATE
Quick create raid/volume set
================ ==============================================
byte 0,1 length
byte 2 command code 0x20
byte 3/4/5/6 raw capacity
byte 7 raid level
byte 8 stripe size
byte 9 spare
byte 10/11/12/13 device mask (the devices to create raid/volume)
================ ==============================================
This function is removed, application like
to implement quick create function
need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
GUI_GET_INFO_R
Get Raid Set Information
================ =============================================
byte 0,1 length
byte 2 command code 0x20
byte 3 raidset#
================ =============================================
::
typedef struct sGUI_RAIDSET
{
BYTE grsRaidSetName[16];
DWORD grsCapacity;
DWORD grsCapacityX;
DWORD grsFailMask;
BYTE grsDevArray[32];
BYTE grsMemberDevices;
BYTE grsNewMemberDevices;
BYTE grsRaidState;
BYTE grsVolumes;
BYTE grsVolumeList[16];
BYTE grsRes1;
BYTE grsRes2;
BYTE grsRes3;
BYTE grsFreeSegments;
DWORD grsRawStripes[8];
DWORD grsRes4;
DWORD grsRes5; // Total to 128 bytes
DWORD grsRes6; // Total to 128 bytes
} sGUI_RAIDSET, *pGUI_RAIDSET;
GUI_GET_INFO_V
Get Volume Set Information
================ =============================================
byte 0,1 length
byte 2 command code 0x21
byte 3 volumeset#
================ =============================================
::
typedef struct sGUI_VOLUMESET
{
BYTE gvsVolumeName[16]; // 16
DWORD gvsCapacity;
DWORD gvsCapacityX;
DWORD gvsFailMask;
DWORD gvsStripeSize;
DWORD gvsNewFailMask;
DWORD gvsNewStripeSize;
DWORD gvsVolumeStatus;
DWORD gvsProgress; // 32
sSCSI_ATTR gvsScsi;
BYTE gvsMemberDisks;
BYTE gvsRaidLevel; // 8
BYTE gvsNewMemberDisks;
BYTE gvsNewRaidLevel;
BYTE gvsRaidSetNumber;
BYTE gvsRes0; // 4
BYTE gvsRes1[4]; // 64 bytes
} sGUI_VOLUMESET, *pGUI_VOLUMESET;
GUI_GET_INFO_P
Get Physical Drive Information
================ =============================================
byte 0,1 length
byte 2 command code 0x22
byte 3 drive # (from 0 to max-channels - 1)
================ =============================================
::
typedef struct sGUI_PHY_DRV
{
BYTE gpdModelName[40];
BYTE gpdSerialNumber[20];
BYTE gpdFirmRev[8];
DWORD gpdCapacity;
DWORD gpdCapacityX; // Reserved for expansion
BYTE gpdDeviceState;
BYTE gpdPioMode;
BYTE gpdCurrentUdmaMode;
BYTE gpdUdmaMode;
BYTE gpdDriveSelect;
BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
sSCSI_ATTR gpdScsi;
BYTE gpdReserved[40]; // Total to 128 bytes
} sGUI_PHY_DRV, *pGUI_PHY_DRV;
GUI_GET_INFO_S
Get System Information
================ =============================================
byte 0,1 length
byte 2 command code 0x23
================ =============================================
::
typedef struct sCOM_ATTR
{
BYTE comBaudRate;
BYTE comDataBits;
BYTE comStopBits;
BYTE comParity;
BYTE comFlowControl;
} sCOM_ATTR, *pCOM_ATTR;
typedef struct sSYSTEM_INFO
{
BYTE gsiVendorName[40];
BYTE gsiSerialNumber[16];
BYTE gsiFirmVersion[16];
BYTE gsiBootVersion[16];
BYTE gsiMbVersion[16];
BYTE gsiModelName[8];
BYTE gsiLocalIp[4];
BYTE gsiCurrentIp[4];
DWORD gsiTimeTick;
DWORD gsiCpuSpeed;
DWORD gsiICache;
DWORD gsiDCache;
DWORD gsiScache;
DWORD gsiMemorySize;
DWORD gsiMemorySpeed;
DWORD gsiEvents;
BYTE gsiMacAddress[6];
BYTE gsiDhcp;
BYTE gsiBeeper;
BYTE gsiChannelUsage;
BYTE gsiMaxAtaMode;
BYTE gsiSdramEcc; // 1:if ECC enabled
BYTE gsiRebuildPriority;
sCOM_ATTR gsiComA; // 5 bytes
sCOM_ATTR gsiComB; // 5 bytes
BYTE gsiIdeChannels;
BYTE gsiScsiHostChannels;
BYTE gsiIdeHostChannels;
BYTE gsiMaxVolumeSet;
BYTE gsiMaxRaidSet;
BYTE gsiEtherPort; // 1:if ether net port supported
BYTE gsiRaid6Engine; // 1:Raid6 engine supported
BYTE gsiRes[75];
} sSYSTEM_INFO, *pSYSTEM_INFO;
GUI_CLEAR_EVENT
Clear System Event
================ =============================================
byte 0,1 length
byte 2 command code 0x24
================ =============================================
GUI_MUTE_BEEPER
Mute current beeper
================ =============================================
byte 0,1 length
byte 2 command code 0x30
================ =============================================
GUI_BEEPER_SETTING
Disable beeper
================ =============================================
byte 0,1 length
byte 2 command code 0x31
byte 3 0->disable, 1->enable
================ =============================================
GUI_SET_PASSWORD
Change password
================ =============================================
byte 0,1 length
byte 2 command code 0x32
byte 3 pass word length ( must <= 15 )
byte 4 password (must be alpha-numerical)
================ =============================================
GUI_HOST_INTERFACE_MODE
Set host interface mode
================ =============================================
byte 0,1 length
byte 2 command code 0x33
byte 3 0->Independent, 1->cluster
================ =============================================
GUI_REBUILD_PRIORITY
Set rebuild priority
================ =============================================
byte 0,1 length
byte 2 command code 0x34
byte 3 0/1/2/3 (low->high)
================ =============================================
GUI_MAX_ATA_MODE
Set maximum ATA mode to be used
================ =============================================
byte 0,1 length
byte 2 command code 0x35
byte 3 0/1/2/3 (133/100/66/33)
================ =============================================
GUI_RESET_CONTROLLER
Reset Controller
================ =============================================
byte 0,1 length
byte 2 command code 0x36
* Response with VT100 screen (discard it)
================ =============================================
GUI_COM_PORT_SETTING
COM port setting
================ =================================================
byte 0,1 length
byte 2 command code 0x37
byte 3 0->COMA (term port),
1->COMB (debug port)
byte 4 0/1/2/3/4/5/6/7
(1200/2400/4800/9600/19200/38400/57600/115200)
byte 5 data bit
(0:7 bit, 1:8 bit must be 8 bit)
byte 6 stop bit (0:1, 1:2 stop bits)
byte 7 parity (0:none, 1:off, 2:even)
byte 8 flow control
(0:none, 1:xon/xoff, 2:hardware => must use none)
================ =================================================
GUI_NO_OPERATION
No operation
================ =============================================
byte 0,1 length
byte 2 command code 0x38
================ =============================================
GUI_DHCP_IP
Set DHCP option and local IP address
================ =============================================
byte 0,1 length
byte 2 command code 0x39
byte 3 0:dhcp disabled, 1:dhcp enabled
byte 4/5/6/7 IP address
================ =============================================
GUI_CREATE_PASS_THROUGH
Create pass through disk
================ =============================================
byte 0,1 length
byte 2 command code 0x40
byte 3 device #
byte 4 scsi channel (0/1)
byte 5 scsi id (0-->15)
byte 6 scsi lun (0-->7)
byte 7 tagged queue (1 enabled)
byte 8 cache mode (1 enabled)
byte 9 max speed (0/1/2/3/4,
async/20/40/80/160 for scsi)
(0/1/2/3/4, 33/66/100/133/150 for ide )
================ =============================================
GUI_MODIFY_PASS_THROUGH
Modify pass through disk
================ =============================================
byte 0,1 length
byte 2 command code 0x41
byte 3 device #
byte 4 scsi channel (0/1)
byte 5 scsi id (0-->15)
byte 6 scsi lun (0-->7)
byte 7 tagged queue (1 enabled)
byte 8 cache mode (1 enabled)
byte 9 max speed (0/1/2/3/4,
async/20/40/80/160 for scsi)
(0/1/2/3/4, 33/66/100/133/150 for ide )
================ =============================================
GUI_DELETE_PASS_THROUGH
Delete pass through disk
================ =============================================
byte 0,1 length
byte 2 command code 0x42
byte 3 device# to be deleted
================ =============================================
GUI_IDENTIFY_DEVICE
Identify Device
================ =============================================
byte 0,1 length
byte 2 command code 0x43
byte 3 Flash Method
(0:flash selected, 1:flash not selected)
byte 4/5/6/7 IDE device mask to be flashed
.. Note:: no response data available
================ =============================================
GUI_CREATE_RAIDSET
Create Raid Set
================ =============================================
byte 0,1 length
byte 2 command code 0x50
byte 3/4/5/6 device mask
byte 7-22 raidset name (if byte 7 == 0:use default)
================ =============================================
GUI_DELETE_RAIDSET
Delete Raid Set
================ =============================================
byte 0,1 length
byte 2 command code 0x51
byte 3 raidset#
================ =============================================
GUI_EXPAND_RAIDSET
Expand Raid Set
================ =============================================
byte 0,1 length
byte 2 command code 0x52
byte 3 raidset#
byte 4/5/6/7 device mask for expansion
byte 8/9/10 (8:0 no change, 1 change, 0xff:terminate,
9:new raid level,
10:new stripe size
0/1/2/3/4/5->4/8/16/32/64/128K )
byte 11/12/13 repeat for each volume in the raidset
================ =============================================
GUI_ACTIVATE_RAIDSET
Activate incomplete raid set
================ =============================================
byte 0,1 length
byte 2 command code 0x53
byte 3 raidset#
================ =============================================
GUI_CREATE_HOT_SPARE
Create hot spare disk
================ =============================================
byte 0,1 length
byte 2 command code 0x54
byte 3/4/5/6 device mask for hot spare creation
================ =============================================
GUI_DELETE_HOT_SPARE
Delete hot spare disk
================ =============================================
byte 0,1 length
byte 2 command code 0x55
byte 3/4/5/6 device mask for hot spare deletion
================ =============================================
GUI_CREATE_VOLUME
Create volume set
================ =============================================
byte 0,1 length
byte 2 command code 0x60
byte 3 raidset#
byte 4-19 volume set name
(if byte4 == 0, use default)
byte 20-27 volume capacity (blocks)
byte 28 raid level
byte 29 stripe size
(0/1/2/3/4/5->4/8/16/32/64/128K)
byte 30 channel
byte 31 ID
byte 32 LUN
byte 33 1 enable tag
byte 34 1 enable cache
byte 35 speed
(0/1/2/3/4->async/20/40/80/160 for scsi)
(0/1/2/3/4->33/66/100/133/150 for IDE )
byte 36 1 to select quick init
================ =============================================
GUI_MODIFY_VOLUME
Modify volume Set
================ =============================================
byte 0,1 length
byte 2 command code 0x61
byte 3 volumeset#
byte 4-19 new volume set name
(if byte4 == 0, not change)
byte 20-27 new volume capacity (reserved)
byte 28 new raid level
byte 29 new stripe size
(0/1/2/3/4/5->4/8/16/32/64/128K)
byte 30 new channel
byte 31 new ID
byte 32 new LUN
byte 33 1 enable tag
byte 34 1 enable cache
byte 35 speed
(0/1/2/3/4->async/20/40/80/160 for scsi)
(0/1/2/3/4->33/66/100/133/150 for IDE )
================ =============================================
GUI_DELETE_VOLUME
Delete volume set
================ =============================================
byte 0,1 length
byte 2 command code 0x62
byte 3 volumeset#
================ =============================================
GUI_START_CHECK_VOLUME
Start volume consistency check
================ =============================================
byte 0,1 length
byte 2 command code 0x63
byte 3 volumeset#
================ =============================================
GUI_STOP_CHECK_VOLUME
Stop volume consistency check
================ =============================================
byte 0,1 length
byte 2 command code 0x64
================ =============================================
4. Returned data
----------------
(A) Header
3 bytes sequence (0x5E, 0x01, 0x61)
(B) Length
2 bytes
(low byte 1st, excludes length and checksum byte)
(C)
status or data:
1) If length == 1 ==> 1 byte status code::
#define GUI_OK 0x41
#define GUI_RAIDSET_NOT_NORMAL 0x42
#define GUI_VOLUMESET_NOT_NORMAL 0x43
#define GUI_NO_RAIDSET 0x44
#define GUI_NO_VOLUMESET 0x45
#define GUI_NO_PHYSICAL_DRIVE 0x46
#define GUI_PARAMETER_ERROR 0x47
#define GUI_UNSUPPORTED_COMMAND 0x48
#define GUI_DISK_CONFIG_CHANGED 0x49
#define GUI_INVALID_PASSWORD 0x4a
#define GUI_NO_DISK_SPACE 0x4b
#define GUI_CHECKSUM_ERROR 0x4c
#define GUI_PASSWORD_REQUIRED 0x4d
2) If length > 1:
data block returned from controller
and the contents depends on the command code
(E) Checksum
checksum of length and status or data byte

View File

@ -1,574 +0,0 @@
*******************************************************************************
** ARECA FIRMWARE SPEC
*******************************************************************************
** Usage of IOP331 adapter
** (All In/Out is in IOP331's view)
** 1. Message 0 --> InitThread message and return code
** 2. Doorbell is used for RS-232 emulation
** inDoorBell : bit0 -- data in ready
** (DRIVER DATA WRITE OK)
** bit1 -- data out has been read
** (DRIVER DATA READ OK)
** outDooeBell: bit0 -- data out ready
** (IOP331 DATA WRITE OK)
** bit1 -- data in has been read
** (IOP331 DATA READ OK)
** 3. Index Memory Usage
** offset 0xf00 : for RS232 out (request buffer)
** offset 0xe00 : for RS232 in (scratch buffer)
** offset 0xa00 : for inbound message code message_rwbuffer
** (driver send to IOP331)
** offset 0xa00 : for outbound message code message_rwbuffer
** (IOP331 send to driver)
** 4. RS-232 emulation
** Currently 128 byte buffer is used
** 1st uint32_t : Data length (1--124)
** Byte 4--127 : Max 124 bytes of data
** 5. PostQ
** All SCSI Command must be sent through postQ:
** (inbound queue port) Request frame must be 32 bytes aligned
** #bit27--bit31 => flag for post ccb
** #bit0--bit26 => real address (bit27--bit31) of post arcmsr_cdb
** bit31 :
** 0 : 256 bytes frame
** 1 : 512 bytes frame
** bit30 :
** 0 : normal request
** 1 : BIOS request
** bit29 : reserved
** bit28 : reserved
** bit27 : reserved
** ---------------------------------------------------------------------------
** (outbount queue port) Request reply
** #bit27--bit31
** => flag for reply
** #bit0--bit26
** => real address (bit27--bit31) of reply arcmsr_cdb
** bit31 : must be 0 (for this type of reply)
** bit30 : reserved for BIOS handshake
** bit29 : reserved
** bit28 :
** 0 : no error, ignore AdapStatus/DevStatus/SenseData
** 1 : Error, error code in AdapStatus/DevStatus/SenseData
** bit27 : reserved
** 6. BIOS request
** All BIOS request is the same with request from PostQ
** Except :
** Request frame is sent from configuration space
** offset: 0x78 : Request Frame (bit30 == 1)
** offset: 0x18 : writeonly to generate
** IRQ to IOP331
** Completion of request:
** (bit30 == 0, bit28==err flag)
** 7. Definition of SGL entry (structure)
** 8. Message1 Out - Diag Status Code (????)
** 9. Message0 message code :
** 0x00 : NOP
** 0x01 : Get Config
** ->offset 0xa00 :for outbound message code message_rwbuffer
** (IOP331 send to driver)
** Signature 0x87974060(4)
** Request len 0x00000200(4)
** numbers of queue 0x00000100(4)
** SDRAM Size 0x00000100(4)-->256 MB
** IDE Channels 0x00000008(4)
** vendor 40 bytes char
** model 8 bytes char
** FirmVer 16 bytes char
** Device Map 16 bytes char
** FirmwareVersion DWORD <== Added for checking of
** new firmware capability
** 0x02 : Set Config
** ->offset 0xa00 :for inbound message code message_rwbuffer
** (driver send to IOP331)
** Signature 0x87974063(4)
** UPPER32 of Request Frame (4)-->Driver Only
** 0x03 : Reset (Abort all queued Command)
** 0x04 : Stop Background Activity
** 0x05 : Flush Cache
** 0x06 : Start Background Activity
** (re-start if background is halted)
** 0x07 : Check If Host Command Pending
** (Novell May Need This Function)
** 0x08 : Set controller time
** ->offset 0xa00 : for inbound message code message_rwbuffer
** (driver to IOP331)
** byte 0 : 0xaa <-- signature
** byte 1 : 0x55 <-- signature
** byte 2 : year (04)
** byte 3 : month (1..12)
** byte 4 : date (1..31)
** byte 5 : hour (0..23)
** byte 6 : minute (0..59)
** byte 7 : second (0..59)
*******************************************************************************
*******************************************************************************
** RS-232 Interface for Areca Raid Controller
** The low level command interface is exclusive with VT100 terminal
** --------------------------------------------------------------------
** 1. Sequence of command execution
** --------------------------------------------------------------------
** (A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)
** (B) Command block : variable length of data including length,
** command code, data and checksum byte
** (C) Return data : variable length of data
** --------------------------------------------------------------------
** 2. Command block
** --------------------------------------------------------------------
** (A) 1st byte : command block length (low byte)
** (B) 2nd byte : command block length (high byte)
** note ..command block length shouldn't > 2040 bytes,
** length excludes these two bytes
** (C) 3rd byte : command code
** (D) 4th and following bytes : variable length data bytes
** depends on command code
** (E) last byte : checksum byte (sum of 1st byte until last data byte)
** --------------------------------------------------------------------
** 3. Command code and associated data
** --------------------------------------------------------------------
** The following are command code defined in raid controller Command
** code 0x10--0x1? are used for system level management,
** no password checking is needed and should be implemented in separate
** well controlled utility and not for end user access.
** Command code 0x20--0x?? always check the password,
** password must be entered to enable these command.
** enum
** {
** GUI_SET_SERIAL=0x10,
** GUI_SET_VENDOR,
** GUI_SET_MODEL,
** GUI_IDENTIFY,
** GUI_CHECK_PASSWORD,
** GUI_LOGOUT,
** GUI_HTTP,
** GUI_SET_ETHERNET_ADDR,
** GUI_SET_LOGO,
** GUI_POLL_EVENT,
** GUI_GET_EVENT,
** GUI_GET_HW_MONITOR,
** // GUI_QUICK_CREATE=0x20, (function removed)
** GUI_GET_INFO_R=0x20,
** GUI_GET_INFO_V,
** GUI_GET_INFO_P,
** GUI_GET_INFO_S,
** GUI_CLEAR_EVENT,
** GUI_MUTE_BEEPER=0x30,
** GUI_BEEPER_SETTING,
** GUI_SET_PASSWORD,
** GUI_HOST_INTERFACE_MODE,
** GUI_REBUILD_PRIORITY,
** GUI_MAX_ATA_MODE,
** GUI_RESET_CONTROLLER,
** GUI_COM_PORT_SETTING,
** GUI_NO_OPERATION,
** GUI_DHCP_IP,
** GUI_CREATE_PASS_THROUGH=0x40,
** GUI_MODIFY_PASS_THROUGH,
** GUI_DELETE_PASS_THROUGH,
** GUI_IDENTIFY_DEVICE,
** GUI_CREATE_RAIDSET=0x50,
** GUI_DELETE_RAIDSET,
** GUI_EXPAND_RAIDSET,
** GUI_ACTIVATE_RAIDSET,
** GUI_CREATE_HOT_SPARE,
** GUI_DELETE_HOT_SPARE,
** GUI_CREATE_VOLUME=0x60,
** GUI_MODIFY_VOLUME,
** GUI_DELETE_VOLUME,
** GUI_START_CHECK_VOLUME,
** GUI_STOP_CHECK_VOLUME
** };
** Command description :
** GUI_SET_SERIAL : Set the controller serial#
** byte 0,1 : length
** byte 2 : command code 0x10
** byte 3 : password length (should be 0x0f)
** byte 4-0x13 : should be "ArEcATecHnoLogY"
** byte 0x14--0x23 : Serial number string (must be 16 bytes)
** GUI_SET_VENDOR : Set vendor string for the controller
** byte 0,1 : length
** byte 2 : command code 0x11
** byte 3 : password length (should be 0x08)
** byte 4-0x13 : should be "ArEcAvAr"
** byte 0x14--0x3B : vendor string (must be 40 bytes)
** GUI_SET_MODEL : Set the model name of the controller
** byte 0,1 : length
** byte 2 : command code 0x12
** byte 3 : password length (should be 0x08)
** byte 4-0x13 : should be "ArEcAvAr"
** byte 0x14--0x1B : model string (must be 8 bytes)
** GUI_IDENTIFY : Identify device
** byte 0,1 : length
** byte 2 : command code 0x13
** return "Areca RAID Subsystem "
** GUI_CHECK_PASSWORD : Verify password
** byte 0,1 : length
** byte 2 : command code 0x14
** byte 3 : password length
** byte 4-0x?? : user password to be checked
** GUI_LOGOUT : Logout GUI (force password checking on next command)
** byte 0,1 : length
** byte 2 : command code 0x15
** GUI_HTTP : HTTP interface (reserved for Http proxy service)(0x16)
**
** GUI_SET_ETHERNET_ADDR : Set the ethernet MAC address
** byte 0,1 : length
** byte 2 : command code 0x17
** byte 3 : password length (should be 0x08)
** byte 4-0x13 : should be "ArEcAvAr"
** byte 0x14--0x19 : Ethernet MAC address (must be 6 bytes)
** GUI_SET_LOGO : Set logo in HTTP
** byte 0,1 : length
** byte 2 : command code 0x18
** byte 3 : Page# (0/1/2/3) (0xff --> clear OEM logo)
** byte 4/5/6/7 : 0x55/0xaa/0xa5/0x5a
** byte 8 : TITLE.JPG data (each page must be 2000 bytes)
** note page0 1st 2 byte must be
** actual length of the JPG file
** GUI_POLL_EVENT : Poll If Event Log Changed
** byte 0,1 : length
** byte 2 : command code 0x19
** GUI_GET_EVENT : Read Event
** byte 0,1 : length
** byte 2 : command code 0x1a
** byte 3 : Event Page (0:1st page/1/2/3:last page)
** GUI_GET_HW_MONITOR : Get HW monitor data
** byte 0,1 : length
** byte 2 : command code 0x1b
** byte 3 : # of FANs(example 2)
** byte 4 : # of Voltage sensor(example 3)
** byte 5 : # of temperature sensor(example 2)
** byte 6 : # of power
** byte 7/8 : Fan#0 (RPM)
** byte 9/10 : Fan#1
** byte 11/12 : Voltage#0 original value in *1000
** byte 13/14 : Voltage#0 value
** byte 15/16 : Voltage#1 org
** byte 17/18 : Voltage#1
** byte 19/20 : Voltage#2 org
** byte 21/22 : Voltage#2
** byte 23 : Temp#0
** byte 24 : Temp#1
** byte 25 : Power indicator (bit0 : power#0,
** bit1 : power#1)
** byte 26 : UPS indicator
** GUI_QUICK_CREATE : Quick create raid/volume set
** byte 0,1 : length
** byte 2 : command code 0x20
** byte 3/4/5/6 : raw capacity
** byte 7 : raid level
** byte 8 : stripe size
** byte 9 : spare
** byte 10/11/12/13: device mask (the devices to create raid/volume)
** This function is removed, application like
** to implement quick create function
** need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
** GUI_GET_INFO_R : Get Raid Set Information
** byte 0,1 : length
** byte 2 : command code 0x20
** byte 3 : raidset#
** typedef struct sGUI_RAIDSET
** {
** BYTE grsRaidSetName[16];
** DWORD grsCapacity;
** DWORD grsCapacityX;
** DWORD grsFailMask;
** BYTE grsDevArray[32];
** BYTE grsMemberDevices;
** BYTE grsNewMemberDevices;
** BYTE grsRaidState;
** BYTE grsVolumes;
** BYTE grsVolumeList[16];
** BYTE grsRes1;
** BYTE grsRes2;
** BYTE grsRes3;
** BYTE grsFreeSegments;
** DWORD grsRawStripes[8];
** DWORD grsRes4;
** DWORD grsRes5; // Total to 128 bytes
** DWORD grsRes6; // Total to 128 bytes
** } sGUI_RAIDSET, *pGUI_RAIDSET;
** GUI_GET_INFO_V : Get Volume Set Information
** byte 0,1 : length
** byte 2 : command code 0x21
** byte 3 : volumeset#
** typedef struct sGUI_VOLUMESET
** {
** BYTE gvsVolumeName[16]; // 16
** DWORD gvsCapacity;
** DWORD gvsCapacityX;
** DWORD gvsFailMask;
** DWORD gvsStripeSize;
** DWORD gvsNewFailMask;
** DWORD gvsNewStripeSize;
** DWORD gvsVolumeStatus;
** DWORD gvsProgress; // 32
** sSCSI_ATTR gvsScsi;
** BYTE gvsMemberDisks;
** BYTE gvsRaidLevel; // 8
** BYTE gvsNewMemberDisks;
** BYTE gvsNewRaidLevel;
** BYTE gvsRaidSetNumber;
** BYTE gvsRes0; // 4
** BYTE gvsRes1[4]; // 64 bytes
** } sGUI_VOLUMESET, *pGUI_VOLUMESET;
** GUI_GET_INFO_P : Get Physical Drive Information
** byte 0,1 : length
** byte 2 : command code 0x22
** byte 3 : drive # (from 0 to max-channels - 1)
** typedef struct sGUI_PHY_DRV
** {
** BYTE gpdModelName[40];
** BYTE gpdSerialNumber[20];
** BYTE gpdFirmRev[8];
** DWORD gpdCapacity;
** DWORD gpdCapacityX; // Reserved for expansion
** BYTE gpdDeviceState;
** BYTE gpdPioMode;
** BYTE gpdCurrentUdmaMode;
** BYTE gpdUdmaMode;
** BYTE gpdDriveSelect;
** BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
** sSCSI_ATTR gpdScsi;
** BYTE gpdReserved[40]; // Total to 128 bytes
** } sGUI_PHY_DRV, *pGUI_PHY_DRV;
** GUI_GET_INFO_S : Get System Information
** byte 0,1 : length
** byte 2 : command code 0x23
** typedef struct sCOM_ATTR
** {
** BYTE comBaudRate;
** BYTE comDataBits;
** BYTE comStopBits;
** BYTE comParity;
** BYTE comFlowControl;
** } sCOM_ATTR, *pCOM_ATTR;
** typedef struct sSYSTEM_INFO
** {
** BYTE gsiVendorName[40];
** BYTE gsiSerialNumber[16];
** BYTE gsiFirmVersion[16];
** BYTE gsiBootVersion[16];
** BYTE gsiMbVersion[16];
** BYTE gsiModelName[8];
** BYTE gsiLocalIp[4];
** BYTE gsiCurrentIp[4];
** DWORD gsiTimeTick;
** DWORD gsiCpuSpeed;
** DWORD gsiICache;
** DWORD gsiDCache;
** DWORD gsiScache;
** DWORD gsiMemorySize;
** DWORD gsiMemorySpeed;
** DWORD gsiEvents;
** BYTE gsiMacAddress[6];
** BYTE gsiDhcp;
** BYTE gsiBeeper;
** BYTE gsiChannelUsage;
** BYTE gsiMaxAtaMode;
** BYTE gsiSdramEcc; // 1:if ECC enabled
** BYTE gsiRebuildPriority;
** sCOM_ATTR gsiComA; // 5 bytes
** sCOM_ATTR gsiComB; // 5 bytes
** BYTE gsiIdeChannels;
** BYTE gsiScsiHostChannels;
** BYTE gsiIdeHostChannels;
** BYTE gsiMaxVolumeSet;
** BYTE gsiMaxRaidSet;
** BYTE gsiEtherPort; // 1:if ether net port supported
** BYTE gsiRaid6Engine; // 1:Raid6 engine supported
** BYTE gsiRes[75];
** } sSYSTEM_INFO, *pSYSTEM_INFO;
** GUI_CLEAR_EVENT : Clear System Event
** byte 0,1 : length
** byte 2 : command code 0x24
** GUI_MUTE_BEEPER : Mute current beeper
** byte 0,1 : length
** byte 2 : command code 0x30
** GUI_BEEPER_SETTING : Disable beeper
** byte 0,1 : length
** byte 2 : command code 0x31
** byte 3 : 0->disable, 1->enable
** GUI_SET_PASSWORD : Change password
** byte 0,1 : length
** byte 2 : command code 0x32
** byte 3 : pass word length ( must <= 15 )
** byte 4 : password (must be alpha-numerical)
** GUI_HOST_INTERFACE_MODE : Set host interface mode
** byte 0,1 : length
** byte 2 : command code 0x33
** byte 3 : 0->Independent, 1->cluster
** GUI_REBUILD_PRIORITY : Set rebuild priority
** byte 0,1 : length
** byte 2 : command code 0x34
** byte 3 : 0/1/2/3 (low->high)
** GUI_MAX_ATA_MODE : Set maximum ATA mode to be used
** byte 0,1 : length
** byte 2 : command code 0x35
** byte 3 : 0/1/2/3 (133/100/66/33)
** GUI_RESET_CONTROLLER : Reset Controller
** byte 0,1 : length
** byte 2 : command code 0x36
** *Response with VT100 screen (discard it)
** GUI_COM_PORT_SETTING : COM port setting
** byte 0,1 : length
** byte 2 : command code 0x37
** byte 3 : 0->COMA (term port),
** 1->COMB (debug port)
** byte 4 : 0/1/2/3/4/5/6/7
** (1200/2400/4800/9600/19200/38400/57600/115200)
** byte 5 : data bit
** (0:7 bit, 1:8 bit : must be 8 bit)
** byte 6 : stop bit (0:1, 1:2 stop bits)
** byte 7 : parity (0:none, 1:off, 2:even)
** byte 8 : flow control
** (0:none, 1:xon/xoff, 2:hardware => must use none)
** GUI_NO_OPERATION : No operation
** byte 0,1 : length
** byte 2 : command code 0x38
** GUI_DHCP_IP : Set DHCP option and local IP address
** byte 0,1 : length
** byte 2 : command code 0x39
** byte 3 : 0:dhcp disabled, 1:dhcp enabled
** byte 4/5/6/7 : IP address
** GUI_CREATE_PASS_THROUGH : Create pass through disk
** byte 0,1 : length
** byte 2 : command code 0x40
** byte 3 : device #
** byte 4 : scsi channel (0/1)
** byte 5 : scsi id (0-->15)
** byte 6 : scsi lun (0-->7)
** byte 7 : tagged queue (1 : enabled)
** byte 8 : cache mode (1 : enabled)
** byte 9 : max speed (0/1/2/3/4,
** async/20/40/80/160 for scsi)
** (0/1/2/3/4, 33/66/100/133/150 for ide )
** GUI_MODIFY_PASS_THROUGH : Modify pass through disk
** byte 0,1 : length
** byte 2 : command code 0x41
** byte 3 : device #
** byte 4 : scsi channel (0/1)
** byte 5 : scsi id (0-->15)
** byte 6 : scsi lun (0-->7)
** byte 7 : tagged queue (1 : enabled)
** byte 8 : cache mode (1 : enabled)
** byte 9 : max speed (0/1/2/3/4,
** async/20/40/80/160 for scsi)
** (0/1/2/3/4, 33/66/100/133/150 for ide )
** GUI_DELETE_PASS_THROUGH : Delete pass through disk
** byte 0,1 : length
** byte 2 : command code 0x42
** byte 3 : device# to be deleted
** GUI_IDENTIFY_DEVICE : Identify Device
** byte 0,1 : length
** byte 2 : command code 0x43
** byte 3 : Flash Method
** (0:flash selected, 1:flash not selected)
** byte 4/5/6/7 : IDE device mask to be flashed
** note .... no response data available
** GUI_CREATE_RAIDSET : Create Raid Set
** byte 0,1 : length
** byte 2 : command code 0x50
** byte 3/4/5/6 : device mask
** byte 7-22 : raidset name (if byte 7 == 0:use default)
** GUI_DELETE_RAIDSET : Delete Raid Set
** byte 0,1 : length
** byte 2 : command code 0x51
** byte 3 : raidset#
** GUI_EXPAND_RAIDSET : Expand Raid Set
** byte 0,1 : length
** byte 2 : command code 0x52
** byte 3 : raidset#
** byte 4/5/6/7 : device mask for expansion
** byte 8/9/10 : (8:0 no change, 1 change, 0xff:terminate,
** 9:new raid level,
** 10:new stripe size
** 0/1/2/3/4/5->4/8/16/32/64/128K )
** byte 11/12/13 : repeat for each volume in the raidset
** GUI_ACTIVATE_RAIDSET : Activate incomplete raid set
** byte 0,1 : length
** byte 2 : command code 0x53
** byte 3 : raidset#
** GUI_CREATE_HOT_SPARE : Create hot spare disk
** byte 0,1 : length
** byte 2 : command code 0x54
** byte 3/4/5/6 : device mask for hot spare creation
** GUI_DELETE_HOT_SPARE : Delete hot spare disk
** byte 0,1 : length
** byte 2 : command code 0x55
** byte 3/4/5/6 : device mask for hot spare deletion
** GUI_CREATE_VOLUME : Create volume set
** byte 0,1 : length
** byte 2 : command code 0x60
** byte 3 : raidset#
** byte 4-19 : volume set name
** (if byte4 == 0, use default)
** byte 20-27 : volume capacity (blocks)
** byte 28 : raid level
** byte 29 : stripe size
** (0/1/2/3/4/5->4/8/16/32/64/128K)
** byte 30 : channel
** byte 31 : ID
** byte 32 : LUN
** byte 33 : 1 enable tag
** byte 34 : 1 enable cache
** byte 35 : speed
** (0/1/2/3/4->async/20/40/80/160 for scsi)
** (0/1/2/3/4->33/66/100/133/150 for IDE )
** byte 36 : 1 to select quick init
**
** GUI_MODIFY_VOLUME : Modify volume Set
** byte 0,1 : length
** byte 2 : command code 0x61
** byte 3 : volumeset#
** byte 4-19 : new volume set name
** (if byte4 == 0, not change)
** byte 20-27 : new volume capacity (reserved)
** byte 28 : new raid level
** byte 29 : new stripe size
** (0/1/2/3/4/5->4/8/16/32/64/128K)
** byte 30 : new channel
** byte 31 : new ID
** byte 32 : new LUN
** byte 33 : 1 enable tag
** byte 34 : 1 enable cache
** byte 35 : speed
** (0/1/2/3/4->async/20/40/80/160 for scsi)
** (0/1/2/3/4->33/66/100/133/150 for IDE )
** GUI_DELETE_VOLUME : Delete volume set
** byte 0,1 : length
** byte 2 : command code 0x62
** byte 3 : volumeset#
** GUI_START_CHECK_VOLUME : Start volume consistency check
** byte 0,1 : length
** byte 2 : command code 0x63
** byte 3 : volumeset#
** GUI_STOP_CHECK_VOLUME : Stop volume consistency check
** byte 0,1 : length
** byte 2 : command code 0x64
** ---------------------------------------------------------------------
** 4. Returned data
** ---------------------------------------------------------------------
** (A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)
** (B) Length : 2 bytes
** (low byte 1st, excludes length and checksum byte)
** (C) status or data :
** <1> If length == 1 ==> 1 byte status code
** #define GUI_OK 0x41
** #define GUI_RAIDSET_NOT_NORMAL 0x42
** #define GUI_VOLUMESET_NOT_NORMAL 0x43
** #define GUI_NO_RAIDSET 0x44
** #define GUI_NO_VOLUMESET 0x45
** #define GUI_NO_PHYSICAL_DRIVE 0x46
** #define GUI_PARAMETER_ERROR 0x47
** #define GUI_UNSUPPORTED_COMMAND 0x48
** #define GUI_DISK_CONFIG_CHANGED 0x49
** #define GUI_INVALID_PASSWORD 0x4a
** #define GUI_NO_DISK_SPACE 0x4b
** #define GUI_CHECKSUM_ERROR 0x4c
** #define GUI_PASSWORD_REQUIRED 0x4d
** <2> If length > 1 ==>
** data block returned from controller
** and the contents depends on the command code
** (E) Checksum : checksum of length and status or data byte
**************************************************************************

View File

@ -1,5 +1,8 @@
Linux driver for Brocade FC/FCOE adapters
.. SPDX-License-Identifier: GPL-2.0
=========================================
Linux driver for Brocade FC/FCOE adapters
=========================================
Supported Hardware
------------------
@ -7,8 +10,9 @@ Supported Hardware
bfa 3.0.2.2 driver supports all Brocade FC/FCOE adapters. Below is a list of
adapter models with corresponding PCIIDs.
PCIID Model
=================== ===========================================
PCIID Model
=================== ===========================================
1657:0013:1657:0014 425 4Gbps dual port FC HBA
1657:0013:1657:0014 825 8Gbps PCIe dual port FC HBA
1657:0013:103c:1742 HP 82B 8Gbps PCIedual port FC HBA
@ -26,6 +30,7 @@ adapter models with corresponding PCIIDs.
1657:0022:1657:0024 1860 16Gbps FC HBA
1657:0022:1657:0022 1860 10Gbps CNA - FCOE
=================== ===========================================
Firmware download
@ -37,9 +42,11 @@ http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page
and then click following respective util package link:
Version Link
========= =======================================================
Version Link
========= =======================================================
v3.0.0.0 Linux Adapter Firmware package for RHEL 6.2, SLES 11SP2
========= =======================================================
Configuration & Management utility download
@ -52,9 +59,11 @@ http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page
and then click following respective util package link
Version Link
========= =======================================================
Version Link
========= =======================================================
v3.0.2.0 Linux Adapter Firmware package for RHEL 6.2, SLES 11SP2
========= =======================================================
Documentation
@ -69,10 +78,11 @@ http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page
and use the following inbox and out-of-box driver version mapping to find
the corresponding documentation:
============= ==================
Inbox Version Out-of-box Version
============= ==================
v3.0.2.2 v3.0.0.0
============= ==================
Support
-------

View File

@ -1,3 +1,6 @@
.. SPDX-License-Identifier: GPL-2.0
===========================
Operating FCoE using bnx2fc
===========================
Broadcom FCoE offload through bnx2fc is full stateful hardware offload that
@ -24,6 +27,7 @@ Driver Usage Model:
2. Configure the interfaces on which bnx2fc driver has to operate on.
Here are the steps to configure:
a. cd /etc/fcoe
b. copy cfg-ethx to cfg-eth5 if FCoE has to be enabled on eth5.
c. Repeat this for all the interfaces where FCoE has to be enabled.
@ -39,8 +43,10 @@ discovery and log into the targets.
5. "Symbolic Name" in 'fcoeadm -i' output would display if bnx2fc has claimed
the interface.
Eg:
[root@bh2 ~]# fcoeadm -i
Eg::
[root@bh2 ~]# fcoeadm -i
Description: NetXtreme II BCM57712 10 Gigabit Ethernet
Revision: 01
Manufacturer: Broadcom Corporation
@ -60,16 +66,16 @@ Eg:
State: Online
6. Verify the vlan discovery is performed by running ifconfig and notice
<INTERFACE>.<VLAN>-fcoe interfaces are automatically created.
<INTERFACE>.<VLAN>-fcoe interfaces are automatically created.
Refer to fcoeadm manpage for more information on fcoeadm operations to
create/destroy interfaces or to display lun/target information.
NOTE:
NOTE
====
** Broadcom FCoE capable devices implement a DCBX/LLDP client on-chip. Only one
LLDP client is allowed per interface. For proper operation all host software
based DCBX/LLDP clients (e.g. lldpad) must be disabled. To disable lldpad on a
given interface, run the following command:
given interface, run the following command::
lldptool set-lldp -i <interface_name> adminStatus=disabled
lldptool set-lldp -i <interface_name> adminStatus=disabled

View File

@ -1,4 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
=================================
Chelsio S3 iSCSI Driver for Linux
=================================
Introduction
============
@ -49,7 +53,8 @@ The following steps need to be taken to accelerates the open-iscsi initiator:
The cxgb3i module registers a new transport class "cxgb3i" with open-iscsi.
* in the case of recompiling the kernel, the cxgb3i selection is located at
* in the case of recompiling the kernel, the cxgb3i selection is located at::
Device Drivers
SCSI device support --->
[*] SCSI low-level drivers --->
@ -58,25 +63,26 @@ The following steps need to be taken to accelerates the open-iscsi initiator:
2. Create an interface file located under /etc/iscsi/ifaces/ for the new
transport class "cxgb3i".
The content of the file should be in the following format:
The content of the file should be in the following format::
iface.transport_name = cxgb3i
iface.net_ifacename = <ethX>
iface.ipaddress = <iscsi ip address>
* if iface.ipaddress is specified, <iscsi ip address> needs to be either the
same as the ethX's ip address or an address on the same subnet. Make
sure the ip address is unique in the network.
same as the ethX's ip address or an address on the same subnet. Make
sure the ip address is unique in the network.
3. edit /etc/iscsi/iscsid.conf
The default setting for MaxRecvDataSegmentLength (131072) is too big;
replace with a value no bigger than 15360 (for example 8192):
replace with a value no bigger than 15360 (for example 8192)::
node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
* The login would fail for a normal session if MaxRecvDataSegmentLength is
too big. A error message in the format of
"cxgb3i: ERR! MaxRecvSegmentLength <X> too big. Need to be <= <Y>."
would be logged to dmesg.
too big. A error message in the format of
"cxgb3i: ERR! MaxRecvSegmentLength <X> too big. Need to be <= <Y>."
would be logged to dmesg.
4. To direct open-iscsi traffic to go through cxgb3i's accelerated path,
"-I <iface file name>" option needs to be specified with most of the

View File

@ -1,5 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
======================================
README file for the dc395x SCSI driver
==========================================
======================================
Status
------
@ -18,14 +21,14 @@ http://lists.twibble.org/mailman/listinfo/dc395x/
Parameters
----------
The driver uses the settings from the EEPROM set in the SCSI BIOS
The driver uses the settings from the EEPROM set in the SCSI BIOS
setup. If there is no EEPROM, the driver uses default values.
Both can be overridden by command line parameters (module or kernel
parameters).
The following parameters are available:
- safe
safe
Default: 0, Acceptable values: 0 or 1
If safe is set to 1 then the adapter will use conservative
@ -33,52 +36,63 @@ The following parameters are available:
shortcut for dc395x=7,4,9,15,2,10
- adapter_id
adapter_id
Default: 7, Acceptable values: 0 to 15
Sets the host adapter SCSI ID.
- max_speed
max_speed
Default: 1, Acceptable value: 0 to 7
0 = 20 Mhz
1 = 12.2 Mhz
2 = 10 Mhz
3 = 8 Mhz
4 = 6.7 Mhz
5 = 5.8 Hhz
6 = 5 Mhz
7 = 4 Mhz
- dev_mode
== ========
0 20 Mhz
1 12.2 Mhz
2 10 Mhz
3 8 Mhz
4 6.7 Mhz
5 5.8 Hhz
6 5 Mhz
7 4 Mhz
== ========
dev_mode
Bitmap for device configuration
DevMode bit definition:
Bit Val(hex) Val(dec) Meaning
*0 0x01 1 Parity check
*1 0x02 2 Synchronous Negotiation
*2 0x04 4 Disconnection
*3 0x08 8 Send Start command on startup. (Not used)
*4 0x10 16 Tagged Command Queueing
*5 0x20 32 Wide Negotiation
- adapter_mode
=== ======== ======== =========================================
Bit Val(hex) Val(dec) Meaning
=== ======== ======== =========================================
0 0x01 1 Parity check
1 0x02 2 Synchronous Negotiation
2 0x04 4 Disconnection
3 0x08 8 Send Start command on startup. (Not used)
4 0x10 16 Tagged Command Queueing
5 0x20 32 Wide Negotiation
=== ======== ======== =========================================
adapter_mode
Bitmap for adapter configuration
AdaptMode bit definition
===== ======== ======== ====================================================
Bit Val(hex) Val(dec) Meaning
*0 0x01 1 Support more than two drives. (Not used)
*1 0x02 2 Use DOS compatible mapping for HDs greater than 1GB.
*2 0x04 4 Reset SCSI Bus on startup.
*3 0x08 8 Active Negation: Improves SCSI Bus noise immunity.
===== ======== ======== ====================================================
0 0x01 1 Support more than two drives. (Not used)
1 0x02 2 Use DOS compatible mapping for HDs greater than 1GB.
2 0x04 4 Reset SCSI Bus on startup.
3 0x08 8 Active Negation: Improves SCSI Bus noise immunity.
4 0x10 16 Immediate return on BIOS seek command. (Not used)
(*)5 0x20 32 Check for LUNs >= 1.
===== ======== ======== ====================================================
- tags
tags
Default: 3, Acceptable values: 0-5
The number of tags is 1<<x, if x has been specified
- reset_delay
reset_delay
Default: 1, Acceptable values: 0-180
The seconds to not accept commands after a SCSI Reset
@ -95,8 +109,9 @@ License (GPL). Please read it, before using this driver. It should be
included in your kernel sources and with your distribution. It carries the
filename COPYING. If you don't have it, please ask me to send you one by
email.
Note: The GNU GPL says also something about warranty and liability.
Note: The GNU GPL says also something about warranty and liability.
Please be aware the following: While we do my best to provide a working and
reliable driver, there is a chance, that it will kill your valuable data.
reliable driver, there is a chance, that it will kill your valuable data.
We refuse to take any responsibility for that. The driver is provided as-is
and YOU USE IT AT YOUR OWN RESPONSIBILITY.

View File

@ -0,0 +1,92 @@
.. SPDX-License-Identifier: GPL-2.0
===================
Adaptec dpti driver
===================
Redistribution and use in source form, with or without modification, are
permitted provided that redistributions of source code must retain the
above copyright notice, this list of conditions and the following disclaimer.
This software is provided ``as is`` by Adaptec and
any express or implied warranties, including, but not limited to, the
implied warranties of merchantability and fitness for a particular purpose,
are disclaimed. In no event shall Adaptec be
liable for any direct, indirect, incidental, special, exemplary or
consequential damages (including, but not limited to, procurement of
substitute goods or services; loss of use, data, or profits; or business
interruptions) however caused and on any theory of liability, whether in
contract, strict liability, or tort (including negligence or otherwise)
arising in any way out of the use of this driver software, even if advised
of the possibility of such damage.
This driver supports the Adaptec I2O RAID and DPT SmartRAID V I2O boards.
Credits
=======
The original linux driver was ported to Linux by Karen White while at
Dell Computer. It was ported from Bob Pasteur's (of DPT) original
non-Linux driver. Mark Salyzyn and Bob Pasteur consulted on the original
driver.
2.0 version of the driver by Deanna Bonds and Mark Salyzyn.
History
=======
The driver was originally ported to linux version 2.0.34
==== ==========================================================================
V2.0 Rewrite of driver. Re-architectured based on i2o subsystem.
This was the first full GPL version since the last version used
i2osig headers which were not GPL. Developer Testing version.
V2.1 Internal testing
V2.2 First released version
V2.3 Changes:
- Added Raptor Support
- Fixed bug causing system to hang under extreme load with
- management utilities running (removed GFP_DMA from kmalloc flags)
V2.4 First version ready to be submitted to be embedded in the kernel
Changes:
- Implemented suggestions from Alan Cox
- Added calculation of resid for sg layer
- Better error handling
- Added checking underflow conditions
- Added DATAPROTECT checking
- Changed error return codes
- Fixed pointer bug in bus reset routine
- Enabled hba reset from ioctls (allows a FW flash to reboot and use
the new FW without having to reboot)
- Changed proc output
==== ==========================================================================
TODO
====
- Add 64 bit Scatter Gather when compiled on 64 bit architectures
- Add sparse lun scanning
- Add code that checks if a device that had been taken offline is
now online (at the FW level) when test unit ready or inquiry
command from scsi-core
- Add proc read interface
- busrescan command
- rescan command
- Add code to rescan routine that notifies scsi-core about new devices
- Add support for C-PCI (hotplug stuff)
- Add ioctl passthru error recovery
Notes
=====
The DPT card optimizes the order of processing commands. Consequently,
a command may take up to 6 minutes to complete after it has been sent
to the board.
The files dpti_ioctl.h dptsig.h osd_defs.h osd_util.h sys_info.h are part of the
interface files for Adaptec's management routines. These define the structures used
in the ioctls. They are written to be portable. They are hard to read, but I need
to use them 'as is' or I can miss changes in the interface.

View File

@ -1,83 +0,0 @@
/* TERMS AND CONDITIONS OF USE
*
* Redistribution and use in source form, with or without modification, are
* permitted provided that redistributions of source code must retain the
* above copyright notice, this list of conditions and the following disclaimer.
*
* This software is provided `as is' by Adaptec and
* any express or implied warranties, including, but not limited to, the
* implied warranties of merchantability and fitness for a particular purpose,
* are disclaimed. In no event shall Adaptec be
* liable for any direct, indirect, incidental, special, exemplary or
* consequential damages (including, but not limited to, procurement of
* substitute goods or services; loss of use, data, or profits; or business
* interruptions) however caused and on any theory of liability, whether in
* contract, strict liability, or tort (including negligence or otherwise)
* arising in any way out of the use of this driver software, even if advised
* of the possibility of such damage.
*
****************************************************************
* This driver supports the Adaptec I2O RAID and DPT SmartRAID V I2O boards.
*
* CREDITS:
* The original linux driver was ported to Linux by Karen White while at
* Dell Computer. It was ported from Bob Pasteur's (of DPT) original
* non-Linux driver. Mark Salyzyn and Bob Pasteur consulted on the original
* driver.
*
* 2.0 version of the driver by Deanna Bonds and Mark Salyzyn.
*
* HISTORY:
* The driver was originally ported to linux version 2.0.34
*
* V2.0 Rewrite of driver. Re-architectured based on i2o subsystem.
* This was the first full GPL version since the last version used
* i2osig headers which were not GPL. Developer Testing version.
* V2.1 Internal testing
* V2.2 First released version
*
* V2.3
* Changes:
* Added Raptor Support
* Fixed bug causing system to hang under extreme load with
* management utilities running (removed GFP_DMA from kmalloc flags)
*
*
* V2.4 First version ready to be submitted to be embedded in the kernel
* Changes:
* Implemented suggestions from Alan Cox
* Added calculation of resid for sg layer
* Better error handling
* Added checking underflow conditions
* Added DATAPROTECT checking
* Changed error return codes
* Fixed pointer bug in bus reset routine
* Enabled hba reset from ioctls (allows a FW flash to reboot and use the new
* FW without having to reboot)
* Changed proc output
*
* TODO:
* Add 64 bit Scatter Gather when compiled on 64 bit architectures
* Add sparse lun scanning
* Add code that checks if a device that had been taken offline is
* now online (at the FW level) when test unit ready or inquiry
* command from scsi-core
* Add proc read interface
* busrescan command
* rescan command
* Add code to rescan routine that notifies scsi-core about new devices
* Add support for C-PCI (hotplug stuff)
* Add ioctl passthru error recovery
*
* NOTES:
* The DPT card optimizes the order of processing commands. Consequently,
* a command may take up to 6 minutes to complete after it has been sent
* to the board.
*
* The files dpti_ioctl.h dptsig.h osd_defs.h osd_util.h sys_info.h are part of the
* interface files for Adaptec's management routines. These define the structures used
* in the ioctls. They are written to be portable. They are hard to read, but I need
* to use them 'as is' or I can miss changes in the interface.
*
*/

View File

@ -0,0 +1,93 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
==========================================
README file for the Linux g_NCR5380 driver
==========================================
Copyright |copy| 1993 Drew Eckhard
NCR53c400 extensions Copyright |copy| 1994,1995,1996 Kevin Lentin
This file documents the NCR53c400 extensions by Kevin Lentin and some
enhancements to the NCR5380 core.
This driver supports NCR5380 and NCR53c400 and compatible cards in port or
memory mapped modes.
Use of an interrupt is recommended, if supported by the board, as this will
allow targets to disconnect and thereby improve SCSI bus utilization.
If the irq parameter is 254 or is omitted entirely, the driver will probe
for the correct IRQ line automatically. If the irq parameter is 0 or 255
then no IRQ will be used.
The NCR53c400 does not support DMA but it does have Pseudo-DMA which is
supported by the driver.
This driver provides some information on what it has detected in
/proc/scsi/g_NCR5380/x where x is the scsi card number as detected at boot
time. More info to come in the future.
This driver works as a module.
When included as a module, parameters can be passed on the insmod/modprobe
command line:
============= ===============================================================
irq=xx[,...] the interrupt(s)
base=xx[,...] the port or base address(es) (for port or memory mapped, resp.)
card=xx[,...] card type(s):
== ======================================
0 NCR5380,
1 NCR53C400,
2 NCR53C400A,
3 Domex Technology Corp 3181E (DTC3181E)
4 Hewlett Packard C2502
== ======================================
============= ===============================================================
These old-style parameters can support only one card:
============= =================================================
ncr_irq=xx the interrupt
ncr_addr=xx the port or base address (for port or memory
mapped, resp.)
ncr_5380=1 to set up for a NCR5380 board
ncr_53c400=1 to set up for a NCR53C400 board
ncr_53c400a=1 to set up for a NCR53C400A board
dtc_3181e=1 to set up for a Domex Technology Corp 3181E board
hp_c2502=1 to set up for a Hewlett Packard C2502 board
============= =================================================
E.g. Trantor T130B in its default configuration::
modprobe g_NCR5380 irq=5 base=0x350 card=1
or alternatively, using the old syntax::
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_53c400=1
E.g. a port mapped NCR5380 board, driver to probe for IRQ::
modprobe g_NCR5380 base=0x350 card=0
or alternatively::
modprobe g_NCR5380 ncr_addr=0x350 ncr_5380=1
E.g. a memory mapped NCR53C400 board with no IRQ::
modprobe g_NCR5380 irq=255 base=0xc8000 card=1
or alternatively::
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
E.g. two cards, DTC3181 (in non-PnP mode) at 0x240 with no IRQ
and HP C2502 at 0x300 with IRQ 7::
modprobe g_NCR5380 irq=0,7 base=0x240,0x300 card=3,4
Kevin Lentin
K.Lentin@cs.monash.edu.au

View File

@ -1,68 +0,0 @@
README file for the Linux g_NCR5380 driver.
(c) 1993 Drew Eckhard
NCR53c400 extensions (c) 1994,1995,1996 Kevin Lentin
This file documents the NCR53c400 extensions by Kevin Lentin and some
enhancements to the NCR5380 core.
This driver supports NCR5380 and NCR53c400 and compatible cards in port or
memory mapped modes.
Use of an interrupt is recommended, if supported by the board, as this will
allow targets to disconnect and thereby improve SCSI bus utilization.
If the irq parameter is 254 or is omitted entirely, the driver will probe
for the correct IRQ line automatically. If the irq parameter is 0 or 255
then no IRQ will be used.
The NCR53c400 does not support DMA but it does have Pseudo-DMA which is
supported by the driver.
This driver provides some information on what it has detected in
/proc/scsi/g_NCR5380/x where x is the scsi card number as detected at boot
time. More info to come in the future.
This driver works as a module.
When included as a module, parameters can be passed on the insmod/modprobe
command line:
irq=xx[,...] the interrupt(s)
base=xx[,...] the port or base address(es) (for port or memory mapped, resp.)
card=xx[,...] card type(s):
0 = NCR5380,
1 = NCR53C400,
2 = NCR53C400A,
3 = Domex Technology Corp 3181E (DTC3181E)
4 = Hewlett Packard C2502
These old-style parameters can support only one card:
ncr_irq=xx the interrupt
ncr_addr=xx the port or base address (for port or memory
mapped, resp.)
ncr_5380=1 to set up for a NCR5380 board
ncr_53c400=1 to set up for a NCR53C400 board
ncr_53c400a=1 to set up for a NCR53C400A board
dtc_3181e=1 to set up for a Domex Technology Corp 3181E board
hp_c2502=1 to set up for a Hewlett Packard C2502 board
E.g. Trantor T130B in its default configuration:
modprobe g_NCR5380 irq=5 base=0x350 card=1
or alternatively, using the old syntax,
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_53c400=1
E.g. a port mapped NCR5380 board, driver to probe for IRQ:
modprobe g_NCR5380 base=0x350 card=0
or alternatively,
modprobe g_NCR5380 ncr_addr=0x350 ncr_5380=1
E.g. a memory mapped NCR53C400 board with no IRQ:
modprobe g_NCR5380 irq=255 base=0xc8000 card=1
or alternatively,
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
E.g. two cards, DTC3181 (in non-PnP mode) at 0x240 with no IRQ
and HP C2502 at 0x300 with IRQ 7:
modprobe g_NCR5380 irq=0,7 base=0x240,0x300 card=3,4
Kevin Lentin
K.Lentin@cs.monash.edu.au

View File

@ -1,6 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
=========================================
HPSA - Hewlett Packard Smart Array driver
-----------------------------------------
=========================================
This file describes the hpsa SCSI driver for HP Smart Array controllers.
The hpsa driver is intended to supplant the cciss driver for newer
@ -11,17 +13,17 @@ driver (for logical drives) AND a SCSI driver (for tape drives). This
complexity and eliminating that complexity is one of the reasons
for hpsa to exist.
Supported devices:
------------------
Supported devices
=================
Smart Array P212
Smart Array P410
Smart Array P410i
Smart Array P411
Smart Array P812
Smart Array P712m
Smart Array P711m
StorageWorks P1210m
- Smart Array P212
- Smart Array P410
- Smart Array P410i
- Smart Array P411
- Smart Array P812
- Smart Array P712m
- Smart Array P711m
- StorageWorks P1210m
Additionally, older Smart Arrays may work with the hpsa driver if the kernel
boot parameter "hpsa_allow_any=1" is specified, however these are not tested
@ -35,18 +37,20 @@ mode, each command completion requires an interrupt, while with "performant mode
command completions indicated by a single interrupt.
HPSA specific entries in /sys
-----------------------------
=============================
In addition to the generic SCSI attributes available in /sys, hpsa supports
the following attributes:
HPSA specific host attributes:
------------------------------
HPSA specific host attributes
=============================
/sys/class/scsi_host/host*/rescan
/sys/class/scsi_host/host*/firmware_revision
/sys/class/scsi_host/host*/resettable
/sys/class/scsi_host/host*/transport_mode
::
/sys/class/scsi_host/host*/rescan
/sys/class/scsi_host/host*/firmware_revision
/sys/class/scsi_host/host*/resettable
/sys/class/scsi_host/host*/transport_mode
the host "rescan" attribute is a write only attribute. Writing to this
attribute will cause the driver to scan for new, changed, or removed devices
@ -58,7 +62,7 @@ HPSA specific entries in /sys
tape drives, or entire storage boxes containing pre-configured logical drives.
The "firmware_revision" attribute contains the firmware version of the Smart Array.
For example:
For example::
root@host:/sys/class/scsi_host/host4# cat firmware_revision
7.14
@ -78,16 +82,18 @@ HPSA specific entries in /sys
kexec tools to warn the user if they attempt to designate a device which is
unable to honor the reset_devices kernel parameter as a dump device.
HPSA specific disk attributes:
------------------------------
HPSA specific disk attributes
-----------------------------
/sys/class/scsi_disk/c:b:t:l/device/unique_id
/sys/class/scsi_disk/c:b:t:l/device/raid_level
/sys/class/scsi_disk/c:b:t:l/device/lunid
::
/sys/class/scsi_disk/c:b:t:l/device/unique_id
/sys/class/scsi_disk/c:b:t:l/device/raid_level
/sys/class/scsi_disk/c:b:t:l/device/lunid
(where c:b:t:l are the controller, bus, target and lun of the device)
For example:
For example::
root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id
600508B1001044395355323037570F77
@ -96,35 +102,28 @@ HPSA specific entries in /sys
root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level
RAID 0
HPSA specific ioctls:
---------------------
HPSA specific ioctls
====================
For compatibility with applications written for the cciss driver, many, but
not all of the ioctls supported by the cciss driver are also supported by the
hpsa driver. The data structures used by these are described in
include/linux/cciss_ioctl.h
CCISS_DEREGDISK
CCISS_REGNEWDISK
CCISS_REGNEWD
The above three ioctls all do exactly the same thing, which is to cause the driver
to rescan for new devices. This does exactly the same thing as writing to the
hpsa specific host "rescan" attribute.
CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
The above three ioctls all do exactly the same thing, which is to cause the driver
to rescan for new devices. This does exactly the same thing as writing to the
hpsa specific host "rescan" attribute.
CCISS_GETPCIINFO
Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).
CCISS_GETDRIVVER
Returns driver version in three bytes encoded as::
Returns driver version in three bytes encoded as:
(major_version << 16) | (minor_version << 8) | (subminor_version)
CCISS_PASSTHRU
CCISS_BIG_PASSTHRU
CCISS_PASSTHRU, CCISS_BIG_PASSTHRU
Allows "BMIC" and "CISS" commands to be passed through to the Smart Array.
These are used extensively by the HP Array Configuration Utility, SNMP storage
agents, etc. See cciss_vol_status at http://cciss.sf.net for some examples.

View File

@ -1,15 +1,25 @@
HIGHPOINT ROCKETRAID 3xxx/4xxx ADAPTER DRIVER (hptiop)
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
======================================================
Highpoint RocketRAID 3xxx/4xxx Adapter Driver (hptiop)
======================================================
Controller Register Map
-------------------------
-----------------------
For RR44xx Intel IOP based adapters, the controller IOP is accessed via PCI BAR0 and BAR2:
For RR44xx Intel IOP based adapters, the controller IOP is accessed via PCI BAR0 and BAR2
============== ==================================
BAR0 offset Register
============== ==================================
0x11C5C Link Interface IRQ Set
0x11C60 Link Interface IRQ Clear
============== ==================================
============== ==================================
BAR2 offset Register
============== ==================================
0x10 Inbound Message Register 0
0x14 Inbound Message Register 1
0x18 Outbound Message Register 0
@ -21,10 +31,13 @@ For RR44xx Intel IOP based adapters, the controller IOP is accessed via PCI BAR0
0x34 Outbound Interrupt Mask Register
0x40 Inbound Queue Port
0x44 Outbound Queue Port
============== ==================================
For Intel IOP based adapters, the controller IOP is accessed via PCI BAR0:
============== ==================================
BAR0 offset Register
============== ==================================
0x10 Inbound Message Register 0
0x14 Inbound Message Register 1
0x18 Outbound Message Register 0
@ -36,16 +49,22 @@ For Intel IOP based adapters, the controller IOP is accessed via PCI BAR0:
0x34 Outbound Interrupt Mask Register
0x40 Inbound Queue Port
0x44 Outbound Queue Port
============== ==================================
For Marvell not Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
============== ==================================
BAR0 offset Register
============== ==================================
0x20400 Inbound Doorbell Register
0x20404 Inbound Interrupt Mask Register
0x20408 Outbound Doorbell Register
0x2040C Outbound Interrupt Mask Register
============== ==================================
============== ==================================
BAR1 offset Register
============== ==================================
0x0 Inbound Queue Head Pointer
0x4 Inbound Queue Tail Pointer
0x8 Outbound Queue Head Pointer
@ -53,14 +72,20 @@ For Marvell not Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BA
0x10 Inbound Message Register
0x14 Outbound Message Register
0x40-0x1040 Inbound Queue
0x1040-0x2040 Outbound Queue
0x1040-0x2040 Outbound Queue
============== ==================================
For Marvell Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
============== ==================================
BAR0 offset Register
============== ==================================
0x0 IOP configuration information.
============== ==================================
============== ===================================================
BAR1 offset Register
============== ===================================================
0x4000 Inbound List Base Address Low
0x4004 Inbound List Base Address High
0x4018 Inbound List Write Pointer
@ -76,10 +101,11 @@ For Marvell Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
0x10420 CPU to PCIe Function 0 Message A
0x10480 CPU to PCIe Function 0 Doorbell
0x10484 CPU to PCIe Function 0 Doorbell Enable
============== ===================================================
I/O Request Workflow of Not Marvell Frey
------------------------------------------
----------------------------------------
All queued requests are handled via inbound/outbound queue port.
A request packet can be allocated in either IOP or host memory.
@ -124,7 +150,7 @@ of an inbound message.
I/O Request Workflow of Marvell Frey
--------------------------------------
------------------------------------
All queued requests are handled via inbound/outbound list.
@ -167,13 +193,17 @@ User-level Interface
The driver exposes following sysfs attributes:
================== === ========================
NAME R/W Description
================== === ========================
driver-version R driver version string
firmware-version R firmware version string
================== === ========================
-----------------------------------------------------------------------------
Copyright (C) 2006-2012 HighPoint Technologies, Inc. All Rights Reserved.
Copyright |copy| 2006-2012 HighPoint Technologies, Inc. All Rights Reserved.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@ -181,4 +211,5 @@ Copyright (C) 2006-2012 HighPoint Technologies, Inc. All Rights Reserved.
GNU General Public License for more details.
linux@highpoint-tech.com
http://www.highpoint-tech.com

View File

@ -0,0 +1,51 @@
.. SPDX-License-Identifier: GPL-2.0
====================
Linux SCSI Subsystem
====================
.. toctree::
:maxdepth: 1
53c700
aacraid
advansys
aha152x
aic79xx
aic7xxx
arcmsr_spec
bfa
bnx2fc
BusLogic
cxgb3i
dc395x
dpti
FlashPoint
g_NCR5380
hpsa
hptiop
libsas
link_power_management_policy
lpfc
megaraid
ncr53c8xx
NinjaSCSI
ppa
qlogicfas
scsi-changer
scsi_eh
scsi_fc_transport
scsi-generic
scsi_mid_low_api
scsi-parameters
scsi
sd-parameters
smartpqi
st
sym53c500_cs
sym53c8xx_2
tcm_qla2xxx
ufs
wd719x
scsi_transport_srp/figures

View File

@ -1,5 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
=========
SAS Layer
---------
=========
The SAS Layer is a management infrastructure which manages
SAS LLDDs. It sits between SCSI Core and SAS LLDDs. The
@ -37,16 +40,21 @@ It will then return. Then you enable your phys to actually
start OOB (at which point your driver will start calling the
notify_* event callbacks).
Structure descriptions:
Structure descriptions
======================
``struct sas_phy``
------------------
struct sas_phy --------------------
Normally this is statically embedded to your driver's
phy structure:
struct my_phy {
blah;
struct sas_phy sas_phy;
bleh;
};
phy structure::
struct my_phy {
blah;
struct sas_phy sas_phy;
bleh;
};
And then all the phys are an array of my_phy in your HA
struct (shown below).
@ -63,94 +71,122 @@ There is a scheme where the LLDD can RW certain fields,
and the SAS layer can only read such ones, and vice versa.
The idea is to avoid unnecessary locking.
enabled -- must be set (0/1)
id -- must be set [0,MAX_PHYS)
class, proto, type, role, oob_mode, linkrate -- must be set
oob_mode -- you set this when OOB has finished and then notify
the SAS Layer.
enabled
- must be set (0/1)
sas_addr -- this normally points to an array holding the sas
address of the phy, possibly somewhere in your my_phy
struct.
id
- must be set [0,MAX_PHYS)]
attached_sas_addr -- set this when you (LLDD) receive an
IDENTIFY frame or a FIS frame, _before_ notifying the SAS
layer. The idea is that sometimes the LLDD may want to fake
or provide a different SAS address on that phy/port and this
allows it to do this. At best you should copy the sas
address from the IDENTIFY frame or maybe generate a SAS
address for SATA directly attached devices. The Discover
process may later change this.
class, proto, type, role, oob_mode, linkrate
- must be set
frame_rcvd -- this is where you copy the IDENTIFY/FIS frame
when you get it; you lock, copy, set frame_rcvd_size and
unlock the lock, and then call the event. It is a pointer
since there's no way to know your hw frame size _exactly_,
so you define the actual array in your phy struct and let
this pointer point to it. You copy the frame from your
DMAable memory to that area holding the lock.
oob_mode
- you set this when OOB has finished and then notify
the SAS Layer.
sas_prim -- this is where primitives go when they're
received. See sas.h. Grab the lock, set the primitive,
release the lock, notify.
sas_addr
- this normally points to an array holding the sas
address of the phy, possibly somewhere in your my_phy
struct.
port -- this points to the sas_port if the phy belongs
to a port -- the LLDD only reads this. It points to the
sas_port this phy is part of. Set by the SAS Layer.
attached_sas_addr
- set this when you (LLDD) receive an
IDENTIFY frame or a FIS frame, _before_ notifying the SAS
layer. The idea is that sometimes the LLDD may want to fake
or provide a different SAS address on that phy/port and this
allows it to do this. At best you should copy the sas
address from the IDENTIFY frame or maybe generate a SAS
address for SATA directly attached devices. The Discover
process may later change this.
ha -- may be set; the SAS layer sets it anyway.
frame_rcvd
- this is where you copy the IDENTIFY/FIS frame
when you get it; you lock, copy, set frame_rcvd_size and
unlock the lock, and then call the event. It is a pointer
since there's no way to know your hw frame size _exactly_,
so you define the actual array in your phy struct and let
this pointer point to it. You copy the frame from your
DMAable memory to that area holding the lock.
lldd_phy -- you should set this to point to your phy so you
can find your way around faster when the SAS layer calls one
of your callbacks and passes you a phy. If the sas_phy is
embedded you can also use container_of -- whatever you
prefer.
sas_prim
- this is where primitives go when they're
received. See sas.h. Grab the lock, set the primitive,
release the lock, notify.
port
- this points to the sas_port if the phy belongs
to a port -- the LLDD only reads this. It points to the
sas_port this phy is part of. Set by the SAS Layer.
ha
- may be set; the SAS layer sets it anyway.
lldd_phy
- you should set this to point to your phy so you
can find your way around faster when the SAS layer calls one
of your callbacks and passes you a phy. If the sas_phy is
embedded you can also use container_of -- whatever you
prefer.
struct sas_port --------------------
``struct sas_port``
-------------------
The LLDD doesn't set any fields of this struct -- it only
reads them. They should be self explanatory.
phy_mask is 32 bit, this should be enough for now, as I
haven't heard of a HA having more than 8 phys.
lldd_port -- I haven't found use for that -- maybe other
LLDD who wish to have internal port representation can make
use of this.
lldd_port
- I haven't found use for that -- maybe other
LLDD who wish to have internal port representation can make
use of this.
``struct sas_ha_struct``
------------------------
struct sas_ha_struct --------------------
It normally is statically declared in your own LLDD
structure describing your adapter:
struct my_sas_ha {
blah;
struct sas_ha_struct sas_ha;
struct my_phy phys[MAX_PHYS];
struct sas_port sas_ports[MAX_PHYS]; /* (1) */
bleh;
};
structure describing your adapter::
(1) If your LLDD doesn't have its own port representation.
struct my_sas_ha {
blah;
struct sas_ha_struct sas_ha;
struct my_phy phys[MAX_PHYS];
struct sas_port sas_ports[MAX_PHYS]; /* (1) */
bleh;
};
(1) If your LLDD doesn't have its own port representation.
What needs to be initialized (sample function given below).
pcidev
sas_addr -- since the SAS layer doesn't want to mess with
^^^^^^
sas_addr
- since the SAS layer doesn't want to mess with
memory allocation, etc, this points to statically
allocated array somewhere (say in your host adapter
structure) and holds the SAS address of the host
adapter as given by you or the manufacturer, etc.
sas_port
sas_phy -- an array of pointers to structures. (see
^^^^^^^^
sas_phy
- an array of pointers to structures. (see
note above on sas_addr).
These must be set. See more notes below.
num_phys -- the number of phys present in the sas_phy array,
num_phys
- the number of phys present in the sas_phy array,
and the number of ports present in the sas_port
array. There can be a maximum num_phys ports (one per
port) so we drop the num_ports, and only use
num_phys.
The event interface:
The event interface::
/* LLDD calls these to notify the class of an event. */
void (*notify_ha_event)(struct sas_ha_struct *, enum ha_event);
@ -161,7 +197,7 @@ When sas_register_ha() returns, those are set and can be
called by the LLDD to notify the SAS layer of such events
the SAS layer.
The port notification:
The port notification::
/* The class calls these to notify the LLDD of an event. */
void (*lldd_port_formed)(struct sas_phy *);
@ -171,7 +207,7 @@ If the LLDD wants notification when a port has been formed
or deformed it sets those to a function satisfying the type.
A SAS LLDD should also implement at least one of the Task
Management Functions (TMFs) described in SAM:
Management Functions (TMFs) described in SAM::
/* Task Management Functions. Must be called from process context. */
int (*lldd_abort_task)(struct sas_task *);
@ -184,7 +220,7 @@ Management Functions (TMFs) described in SAM:
For more information please read SAM from T10.org.
Port and Adapter management:
Port and Adapter management::
/* Port and Adapter management */
int (*lldd_clear_nexus_port)(struct sas_port *);
@ -192,75 +228,78 @@ Port and Adapter management:
A SAS LLDD should implement at least one of those.
Phy management:
Phy management::
/* Phy management */
int (*lldd_control_phy)(struct sas_phy *, enum phy_func);
lldd_ha -- set this to point to your HA struct. You can also
use container_of if you embedded it as shown above.
lldd_ha
- set this to point to your HA struct. You can also
use container_of if you embedded it as shown above.
A sample initialization and registration function
can look like this (called last thing from probe())
*but* before you enable the phys to do OOB:
*but* before you enable the phys to do OOB::
static int register_sas_ha(struct my_sas_ha *my_ha)
{
int i;
static struct sas_phy *sas_phys[MAX_PHYS];
static struct sas_port *sas_ports[MAX_PHYS];
static int register_sas_ha(struct my_sas_ha *my_ha)
{
int i;
static struct sas_phy *sas_phys[MAX_PHYS];
static struct sas_port *sas_ports[MAX_PHYS];
my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0];
my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0];
for (i = 0; i < MAX_PHYS; i++) {
sas_phys[i] = &my_ha->phys[i].sas_phy;
sas_ports[i] = &my_ha->sas_ports[i];
}
for (i = 0; i < MAX_PHYS; i++) {
sas_phys[i] = &my_ha->phys[i].sas_phy;
sas_ports[i] = &my_ha->sas_ports[i];
}
my_ha->sas_ha.sas_phy = sas_phys;
my_ha->sas_ha.sas_port = sas_ports;
my_ha->sas_ha.num_phys = MAX_PHYS;
my_ha->sas_ha.sas_phy = sas_phys;
my_ha->sas_ha.sas_port = sas_ports;
my_ha->sas_ha.num_phys = MAX_PHYS;
my_ha->sas_ha.lldd_port_formed = my_port_formed;
my_ha->sas_ha.lldd_port_formed = my_port_formed;
my_ha->sas_ha.lldd_dev_found = my_dev_found;
my_ha->sas_ha.lldd_dev_gone = my_dev_gone;
my_ha->sas_ha.lldd_dev_found = my_dev_found;
my_ha->sas_ha.lldd_dev_gone = my_dev_gone;
my_ha->sas_ha.lldd_execute_task = my_execute_task;
my_ha->sas_ha.lldd_execute_task = my_execute_task;
my_ha->sas_ha.lldd_abort_task = my_abort_task;
my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set;
my_ha->sas_ha.lldd_clear_aca = my_clear_aca;
my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set;
my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2)
my_ha->sas_ha.lldd_lu_reset = my_lu_reset;
my_ha->sas_ha.lldd_query_task = my_query_task;
my_ha->sas_ha.lldd_abort_task = my_abort_task;
my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set;
my_ha->sas_ha.lldd_clear_aca = my_clear_aca;
my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set;
my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2)
my_ha->sas_ha.lldd_lu_reset = my_lu_reset;
my_ha->sas_ha.lldd_query_task = my_query_task;
my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port;
my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha;
my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port;
my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha;
my_ha->sas_ha.lldd_control_phy = my_control_phy;
my_ha->sas_ha.lldd_control_phy = my_control_phy;
return sas_register_ha(&my_ha->sas_ha);
}
return sas_register_ha(&my_ha->sas_ha);
}
(2) SAS 1.1 does not define I_T Nexus Reset TMF.
Events
------
======
Events are _the only way_ a SAS LLDD notifies the SAS layer
Events are **the only way** a SAS LLDD notifies the SAS layer
of anything. There is no other method or way a LLDD to tell
the SAS layer of anything happening internally or in the SAS
domain.
Phy events:
Phy events::
PHYE_LOSS_OF_SIGNAL, (C)
PHYE_OOB_DONE,
PHYE_OOB_ERROR, (C)
PHYE_SPINUP_HOLD.
Port events, passed on a _phy_:
Port events, passed on a _phy_::
PORTE_BYTES_DMAED, (M)
PORTE_BROADCAST_RCVD, (E)
PORTE_LINK_RESET_ERR, (C)
@ -271,6 +310,7 @@ Host Adapter event:
HAE_RESET
A SAS LLDD should be able to generate
- at least one event from group C (choice),
- events marked M (mandatory) are mandatory (only one),
- events marked E (expander) if it wants the SAS layer
@ -279,26 +319,42 @@ A SAS LLDD should be able to generate
Meaning:
HAE_RESET -- when your HA got internal error and was reset.
HAE_RESET
- when your HA got internal error and was reset.
PORTE_BYTES_DMAED -- on receiving an IDENTIFY/FIS frame
PORTE_BROADCAST_RCVD -- on receiving a primitive
PORTE_LINK_RESET_ERR -- timer expired, loss of signal, loss
of DWS, etc. (*)
PORTE_TIMER_EVENT -- DWS reset timeout timer expired (*)
PORTE_HARD_RESET -- Hard Reset primitive received.
PORTE_BYTES_DMAED
- on receiving an IDENTIFY/FIS frame
PHYE_LOSS_OF_SIGNAL -- the device is gone (*)
PHYE_OOB_DONE -- OOB went fine and oob_mode is valid
PHYE_OOB_ERROR -- Error while doing OOB, the device probably
got disconnected. (*)
PHYE_SPINUP_HOLD -- SATA is present, COMWAKE not sent.
PORTE_BROADCAST_RCVD
- on receiving a primitive
(*) should set/clear the appropriate fields in the phy,
or alternatively call the inlined sas_phy_disconnected()
which is just a helper, from their tasklet.
PORTE_LINK_RESET_ERR
- timer expired, loss of signal, loss of DWS, etc. [1]_
The Execute Command SCSI RPC:
PORTE_TIMER_EVENT
- DWS reset timeout timer expired [1]_
PORTE_HARD_RESET
- Hard Reset primitive received.
PHYE_LOSS_OF_SIGNAL
- the device is gone [1]_
PHYE_OOB_DONE
- OOB went fine and oob_mode is valid
PHYE_OOB_ERROR
- Error while doing OOB, the device probably
got disconnected. [1]_
PHYE_SPINUP_HOLD
- SATA is present, COMWAKE not sent.
.. [1] should set/clear the appropriate fields in the phy,
or alternatively call the inlined sas_phy_disconnected()
which is just a helper, from their tasklet.
The Execute Command SCSI RPC::
int (*lldd_execute_task)(struct sas_task *, gfp_t gfp_flags);
@ -311,23 +367,28 @@ That is, when lldd_execute_task() is called, the command
go out on the transport *immediately*. There is *no*
queuing of any sort and at any level in a SAS LLDD.
Returns: -SAS_QUEUE_FULL, -ENOMEM, nothing was queued;
0, the task(s) were queued.
Returns:
struct sas_task {
dev -- the device this task is destined to
task_proto -- _one_ of enum sas_proto
scatter -- pointer to scatter gather list array
num_scatter -- number of elements in scatter
total_xfer_len -- total number of bytes expected to be transferred
data_dir -- PCI_DMA_...
task_done -- callback when the task has finished execution
};
* -SAS_QUEUE_FULL, -ENOMEM, nothing was queued;
* 0, the task(s) were queued.
DISCOVERY
---------
::
struct sas_task {
dev -- the device this task is destined to
task_proto -- _one_ of enum sas_proto
scatter -- pointer to scatter gather list array
num_scatter -- number of elements in scatter
total_xfer_len -- total number of bytes expected to be transferred
data_dir -- PCI_DMA_...
task_done -- callback when the task has finished execution
};
Discovery
=========
The sysfs tree has the following purposes:
a) It shows you the physical layout of the SAS domain at
the current time, i.e. how the domain looks in the
physical world right now.
@ -336,6 +397,7 @@ The sysfs tree has the following purposes:
This is a link to the tree(1) program, very useful in
viewing the SAS domain:
ftp://mama.indstate.edu/linux/tree/
I expect user space applications to actually create a
graphical interface of this.
@ -359,7 +421,7 @@ contents of the domain_device structure, but it never creates
or destroys one.
Expander management from User Space
-----------------------------------
===================================
In each expander directory in sysfs, there is a file called
"smp_portal". It is a binary sysfs attribute file, which
@ -371,15 +433,23 @@ Functionality is deceptively simple:
1. Build the SMP frame you want to send. The format and layout
is described in the SAS spec. Leave the CRC field equal 0.
open(2)
2. Open the expander's SMP portal sysfs file in RW mode.
write(2)
3. Write the frame you built in 1.
read(2)
4. Read the amount of data you expect to receive for the frame you built.
If you receive different amount of data you expected to receive,
then there was some kind of error.
close(2)
All this process is shown in detail in the function do_smp_func()
and its callers, in the file "expander_conf.c".

View File

@ -1,8 +1,15 @@
.. SPDX-License-Identifier: GPL-2.0
==========================
Link Power Managent Policy
==========================
This parameter allows the user to set the link (interface) power management.
There are 3 possible options:
===================== =====================================================
Value Effect
----------------------------------------------------------------------------
===================== =====================================================
min_power Tell the controller to try to make the link use the
least possible power when possible. This may
sacrifice some performance due to increased latency
@ -15,5 +22,4 @@ max_performance Generally, this means no power management. Tell
medium_power Tell the controller to enter a lower power state
when possible, but do not enter the lowest power
state, thus improving latency over min_power setting.
===================== =====================================================

View File

@ -1,10 +1,11 @@
.. SPDX-License-Identifier: GPL-2.0
LPFC Driver Release Notes:
=============================================================================
=========================
LPFC Driver Release Notes
=========================
IMPORTANT:
.. important::
Starting in the 8.0.17 release, the driver began to be targeted strictly
toward the upstream kernel. As such, we removed #ifdefs for older kernels
@ -22,9 +23,6 @@ LPFC Driver Release Notes:
Please heed these dependencies....
********************************************************************
The following information is provided for additional background on the
history of the driver as we push for upstream acceptance.
@ -64,6 +62,7 @@ Cable pull and temporary device Loss:
Kernel Support
==============
This source package is targeted for the upstream kernel only. (See notes
at the top of this file). It relies on interfaces that are slowing
@ -77,7 +76,6 @@ Kernel Support
Patches
=======
Thankfully, at this time, patches are not needed.

View File

@ -1,7 +1,10 @@
Notes on Management Module
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. SPDX-License-Identifier: GPL-2.0
Overview:
==========================
Notes on Management Module
==========================
Overview
--------
Different classes of controllers from LSI Logic accept and respond to the
@ -25,28 +28,32 @@ ioctl commands. But this module is envisioned to handle all user space level
interactions. So any 'proc', 'sysfs' implementations will be localized in this
common module.
Credits:
Credits
-------
"Shared code in a third module, a "library module", is an acceptable
solution. modprobe automatically loads dependent modules, so users
running "modprobe driver1" or "modprobe driver2" would automatically
load the shared library module."
::
- Jeff Garzik (jgarzik@pobox.com), 02.25.2004 LKML
"Shared code in a third module, a "library module", is an acceptable
solution. modprobe automatically loads dependent modules, so users
running "modprobe driver1" or "modprobe driver2" would automatically
load the shared library module."
"As Jeff hinted, if your userspace<->driver API is consistent between
your new MPT-based RAID controllers and your existing megaraid driver,
then perhaps you need a single small helper module (lsiioctl or some
better name), loaded by both mptraid and megaraid automatically, which
handles registering the /dev/megaraid node dynamically. In this case,
both mptraid and megaraid would register with lsiioctl for each
adapter discovered, and lsiioctl would essentially be a switch,
redirecting userspace tool ioctls to the appropriate driver."
- Jeff Garzik (jgarzik@pobox.com), 02.25.2004 LKML
- Matt Domsch, (Matt_Domsch@dell.com), 02.25.2004 LKML
::
Design:
"As Jeff hinted, if your userspace<->driver API is consistent between
your new MPT-based RAID controllers and your existing megaraid driver,
then perhaps you need a single small helper module (lsiioctl or some
better name), loaded by both mptraid and megaraid automatically, which
handles registering the /dev/megaraid node dynamically. In this case,
both mptraid and megaraid would register with lsiioctl for each
adapter discovered, and lsiioctl would essentially be a switch,
redirecting userspace tool ioctls to the appropriate driver."
- Matt Domsch, (Matt_Domsch@dell.com), 02.25.2004 LKML
Design
------
The Common Management Module is implemented in megaraid_mm.[ch] files. This
@ -61,7 +68,7 @@ uioc_t. The management module converts the older ioctl packets from the older
applications into uioc_t. After driver handles the uioc_t, the common module
will convert that back into the old format before returning to applications.
As new applications evolve and replace the old ones, the old packet format
As new applications evolve and replace the old ones, the old packet format
will be retired.
Common module dedicates one uioc_t packet to each controller registered. This

View File

@ -0,0 +1,18 @@
.. SPDX-License-Identifier: GPL-2.0
======================================
Terse where to get ZIP Drive help info
======================================
General Iomega ZIP drive page for Linux:
http://web.archive.org/web/%2E/http://www.torque.net/~campbell/
Driver archive for old drivers:
http://web.archive.org/web/%2E/http://www.torque.net/~campbell/ppa
Linux Parport page (parallel port)
http://web.archive.org/web/%2E/http://www.torque.net/parport/
Email list for Linux Parport
linux-parport@torque.net

View File

@ -1,14 +0,0 @@
-------- Terse where to get ZIP Drive help info --------
General Iomega ZIP drive page for Linux:
http://web.archive.org/web/*/http://www.torque.net/~campbell/
Driver archive for old drivers:
http://web.archive.org/web/*/http://www.torque.net/~campbell/ppa
Linux Parport page (parallel port)
http://web.archive.org/web/*/http://www.torque.net/parport/
Email list for Linux Parport
linux-parport@torque.net

View File

@ -1,3 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
=================================
Qlogic FASXXX Family Driver Notes
=================================
This driver supports the Qlogic FASXXX family of chips. This driver
only works with the ISA, VLB, and PCMCIA versions of the Qlogic
@ -16,7 +21,8 @@ is provided by the qla1280 driver.
Nor does it support the PCI-Basic, which is supported by the
'am53c974' driver.
PCMCIA SUPPORT
PCMCIA Support
==============
This currently only works if the card is enabled first from DOS. This
means you will have to load your socket and card services, and
@ -31,7 +37,8 @@ it from configuring the card.
I am working with the PCMCIA group to make it more flexible, but that
may take a while.
ALL CARDS
All Cards
=========
The top of the qlogic.c file has a number of defines that controls
configuration. As shipped, it provides a balance between speed and
@ -46,7 +53,8 @@ command or something. It comes up faster if this is set to zero, and
if you have reliable hardware and connections it may be more useful to
not reset things.
SOME TROUBLESHOOTING TIPS
Some Troubleshooting Tips
=========================
Make sure it works properly under DOS. You should also do an initial FDISK
on a new drive if you want partitions.
@ -54,7 +62,8 @@ on a new drive if you want partitions.
Don't enable all the speedups first. If anything is wrong, they will make
any problem worse.
IMPORTANT
Important
=========
The best way to test if your cables, termination, etc. are good is to
copy a very big file (e.g. a doublespace container file, or a very

View File

@ -1,4 +1,6 @@
.. SPDX-License-Identifier: GPL-2.0
========================================
README for the SCSI media changer driver
========================================
@ -28,15 +30,17 @@ The SCSI changer model is complex, compared to - for example - IDE-CD
changers. But it allows to handle nearly all possible cases. It knows
4 different types of changer elements:
media transport - this one shuffles around the media, i.e. the
=============== ==================================================
media transport this one shuffles around the media, i.e. the
transport arm. Also known as "picker".
storage - a slot which can hold a media.
import/export - the same as above, but is accessible from outside,
storage a slot which can hold a media.
import/export the same as above, but is accessible from outside,
i.e. there the operator (you !) can use this to
fill in and remove media from the changer.
Sometimes named "mailslot".
data transfer - this is the device which reads/writes, i.e. the
data transfer this is the device which reads/writes, i.e. the
CD-ROM / Tape / whatever drive.
=============== ==================================================
None of these is limited to one: A huge Jukebox could have slots for
123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer
@ -131,24 +135,23 @@ timeout_init=<seconds>
timeout_move=<seconds>
timeout for all other commands (default: 120).
dt_id=<id1>,<id2>,...
dt_lun=<lun1>,<lun2>,...
dt_id=<id1>,<id2>,... / dt_lun=<lun1>,<lun2>,...
These two allow to specify the SCSI ID and LUN for the data
transfer elements. You likely don't need this as the jukebox
should provide this information. But some devices don't ...
vendor_firsts=
vendor_counts=
vendor_labels=
vendor_firsts=, vendor_counts=, vendor_labels=
These insmod options can be used to tell the driver that there
are some vendor-specific element types. Grundig for example
does this. Some jukeboxes have a printer to label fresh burned
CDs, which is addressed as element 0xc000 (type 5). To tell the
driver about this vendor-specific element, use this:
driver about this vendor-specific element, use this::
$ insmod ch \
vendor_firsts=0xc000 \
vendor_counts=1 \
vendor_labels=printer
All three insmod options accept up to four comma-separated
values, this way you can configure the element types 5-8.
You likely need the SCSI specs for the device in question to
@ -162,13 +165,15 @@ Credits
I wrote this driver using the famous mailing-patches-around-the-world
method. With (more or less) help from:
Daniel Moehwald <moehwald@hdg.de>
Dane Jasper <dane@sonic.net>
R. Scott Bailey <sbailey@dsddi.eds.com>
Jonathan Corbet <corbet@lwn.net>
- Daniel Moehwald <moehwald@hdg.de>
- Dane Jasper <dane@sonic.net>
- R. Scott Bailey <sbailey@dsddi.eds.com>
- Jonathan Corbet <corbet@lwn.net>
Special thanks go to
Martin Kuehne <martin.kuehne@bnbt.de>
- Martin Kuehne <martin.kuehne@bnbt.de>
for a old, second-hand (but full functional) cdrom jukebox which I use
to develop/test driver and tools now.
@ -176,5 +181,4 @@ Have fun,
Gerd
--
Gerd Knorr <kraxel@bytesex.org>

View File

@ -1,6 +1,11 @@
Notes on Linux SCSI Generic (sg) driver
---------------------------------------
.. SPDX-License-Identifier: GPL-2.0
=======================================
Notes on Linux SCSI Generic (sg) driver
=======================================
20020126
Introduction
============
The SCSI Generic driver (sg) is one of the four "high level" SCSI device
@ -18,7 +23,7 @@ and examples.
Major versions of the sg driver
===============================
There are three major versions of sg found in the linux kernel (lk):
- sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) .
- sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) .
It is based in the sg_header interface structure.
- sg version 2 from lk 2.2.6 in the 2.2 series. It is based on
an extended version of the sg_header interface structure.
@ -29,12 +34,16 @@ There are three major versions of sg found in the linux kernel (lk):
Sg driver documentation
=======================
The most recent documentation of the sg driver is kept at the Linux
Documentation Project's (LDP) site:
http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO
Documentation Project's (LDP) site:
- http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO
This describes the sg version 3 driver found in the lk 2.4 series.
The LDP renders documents in single and multiple page HTML, postscript
and pdf. This document can also be found at:
http://sg.danny.cz/sg/p/sg_v3_ho.html
- http://sg.danny.cz/sg/p/sg_v3_ho.html
Documentation for the version 2 sg driver found in the lk 2.2 series can
be found at http://sg.danny.cz/sg/. A larger version
@ -45,23 +54,27 @@ found at http://www.torque.net/sg/p/original/SCSI-Programming-HOWTO.txt
and in the LDP archives.
A changelog with brief notes can be found in the
/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy
and edit this file (removing its changelog for example) before placing it
in /usr/include/scsi/sg.h . Driver debugging information and other notes
/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy
and edit this file (removing its changelog for example) before placing it
in /usr/include/scsi/sg.h . Driver debugging information and other notes
can be found at the top of the /usr/src/linux/drivers/scsi/sg.c file.
A more general description of the Linux SCSI subsystem of which sg is a
A more general description of the Linux SCSI subsystem of which sg is a
part can be found at http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO .
Example code and utilities
==========================
There are two packages of sg utilities:
- sg3_utils for the sg version 3 driver found in lk 2.4
- sg_utils for the sg version 2 (and original) driver found in lk 2.2
========= ==========================================================
sg3_utils for the sg version 3 driver found in lk 2.4
sg_utils for the sg version 2 (and original) driver found in lk 2.2
and earlier
========= ==========================================================
Both packages will work in the lk 2.4 series however sg3_utils offers more
capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and
capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and
freecode.com
Another approach is to look at the applications that use the sg driver.
@ -72,30 +85,34 @@ Mapping of Linux kernel versions to sg driver versions
======================================================
Here is a list of linux kernels in the 2.4 series that had new version
of the sg driver:
lk 2.4.0 : sg version 3.1.17
lk 2.4.7 : sg version 3.1.19
lk 2.4.10 : sg version 3.1.20 **
lk 2.4.17 : sg version 3.1.22
** There were 3 changes to sg version 3.1.20 by third parties in the
next six linux kernel versions.
- lk 2.4.0 : sg version 3.1.17
- lk 2.4.7 : sg version 3.1.19
- lk 2.4.10 : sg version 3.1.20 [#]_
- lk 2.4.17 : sg version 3.1.22
For reference here is a list of linux kernels in the 2.2 series that had
.. [#] There were 3 changes to sg version 3.1.20 by third parties in the
next six linux kernel versions.
For reference here is a list of linux kernels in the 2.2 series that had
new version of the sg driver:
lk 2.2.0 : original sg version [with no version number]
lk 2.2.6 : sg version 2.1.31
lk 2.2.8 : sg version 2.1.32
lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared]
lk 2.2.14 : sg version 2.1.36
lk 2.2.16 : sg version 2.1.38
lk 2.2.17 : sg version 2.1.39
lk 2.2.20 : sg version 2.1.40
- lk 2.2.0 : original sg version [with no version number]
- lk 2.2.6 : sg version 2.1.31
- lk 2.2.8 : sg version 2.1.32
- lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared]
- lk 2.2.14 : sg version 2.1.36
- lk 2.2.16 : sg version 2.1.38
- lk 2.2.17 : sg version 2.1.39
- lk 2.2.20 : sg version 2.1.40
The lk 2.5 development series has recently commenced and it currently
contains sg version 3.5.23 which is functionally equivalent to sg
version 3.1.22 found in lk 2.4.17 .
version 3.1.22 found in lk 2.4.17.
Douglas Gilbert
26th January 2002
dgilbert@interlog.com

View File

@ -1,31 +1,35 @@
SCSI Kernel Parameters
~~~~~~~~~~~~~~~~~~~~~~
.. SPDX-License-Identifier: GPL-2.0
======================
SCSI Kernel Parameters
======================
See Documentation/admin-guide/kernel-parameters.rst for general information on
specifying module parameters.
This document may not be entirely up to date and comprehensive. The command
"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
``modinfo -p ${modulename}`` shows a current list of all parameters of a loadable
module. Loadable modules, after being loaded into the running kernel, also
reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
parameters may be changed at runtime by the command
"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}".
``echo -n ${value} > /sys/module/${modulename}/parameters/${parm}``.
::
advansys= [HW,SCSI]
See header of drivers/scsi/advansys.c.
aha152x= [HW,SCSI]
See Documentation/scsi/aha152x.txt.
See Documentation/scsi/aha152x.rst.
aha1542= [HW,SCSI]
Format: <portbase>[,<buson>,<busoff>[,<dmaspeed>]]
aic7xxx= [HW,SCSI]
See Documentation/scsi/aic7xxx.txt.
See Documentation/scsi/aic7xxx.rst.
aic79xx= [HW,SCSI]
See Documentation/scsi/aic79xx.txt.
See Documentation/scsi/aic79xx.rst.
atascsi= [HW,SCSI]
See drivers/scsi/atari_scsi.c.
@ -57,19 +61,19 @@ parameters may be changed at runtime by the command
See header of drivers/scsi/NCR_D700.c.
ncr5380= [HW,SCSI]
See Documentation/scsi/g_NCR5380.txt.
See Documentation/scsi/g_NCR5380.rst.
ncr53c400= [HW,SCSI]
See Documentation/scsi/g_NCR5380.txt.
See Documentation/scsi/g_NCR5380.rst.
ncr53c400a= [HW,SCSI]
See Documentation/scsi/g_NCR5380.txt.
See Documentation/scsi/g_NCR5380.rst.
ncr53c8xx= [HW,SCSI]
osst= [HW,SCSI] SCSI Tape Driver
Format: <buffer_size>,<write_threshold>
See also Documentation/scsi/st.txt.
See also Documentation/scsi/st.rst.
scsi_debug_*= [SCSI]
See drivers/scsi/scsi_debug.c.
@ -101,7 +105,7 @@ parameters may be changed at runtime by the command
See header of drivers/scsi/sim710.c.
st= [HW,SCSI] SCSI tape parameters (buffers, etc.)
See Documentation/scsi/st.txt.
See Documentation/scsi/st.rst.
wd33c93= [HW,SCSI]
See header of drivers/scsi/wd33c93.c.

View File

@ -1,44 +1,47 @@
.. SPDX-License-Identifier: GPL-2.0
============================
SCSI subsystem documentation
============================
The Linux Documentation Project (LDP) maintains a document describing
the SCSI subsystem in the Linux kernel (lk) 2.4 series. See:
http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single
and multiple page HTML renderings as well as postscript and pdf.
It can also be found at:
http://web.archive.org/web/*/http://www.torque.net/scsi/SCSI-2.4-HOWTO
http://web.archive.org/web/%2E/http://www.torque.net/scsi/SCSI-2.4-HOWTO
Notes on using modules in the SCSI subsystem
============================================
The scsi support in the linux kernel can be modularized in a number of
The scsi support in the linux kernel can be modularized in a number of
different ways depending upon the needs of the end user. To understand
your options, we should first define a few terms.
The scsi-core (also known as the "mid level") contains the core of scsi
The scsi-core (also known as the "mid level") contains the core of scsi
support. Without it you can do nothing with any of the other scsi drivers.
The scsi core support can be a module (scsi_mod.o), or it can be built into
the kernel. If the core is a module, it must be the first scsi module
loaded, and if you unload the modules, it will have to be the last one
the kernel. If the core is a module, it must be the first scsi module
loaded, and if you unload the modules, it will have to be the last one
unloaded. In practice the modprobe and rmmod commands (and "autoclean")
will enforce the correct ordering of loading and unloading modules in
the SCSI subsystem.
The individual upper and lower level drivers can be loaded in any order
The individual upper and lower level drivers can be loaded in any order
once the scsi core is present in the kernel (either compiled in or loaded
as a module). The disk driver (sd_mod.o), cdrom driver (sr_mod.o),
tape driver ** (st.o) and scsi generics driver (sg.o) represent the upper
level drivers to support the various assorted devices which can be
controlled. You can for example load the tape driver to use the tape drive,
tape driver [1]_ (st.o) and scsi generics driver (sg.o) represent the upper
level drivers to support the various assorted devices which can be
controlled. You can for example load the tape driver to use the tape drive,
and then unload it once you have no further need for the driver (and release
the associated memory).
The lower level drivers are the ones that support the individual cards that
are supported for the hardware platform that you are running under. Those
individual cards are often called Host Bus Adapters (HBAs). For example the
aic7xxx.o driver is used to control all recent SCSI controller cards from
Adaptec. Almost all lower level drivers can be built either as modules or
aic7xxx.o driver is used to control all recent SCSI controller cards from
Adaptec. Almost all lower level drivers can be built either as modules or
built into the kernel.
** There is a variant of the st driver for controlling OnStream tape
devices. Its module name is osst.o .
.. [1] There is a variant of the st driver for controlling OnStream tape
devices. Its module name is osst.o .

View File

@ -1,35 +1,39 @@
.. SPDX-License-Identifier: GPL-2.0
=======
SCSI EH
======================================
=======
This document describes SCSI midlayer error handling infrastructure.
Please refer to Documentation/scsi/scsi_mid_low_api.txt for more
This document describes SCSI midlayer error handling infrastructure.
Please refer to Documentation/scsi/scsi_mid_low_api.rst for more
information regarding SCSI midlayer.
TABLE OF CONTENTS
.. TABLE OF CONTENTS
[1] How SCSI commands travel through the midlayer and to EH
[1-1] struct scsi_cmnd
[1-2] How do scmd's get completed?
[1-2-1] Completing a scmd w/ scsi_done
[1-2-2] Completing a scmd w/ timeout
[1-3] How EH takes over
[2] How SCSI EH works
[2-1] EH through fine-grained callbacks
[2-1-1] Overview
[2-1-2] Flow of scmds through EH
[2-1-3] Flow of control
[2-2] EH through transportt->eh_strategy_handler()
[2-2-1] Pre transportt->eh_strategy_handler() SCSI midlayer conditions
[2-2-2] Post transportt->eh_strategy_handler() SCSI midlayer conditions
[2-2-3] Things to consider
[1] How SCSI commands travel through the midlayer and to EH
[1-1] struct scsi_cmnd
[1-2] How do scmd's get completed?
[1-2-1] Completing a scmd w/ scsi_done
[1-2-2] Completing a scmd w/ timeout
[1-3] How EH takes over
[2] How SCSI EH works
[2-1] EH through fine-grained callbacks
[2-1-1] Overview
[2-1-2] Flow of scmds through EH
[2-1-3] Flow of control
[2-2] EH through transportt->eh_strategy_handler()
[2-2-1] Pre transportt->eh_strategy_handler() SCSI midlayer conditions
[2-2-2] Post transportt->eh_strategy_handler() SCSI midlayer conditions
[2-2-3] Things to consider
[1] How SCSI commands travel through the midlayer and to EH
1. How SCSI commands travel through the midlayer and to EH
==========================================================
[1-1] struct scsi_cmnd
1.1 struct scsi_cmnd
--------------------
Each SCSI command is represented with struct scsi_cmnd (== scmd). A
Each SCSI command is represented with struct scsi_cmnd (== scmd). A
scmd has two list_head's to link itself into lists. The two are
scmd->list and scmd->eh_entry. The former is used for free list or
per-device allocated scmd list and not of much interest to this EH
@ -38,25 +42,28 @@ otherwise stated scmds are always linked using scmd->eh_entry in this
discussion.
[1-2] How do scmd's get completed?
1.2 How do scmd's get completed?
--------------------------------
Once LLDD gets hold of a scmd, either the LLDD will complete the
Once LLDD gets hold of a scmd, either the LLDD will complete the
command by calling scsi_done callback passed from midlayer when
invoking hostt->queuecommand() or the block layer will time it out.
[1-2-1] Completing a scmd w/ scsi_done
1.2.1 Completing a scmd w/ scsi_done
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For all non-EH commands, scsi_done() is the completion callback. It
For all non-EH commands, scsi_done() is the completion callback. It
just calls blk_complete_request() to delete the block layer timer and
raise SCSI_SOFTIRQ
SCSI_SOFTIRQ handler scsi_softirq calls scsi_decide_disposition() to
SCSI_SOFTIRQ handler scsi_softirq calls scsi_decide_disposition() to
determine what to do with the command. scsi_decide_disposition()
looks at the scmd->result value and sense data to determine what to do
with the command.
- SUCCESS
scsi_finish_command() is invoked for the command. The
function does some maintenance chores and then calls
scsi_io_completion() to finish the I/O.
@ -66,17 +73,21 @@ with the command.
of the data in case of an error.
- NEEDS_RETRY
- ADD_TO_MLQUEUE
scmd is requeued to blk queue.
- otherwise
scsi_eh_scmd_add(scmd) is invoked for the command. See
[1-3] for details of this function.
[1-2-2] Completing a scmd w/ timeout
1.2.2 Completing a scmd w/ timeout
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The timeout handler is scsi_times_out(). When a timeout occurs, this
The timeout handler is scsi_times_out(). When a timeout occurs, this
function
1. invokes optional hostt->eh_timed_out() callback. Return value can
@ -101,18 +112,21 @@ function
3. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the
command. See [1-4] for more information.
[1-3] Asynchronous command aborts
1.3 Asynchronous command aborts
-------------------------------
After a timeout occurs a command abort is scheduled from
scsi_abort_command(). If the abort is successful the command
will either be retried (if the number of retries is not exhausted)
or terminated with DID_TIME_OUT.
Otherwise scsi_eh_scmd_add() is invoked for the command.
See [1-4] for more information.
[1-4] How EH takes over
1.4 How EH takes over
---------------------
scmds enter EH via scsi_eh_scmd_add(), which does the following.
scmds enter EH via scsi_eh_scmd_add(), which does the following.
1. Links scmd->eh_entry to shost->eh_cmd_q
@ -122,19 +136,19 @@ function
4. Wakes up SCSI EH thread if shost->host_busy == shost->host_failed
As can be seen above, once any scmd is added to shost->eh_cmd_q,
As can be seen above, once any scmd is added to shost->eh_cmd_q,
SHOST_RECOVERY shost_state bit is turned on. This prevents any new
scmd to be issued from blk queue to the host; eventually, all scmds on
the host either complete normally, fail and get added to eh_cmd_q, or
time out and get added to shost->eh_cmd_q.
If all scmds either complete or fail, the number of in-flight scmds
If all scmds either complete or fail, the number of in-flight scmds
becomes equal to the number of failed scmds - i.e. shost->host_busy ==
shost->host_failed. This wakes up SCSI EH thread. So, once woken up,
SCSI EH thread can expect that all in-flight commands have failed and
are linked on shost->eh_cmd_q.
Note that this does not mean lower layers are quiescent. If a LLDD
Note that this does not mean lower layers are quiescent. If a LLDD
completed a scmd with error status, the LLDD and lower layers are
assumed to forget about the scmd at that point. However, if a scmd
has timed out, unless hostt->eh_timed_out() made lower layers forget
@ -143,13 +157,14 @@ active as long as lower layers are concerned and completion could
occur at any time. Of course, all such completions are ignored as the
timer has already expired.
We'll talk about how SCSI EH takes actions to abort - make LLDD
We'll talk about how SCSI EH takes actions to abort - make LLDD
forget about - timed out scmds later.
[2] How SCSI EH works
2. How SCSI EH works
====================
LLDD's can implement SCSI EH actions in one of the following two
LLDD's can implement SCSI EH actions in one of the following two
ways.
- Fine-grained EH callbacks
@ -162,7 +177,7 @@ ways.
handling. As such, it should do all chores the SCSI midlayer
performs during recovery. This will be discussed in [2-2].
Once recovery is complete, SCSI EH resumes normal operation by
Once recovery is complete, SCSI EH resumes normal operation by
calling scsi_restart_operations(), which
1. Checks if door locking is needed and locks door.
@ -177,34 +192,38 @@ calling scsi_restart_operations(), which
4. Kicks queues in all devices on the host in the asses
[2-1] EH through fine-grained callbacks
2.1 EH through fine-grained callbacks
-------------------------------------
[2-1-1] Overview
2.1.1 Overview
^^^^^^^^^^^^^^
If eh_strategy_handler() is not present, SCSI midlayer takes charge
If eh_strategy_handler() is not present, SCSI midlayer takes charge
of driving error handling. EH's goals are two - make LLDD, host and
device forget about timed out scmds and make them ready for new
commands. A scmd is said to be recovered if the scmd is forgotten by
lower layers and lower layers are ready to process or fail the scmd
again.
To achieve these goals, EH performs recovery actions with increasing
To achieve these goals, EH performs recovery actions with increasing
severity. Some actions are performed by issuing SCSI commands and
others are performed by invoking one of the following fine-grained
hostt EH callbacks. Callbacks may be omitted and omitted ones are
considered to fail always.
int (* eh_abort_handler)(struct scsi_cmnd *);
int (* eh_device_reset_handler)(struct scsi_cmnd *);
int (* eh_bus_reset_handler)(struct scsi_cmnd *);
int (* eh_host_reset_handler)(struct scsi_cmnd *);
::
Higher-severity actions are taken only when lower-severity actions
int (* eh_abort_handler)(struct scsi_cmnd *);
int (* eh_device_reset_handler)(struct scsi_cmnd *);
int (* eh_bus_reset_handler)(struct scsi_cmnd *);
int (* eh_host_reset_handler)(struct scsi_cmnd *);
Higher-severity actions are taken only when lower-severity actions
cannot recover some of failed scmds. Also, note that failure of the
highest-severity action means EH failure and results in offlining of
all unrecovered devices.
During recovery, the following rules are followed
During recovery, the following rules are followed
- Recovery actions are performed on failed scmds on the to do list,
eh_work_q. If a recovery action succeeds for a scmd, recovered
@ -221,58 +240,72 @@ all unrecovered devices.
timed-out scmds, SCSI EH ensures that LLDD forgets about a scmd
before reusing it for EH commands.
When a scmd is recovered, the scmd is moved from eh_work_q to EH
When a scmd is recovered, the scmd is moved from eh_work_q to EH
local eh_done_q using scsi_eh_finish_cmd(). After all scmds are
recovered (eh_work_q is empty), scsi_eh_flush_done_q() is invoked to
either retry or error-finish (notify upper layer of failure) recovered
scmds.
scmds are retried iff its sdev is still online (not offlined during
scmds are retried iff its sdev is still online (not offlined during
EH), REQ_FAILFAST is not set and ++scmd->retries is less than
scmd->allowed.
[2-1-2] Flow of scmds through EH
2.1.2 Flow of scmds through EH
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Error completion / time out
ACTION: scsi_eh_scmd_add() is invoked for scmd
:ACTION: scsi_eh_scmd_add() is invoked for scmd
- add scmd to shost->eh_cmd_q
- set SHOST_RECOVERY
- shost->host_failed++
LOCKING: shost->host_lock
:LOCKING: shost->host_lock
2. EH starts
ACTION: move all scmds to EH's local eh_work_q. shost->eh_cmd_q
is cleared.
LOCKING: shost->host_lock (not strictly necessary, just for
:ACTION: move all scmds to EH's local eh_work_q. shost->eh_cmd_q
is cleared.
:LOCKING: shost->host_lock (not strictly necessary, just for
consistency)
3. scmd recovered
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
:ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
- scsi_setup_cmd_retry()
- move from local eh_work_q to local eh_done_q
LOCKING: none
CONCURRENCY: at most one thread per separate eh_work_q to
keep queue manipulation lockless
:LOCKING: none
:CONCURRENCY: at most one thread per separate eh_work_q to
keep queue manipulation lockless
4. EH completes
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
layer of failure. May be called concurrently but must have
a no more than one thread per separate eh_work_q to
manipulate the queue locklessly
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
- if retry is necessary, scmd is requeued using
scsi_queue_insert()
- otherwise, scsi_finish_command() is invoked for scmd
- zero shost->host_failed
LOCKING: queue or finish function performs appropriate locking
:ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
layer of failure. May be called concurrently but must have
a no more than one thread per separate eh_work_q to
manipulate the queue locklessly
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
- if retry is necessary, scmd is requeued using
scsi_queue_insert()
- otherwise, scsi_finish_command() is invoked for scmd
- zero shost->host_failed
:LOCKING: queue or finish function performs appropriate locking
[2-1-3] Flow of control
2.1.3 Flow of control
^^^^^^^^^^^^^^^^^^^^^^
EH through fine-grained callbacks start from scsi_unjam_host().
<<scsi_unjam_host>>
``scsi_unjam_host``
1. Lock shost->host_lock, splice_init shost->eh_cmd_q into local
eh_work_q and unlock host_lock. Note that shost->eh_cmd_q is
@ -280,7 +313,7 @@ scmd->allowed.
2. Invoke scsi_eh_get_sense.
<<scsi_eh_get_sense>>
``scsi_eh_get_sense``
This action is taken for each error-completed
(!SCSI_EH_CANCEL_CMD) commands without valid sense data. Most
@ -315,7 +348,7 @@ scmd->allowed.
3. If !list_empty(&eh_work_q), invoke scsi_eh_abort_cmds().
<<scsi_eh_abort_cmds>>
``scsi_eh_abort_cmds``
This action is taken for each timed out command when
no_async_abort is enabled in the host template.
@ -339,14 +372,14 @@ scmd->allowed.
4. If !list_empty(&eh_work_q), invoke scsi_eh_ready_devs()
<<scsi_eh_ready_devs>>
``scsi_eh_ready_devs``
This function takes four increasingly more severe measures to
make failed sdevs ready for new commands.
1. Invoke scsi_eh_stu()
<<scsi_eh_stu>>
``scsi_eh_stu``
For each sdev which has failed scmds with valid sense data
of which scsi_check_sense()'s verdict is FAILED,
@ -369,7 +402,7 @@ scmd->allowed.
2. If !list_empty(&eh_work_q), invoke scsi_eh_bus_device_reset().
<<scsi_eh_bus_device_reset>>
``scsi_eh_bus_device_reset``
This action is very similar to scsi_eh_stu() except that,
instead of issuing STU, hostt->eh_device_reset_handler()
@ -379,7 +412,7 @@ scmd->allowed.
3. If !list_empty(&eh_work_q), invoke scsi_eh_bus_reset()
<<scsi_eh_bus_reset>>
``scsi_eh_bus_reset``
hostt->eh_bus_reset_handler() is invoked for each channel
with failed scmds. If bus reset succeeds, all failed
@ -388,7 +421,7 @@ scmd->allowed.
4. If !list_empty(&eh_work_q), invoke scsi_eh_host_reset()
<<scsi_eh_host_reset>>
``scsi_eh_host_reset``
This is the last resort. hostt->eh_host_reset_handler()
is invoked. If host reset succeeds, all failed scmds on
@ -396,14 +429,14 @@ scmd->allowed.
5. If !list_empty(&eh_work_q), invoke scsi_eh_offline_sdevs()
<<scsi_eh_offline_sdevs>>
``scsi_eh_offline_sdevs``
Take all sdevs which still have unrecovered scmds offline
and EH-finish the scmds.
5. Invoke scsi_eh_flush_done_q().
<<scsi_eh_flush_done_q>>
``scsi_eh_flush_done_q``
At this point all scmds are recovered (or given up) and
put on eh_done_q by scsi_eh_finish_cmd(). This function
@ -411,9 +444,10 @@ scmd->allowed.
layer of failure of the scmds.
[2-2] EH through transportt->eh_strategy_handler()
2.2 EH through transportt->eh_strategy_handler()
------------------------------------------------
transportt->eh_strategy_handler() is invoked in the place of
transportt->eh_strategy_handler() is invoked in the place of
scsi_unjam_host() and it is responsible for whole recovery process.
On completion, the handler should have made lower layers forget about
all failed scmds and either ready for new commands or offline. Also,
@ -422,7 +456,8 @@ SCSI midlayer. IOW, of the steps described in [2-1-2], all steps
except for #1 must be implemented by eh_strategy_handler().
[2-2-1] Pre transportt->eh_strategy_handler() SCSI midlayer conditions
2.2.1 Pre transportt->eh_strategy_handler() SCSI midlayer conditions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following conditions are true on entry to the handler.
@ -435,7 +470,8 @@ except for #1 must be implemented by eh_strategy_handler().
- shost->host_failed == shost->host_busy
[2-2-2] Post transportt->eh_strategy_handler() SCSI midlayer conditions
2.2.2 Post transportt->eh_strategy_handler() SCSI midlayer conditions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following conditions must be true on exit from the handler.
@ -453,7 +489,8 @@ except for #1 must be implemented by eh_strategy_handler().
->allowed to limit the number of retries.
[2-2-3] Things to consider
2.2.3 Things to consider
^^^^^^^^^^^^^^^^^^^^^^^^
- Know that timed out scmds are still active on lower layers. Make
lower layers forget about them before doing anything else with
@ -469,7 +506,7 @@ except for #1 must be implemented by eh_strategy_handler().
offline.
--
Tejun Heo
htejun@gmail.com
11th September 2005

View File

@ -1,8 +1,13 @@
SCSI FC Tansport
=============================================
.. SPDX-License-Identifier: GPL-2.0
================
SCSI FC Tansport
================
Date: 11/18/2008
Kernel Revisions for features:
Kernel Revisions for features::
rports : <<TBS>>
vports : 2.6.22
bsg support : 2.6.30 (?TBD?)
@ -12,25 +17,27 @@ Introduction
============
This file documents the features and components of the SCSI FC Transport.
It also provides documents the API between the transport and FC LLDDs.
The FC transport can be found at:
The FC transport can be found at::
drivers/scsi/scsi_transport_fc.c
include/scsi/scsi_transport_fc.h
include/scsi/scsi_netlink_fc.h
include/scsi/scsi_bsg_fc.h
This file is found at Documentation/scsi/scsi_fc_transport.txt
This file is found at Documentation/scsi/scsi_fc_transport.rst
FC Remote Ports (rports)
========================================================================
========================
<< To Be Supplied >>
FC Virtual Ports (vports)
========================================================================
=========================
Overview:
-------------------------------
Overview
--------
New FC standards have defined mechanisms which allows for a single physical
port to appear on as multiple communication ports. Using the N_Port Id
@ -61,12 +68,14 @@ Overview:
Thus, whether a FC port is based on a physical port or on a virtual port,
each will appear as a unique scsi_host with its own target and lun space.
Note: At this time, the transport is written to create only NPIV-based
.. Note::
At this time, the transport is written to create only NPIV-based
vports. However, consideration was given to VF-based vports and it
should be a minor change to add support if needed. The remaining
discussion will concentrate on NPIV.
Note: World Wide Name assignment (and uniqueness guarantees) are left
.. Note::
World Wide Name assignment (and uniqueness guarantees) are left
up to an administrative entity controlling the vport. For example,
if vports are to be associated with virtual machines, a XEN mgmt
utility would be responsible for creating wwpn/wwnn's for the vport,
@ -91,18 +100,29 @@ Device Trees and Vport Objects:
port's scsi_host.
Here's what to expect in the device tree :
The typical Physical Port's Scsi_Host:
The typical Physical Port's Scsi_Host::
/sys/devices/.../host17/
and it has the typical descendant tree:
and it has the typical descendant tree::
/sys/devices/.../host17/rport-17:0-0/target17:0:0/17:0:0:0:
and then the vport is created on the Physical Port:
and then the vport is created on the Physical Port::
/sys/devices/.../host17/vport-17:0-0
and the vport's Scsi_Host is then created:
and the vport's Scsi_Host is then created::
/sys/devices/.../host17/vport-17:0-0/host18
and then the rest of the tree progresses, such as:
and then the rest of the tree progresses, such as::
/sys/devices/.../host17/vport-17:0-0/host18/rport-18:0-0/target18:0:0/18:0:0:0:
Here's what to expect in the sysfs tree :
Here's what to expect in the sysfs tree::
scsi_hosts:
/sys/class/scsi_host/host17 physical port's scsi_host
/sys/class/scsi_host/host18 vport's scsi_host
@ -116,8 +136,8 @@ Device Trees and Vport Objects:
/sys/class/fc_remote_ports/rport-18:0-0 rport on the vport
Vport Attributes:
-------------------------------
Vport Attributes
----------------
The new fc_vport class object has the following attributes
@ -184,16 +204,18 @@ Vport Attributes:
(e.g. 0x, x, etc).
Vport States:
-------------------------------
Vport States
------------
Vport instantiation consists of two parts:
- Creation with the kernel and LLDD. This means all transport and
driver data structures are built up, and device objects created.
This is equivalent to a driver "attach" on an adapter, which is
independent of the adapter's link state.
- Instantiation of the vport on the FC link via ELS traffic, etc.
This is equivalent to a "link up" and successful link initialization.
Further information can be found in the interfaces section below for
Vport Creation.
@ -227,6 +249,7 @@ Vport States:
FC_VPORT_NO_FABRIC_SUPP - No Fabric Support
The vport is not operational. One of the following conditions were
encountered:
- The FC topology is not Point-to-Point
- The FC port is not connected to an F_Port
- The F_Port has indicated that NPIV is not supported.
@ -251,32 +274,53 @@ Vport States:
The following state table indicates the different state transitions:
State Event New State
--------------------------------------------------------------------
n/a Initialization Unknown
Unknown: Link Down Linkdown
Link Up & Loop No Fabric Support
Link Up & no Fabric No Fabric Support
Link Up & FLOGI response No Fabric Support
indicates no NPIV support
Link Up & FDISC being sent Initializing
Disable request Disable
Linkdown: Link Up Unknown
Initializing: FDISC ACC Active
FDISC LS_RJT w/ no resources No Fabric Resources
FDISC LS_RJT w/ invalid Fabric Rejected WWN
pname or invalid nport_id
FDISC LS_RJT failed for Vport Failed
other reasons
Link Down Linkdown
Disable request Disable
Disable: Enable request Unknown
Active: LOGO received from fabric Fabric Logout
Link Down Linkdown
Disable request Disable
Fabric Logout: Link still up Unknown
+------------------+--------------------------------+---------------------+
| State | Event | New State |
+==================+================================+=====================+
| n/a | Initialization | Unknown |
+------------------+--------------------------------+---------------------+
| Unknown: | Link Down | Linkdown |
| +--------------------------------+---------------------+
| | Link Up & Loop | No Fabric Support |
| +--------------------------------+---------------------+
| | Link Up & no Fabric | No Fabric Support |
| +--------------------------------+---------------------+
| | Link Up & FLOGI response | No Fabric Support |
| | indicates no NPIV support | |
| +--------------------------------+---------------------+
| | Link Up & FDISC being sent | Initializing |
| +--------------------------------+---------------------+
| | Disable request | Disable |
+------------------+--------------------------------+---------------------+
| Linkdown: | Link Up | Unknown |
+------------------+--------------------------------+---------------------+
| Initializing: | FDISC ACC | Active |
| +--------------------------------+---------------------+
| | FDISC LS_RJT w/ no resources | No Fabric Resources |
| +--------------------------------+---------------------+
| | FDISC LS_RJT w/ invalid | Fabric Rejected WWN |
| | pname or invalid nport_id | |
| +--------------------------------+---------------------+
| | FDISC LS_RJT failed for | Vport Failed |
| | other reasons | |
| +--------------------------------+---------------------+
| | Link Down | Linkdown |
| +--------------------------------+---------------------+
| | Disable request | Disable |
+------------------+--------------------------------+---------------------+
| Disable: | Enable request | Unknown |
+------------------+--------------------------------+---------------------+
| Active: | LOGO received from fabric | Fabric Logout |
| +--------------------------------+---------------------+
| | Link Down | Linkdown |
| +--------------------------------+---------------------+
| | Disable request | Disable |
+------------------+--------------------------------+---------------------+
| Fabric Logout: | Link still up | Unknown |
+------------------+--------------------------------+---------------------+
The following 4 error states all have the same transitions::
The following 4 error states all have the same transitions:
No Fabric Support:
No Fabric Resources:
Fabric Rejected WWN:
@ -285,8 +329,8 @@ Vport States:
Link goes down Linkdown
Transport <-> LLDD Interfaces :
-------------------------------
Transport <-> LLDD Interfaces
-----------------------------
Vport support by LLDD:
@ -300,14 +344,17 @@ Vport support by LLDD:
Vport Creation:
The LLDD vport_create() syntax is:
The LLDD vport_create() syntax is::
int vport_create(struct fc_vport *vport, bool disable)
where:
vport: Is the newly allocated vport object
disable: If "true", the vport is to be created in a disabled stated.
where:
======= ===========================================================
vport Is the newly allocated vport object
disable If "true", the vport is to be created in a disabled stated.
If "false", the vport is to be enabled upon creation.
======= ===========================================================
When a request is made to create a new vport (via sgio/netlink, or the
vport_create fc_host attribute), the transport will validate that the LLDD
@ -317,6 +364,7 @@ Vport Creation:
LLDD's vport_create() function with the newly allocated vport object.
As mentioned above, vport creation is divided into two parts:
- Creation with the kernel and LLDD. This means all transport and
driver data structures are built up, and device objects created.
This is equivalent to a driver "attach" on an adapter, which is
@ -329,6 +377,7 @@ Vport Creation:
infrastructure exists to support NPIV, and complete the first part of
vport creation (data structure build up) before returning. We do not
hinge vport_create() on the link-side operation mainly because:
- The link may be down. It is not a failure if it is. It simply
means the vport is in an inoperable state until the link comes up.
This is consistent with the link bouncing post vport creation.
@ -337,11 +386,15 @@ Vport Creation:
FC adapter. The vport_create is synonymous with driver attachment
to the adapter, which is independent of link state.
Note: special error codes have been defined to delineate infrastructure
.. Note::
special error codes have been defined to delineate infrastructure
failure cases for quicker resolution.
The expected behavior for the LLDD's vport_create() function is:
- Validate Infrastructure:
- If the driver or adapter cannot support another vport, whether
due to improper firmware, (a lie about) max_npiv, or a lack of
some other resource - return VPCERR_UNSUPPORTED.
@ -349,17 +402,21 @@ Vport Creation:
the adapter and detects an overlap - return VPCERR_BAD_WWN.
- If the driver detects the topology is loop, non-fabric, or the
FLOGI did not support NPIV - return VPCERR_NO_FABRIC_SUPP.
- Allocate data structures. If errors are encountered, such as out
of memory conditions, return the respective negative Exxx error code.
- If the role is FCP Initiator, the LLDD is to :
- Call scsi_host_alloc() to allocate a scsi_host for the vport.
- Call scsi_add_host(new_shost, &vport->dev) to start the scsi_host
and bind it as a child of the vport device.
- Initializes the fc_host attribute values.
- Kick of further vport state transitions based on the disable flag and
link state - and return success (zero).
LLDD Implementers Notes:
- It is suggested that there be a different fc_function_templates for
the physical port and the virtual port. The physical port's template
would have the vport_create, vport_delete, and vport_disable functions,
@ -373,14 +430,17 @@ Vport Creation:
Vport Disable/Enable:
The LLDD vport_disable() syntax is:
The LLDD vport_disable() syntax is::
int vport_disable(struct fc_vport *vport, bool disable)
where:
vport: Is vport to be enabled or disabled
disable: If "true", the vport is to be disabled.
where:
======= =======================================
vport Is vport to be enabled or disabled
disable If "true", the vport is to be disabled.
If "false", the vport is to be enabled.
======= =======================================
When a request is made to change the disabled state on a vport, the
transport will validate the request against the existing vport state.
@ -401,11 +461,12 @@ Vport Disable/Enable:
Vport Deletion:
The LLDD vport_delete() syntax is:
The LLDD vport_delete() syntax is::
int vport_delete(struct fc_vport *vport)
where:
where:
vport: Is vport to delete
When a request is made to delete a vport (via sgio/netlink, or via the
@ -443,39 +504,42 @@ Transport supplied functions
The following functions are supplied by the FC-transport for use by LLDs.
fc_vport_create - create a vport
fc_vport_terminate - detach and remove a vport
================== =========================
fc_vport_create create a vport
fc_vport_terminate detach and remove a vport
================== =========================
Details:
Details::
/**
* fc_vport_create - Admin App or LLDD requests creation of a vport
* @shost: scsi host the virtual port is connected to.
* @ids: The world wide names, FC4 port roles, etc for
* the virtual port.
*
* Notes:
* This routine assumes no locks are held on entry.
*/
struct fc_vport *
fc_vport_create(struct Scsi_Host *shost, struct fc_vport_identifiers *ids)
/**
* fc_vport_create - Admin App or LLDD requests creation of a vport
* @shost: scsi host the virtual port is connected to.
* @ids: The world wide names, FC4 port roles, etc for
* the virtual port.
*
* Notes:
* This routine assumes no locks are held on entry.
*/
struct fc_vport *
fc_vport_create(struct Scsi_Host *shost, struct fc_vport_identifiers *ids)
/**
* fc_vport_terminate - Admin App or LLDD requests termination of a vport
* @vport: fc_vport to be terminated
*
* Calls the LLDD vport_delete() function, then deallocates and removes
* the vport from the shost and object tree.
*
* Notes:
* This routine assumes no locks are held on entry.
*/
int
fc_vport_terminate(struct fc_vport *vport)
/**
* fc_vport_terminate - Admin App or LLDD requests termination of a vport
* @vport: fc_vport to be terminated
*
* Calls the LLDD vport_delete() function, then deallocates and removes
* the vport from the shost and object tree.
*
* Notes:
* This routine assumes no locks are held on entry.
*/
int
fc_vport_terminate(struct fc_vport *vport)
FC BSG support (CT & ELS passthru, and more)
========================================================================
============================================
<< To Be Supplied >>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
all: rport_state_diagram.svg rport_state_diagram.png
rport_state_diagram.svg: rport_state_diagram.dot
dot -Tsvg -o $@ $<
rport_state_diagram.png: rport_state_diagram.dot
dot -Tpng -o $@ $<

View File

@ -0,0 +1,6 @@
.. SPDX-License-Identifier: GPL-2.0
SCSI RDMA (SRP) transport class diagram
=======================================
.. kernel-figure:: rport_state_diagram.dot

View File

@ -0,0 +1,27 @@
.. SPDX-License-Identifier: GPL-2.0
======================================
Linux SCSI Disk Driver (sd) Parameters
======================================
cache_type (RW)
---------------
Enable/disable drive write & read cache.
=========================== === === =========== ==========
cache_type string WCE RCD Write cache Read cache
=========================== === === =========== ==========
write through 0 0 off on
none 0 1 off off
write back 1 0 on on
write back, no read (daft) 1 1 on off
=========================== === === =========== ==========
To set cache type to "write back" and save this setting to the drive::
# echo "write back" > cache_type
To modify the caching mode without making the change persistent, prepend
"temporary " to the cache type string. E.g.::
# echo "temporary write back" > cache_type

View File

@ -1,22 +0,0 @@
Linux SCSI Disk Driver (sd) Parameters
======================================
cache_type (RW)
---------------
Enable/disable drive write & read cache.
cache_type string | WCE RCD | Write cache | Read cache
----------------------------+---------+-------------+------------
write through | 0 0 | off | on
none | 0 1 | off | off
write back | 1 0 | on | on
write back, no read (daft) | 1 1 | on | off
To set cache type to "write back" and save this setting to the drive:
# echo "write back" > cache_type
To modify the caching mode without making the change persistent, prepend
"temporary " to the cache type string. E.g.:
# echo "temporary write back" > cache_type

View File

@ -1,6 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
=====================================
SMARTPQI - Microsemi Smart PQI Driver
-----------------------------------------
=====================================
This file describes the smartpqi SCSI driver for Microsemi
(http://www.microsemi.com) PQI controllers. The smartpqi driver
@ -16,20 +18,21 @@ For Microsemi smartpqi controller support, enable the smartpqi driver
when configuring the kernel.
For more information on the PQI Queuing Interface, please see:
http://www.t10.org/drafts.htm
http://www.t10.org/members/w_pqi2.htm
Supported devices:
------------------
- http://www.t10.org/drafts.htm
- http://www.t10.org/members/w_pqi2.htm
Supported devices
=================
<Controller names to be added as they become publicly available.>
smartpqi specific entries in /sys
-----------------------------
=================================
smartpqi host attributes:
-------------------------
/sys/class/scsi_host/host*/rescan
/sys/class/scsi_host/host*/driver_version
smartpqi host attributes
------------------------
- /sys/class/scsi_host/host*/rescan
- /sys/class/scsi_host/host*/driver_version
The host rescan attribute is a write only attribute. Writing to this
attribute will trigger the driver to scan for new, changed, or removed
@ -37,12 +40,13 @@ smartpqi specific entries in /sys
The version attribute is read-only and will return the driver version
and the controller firmware version.
For example:
For example::
driver: 0.9.13-370
firmware: 0.01-522
smartpqi sas device attributes
------------------------------
smartpqi sas device attributes
------------------------------
HBA devices are added to the SAS transport layer. These attributes are
automatically added by the SAS transport layer.
@ -50,31 +54,25 @@ smartpqi specific entries in /sys
/sys/class/sas_device/end_device-X:X/enclosure_identifier
/sys/class/sas_device/end_device-X:X/scsi_target_id
smartpqi specific ioctls:
-------------------------
smartpqi specific ioctls
========================
For compatibility with applications written for the cciss protocol.
CCISS_DEREGDISK
CCISS_REGNEWDISK
CCISS_REGNEWD
The above three ioctls all do exactly the same thing, which is to cause the driver
to rescan for new devices. This does exactly the same thing as writing to the
smartpqi specific host "rescan" attribute.
CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
The above three ioctls all do exactly the same thing, which is to cause the driver
to rescan for new devices. This does exactly the same thing as writing to the
smartpqi specific host "rescan" attribute.
CCISS_GETPCIINFO
Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).
CCISS_GETDRIVVER
Returns driver version in three bytes encoded as::
Returns driver version in three bytes encoded as:
(DRIVER_MAJOR << 28) | (DRIVER_MINOR << 24) | (DRIVER_RELEASE << 16) | DRIVER_REVISION;
(DRIVER_MAJOR << 28) | (DRIVER_MINOR << 24) | (DRIVER_RELEASE << 16) | DRIVER_REVISION;
CCISS_PASSTHRU
Allows "BMIC" and "CISS" commands to be passed through to the Smart Storage Array.
These are used extensively by the SSA Array Configuration Utility, SNMP storage
agents, etc.

View File

@ -1,3 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
====================
The SCSI Tape Driver
====================
This file contains brief information about the SCSI tape driver.
The driver is currently maintained by Kai Mäkisara (email
Kai.Makisara@kolumbus.fi)
@ -5,7 +11,8 @@ Kai.Makisara@kolumbus.fi)
Last modified: Tue Feb 9 21:54:16 2016 by kai.makisara
BASICS
Basics
======
The driver is generic, i.e., it does not contain any code tailored
to any specific tape drive. The tape parameters can be specified with
@ -110,15 +117,17 @@ tape in the drive (commands trying to write something return error if
attempted).
MINOR NUMBERS
Minor Numbers
=============
The tape driver currently supports up to 2^17 drives if 4 modes for
each drive are used.
The minor numbers consist of the following bit fields:
The minor numbers consist of the following bit fields::
dev_upper non-rew mode dev-lower
20 - 8 7 6 5 4 0
dev_upper non-rew mode dev-lower
20 - 8 7 6 5 4 0
The non-rewind bit is always bit 7 (the uppermost bit in the lowermost
byte). The bits defining the mode are below the non-rewind bit. The
remaining bits define the tape device number. This numbering is
@ -126,7 +135,8 @@ backward compatible with the numbering used when the minor number was
only 8 bits wide.
SYSFS SUPPORT
Sysfs Support
=============
The driver creates the directory /sys/class/scsi_tape and populates it with
directories corresponding to the existing tape devices. There are autorewind
@ -148,10 +158,11 @@ bit definitions are the same as those used with MTSETDRVBUFFER in setting the
options.
A link named 'tape' is made from the SCSI device directory to the class
directory corresponding to the mode 0 auto-rewind device (e.g., st0).
directory corresponding to the mode 0 auto-rewind device (e.g., st0).
SYSFS AND STATISTICS FOR TAPE DEVICES
Sysfs and Statistics for Tape Devices
=====================================
The st driver maintains statistics for tape drives inside the sysfs filesystem.
The following method can be used to locate the statistics that are
@ -160,10 +171,10 @@ available (assuming that sysfs is mounted at /sys):
1. Use opendir(3) on the directory /sys/class/scsi_tape
2. Use readdir(3) to read the directory contents
3. Use regcomp(3)/regexec(3) to match directory entries to the extended
regular expression "^st[0-9]+$"
regular expression "^st[0-9]+$"
4. Access the statistics from the /sys/class/scsi_tape/<match>/stats
directory (where <match> is a directory entry from /sys/class/scsi_tape
that matched the extended regular expression)
directory (where <match> is a directory entry from /sys/class/scsi_tape
that matched the extended regular expression)
The reason for using this approach is that all the character devices
pointing to the same tape drive use the same statistics. That means
@ -171,29 +182,41 @@ that st0 would have the same statistics as nst0.
The directory contains the following statistics files:
1. in_flight - The number of I/Os currently outstanding to this device.
2. io_ns - The amount of time spent waiting (in nanoseconds) for all I/O
1. in_flight
- The number of I/Os currently outstanding to this device.
2. io_ns
- The amount of time spent waiting (in nanoseconds) for all I/O
to complete (including read and write). This includes tape movement
commands such as seeking between file or set marks and implicit tape
movement such as when rewind on close tape devices are used.
3. other_cnt - The number of I/Os issued to the tape drive other than read or
3. other_cnt
- The number of I/Os issued to the tape drive other than read or
write commands. The time taken to complete these commands uses the
following calculation io_ms-read_ms-write_ms.
4. read_byte_cnt - The number of bytes read from the tape drive.
5. read_cnt - The number of read requests issued to the tape drive.
6. read_ns - The amount of time (in nanoseconds) spent waiting for read
4. read_byte_cnt
- The number of bytes read from the tape drive.
5. read_cnt
- The number of read requests issued to the tape drive.
6. read_ns
- The amount of time (in nanoseconds) spent waiting for read
requests to complete.
7. write_byte_cnt - The number of bytes written to the tape drive.
8. write_cnt - The number of write requests issued to the tape drive.
9. write_ns - The amount of time (in nanoseconds) spent waiting for write
7. write_byte_cnt
- The number of bytes written to the tape drive.
8. write_cnt
- The number of write requests issued to the tape drive.
9. write_ns
- The amount of time (in nanoseconds) spent waiting for write
requests to complete.
10. resid_cnt - The number of times during a read or write we found
10. resid_cnt
- The number of times during a read or write we found
the residual amount to be non-zero. This should mean that a program
is issuing a read larger thean the block size on tape. For write
not all data made it to tape.
Note: The in_flight value is incremented when an I/O starts the I/O
itself is not added to the statistics until it completes.
.. Note::
The in_flight value is incremented when an I/O starts the I/O
itself is not added to the statistics until it completes.
The total of read_cnt, write_cnt, and other_cnt may not total to the same
value as iodone_cnt at the device level. The tape statistics only count
@ -210,7 +233,8 @@ The value of in_flight is 0 when there are no I/Os outstanding that are
issued by the st driver. Tape statistics do not take into account any
I/O performed via the sg device.
BSD AND SYS V SEMANTICS
BSD and Sys V Semantics
=======================
The user can choose between these two behaviours of the tape driver by
defining the value of the symbol ST_SYSV. The semantics differ when a
@ -221,13 +245,15 @@ filemark unless the filemark has just been crossed.
The default is BSD semantics.
BUFFERING
Buffering
=========
The driver tries to do transfers directly to/from user space. If this
is not possible, a driver buffer allocated at run-time is used. If
direct i/o is not possible for the whole transfer, the driver buffer
is used (i.e., bounce buffers for individual pages are not
used). Direct i/o can be impossible because of several reasons, e.g.:
- one or more pages are at addresses not reachable by the HBA
- the number of pages in the transfer exceeds the number of
scatter/gather segments permitted by the HBA
@ -269,28 +295,30 @@ in the physical memory) are used if contiguous buffers can't be
allocated. To support all SCSI adapters (including those not
supporting scatter/gather), buffer allocation is using the following
three kinds of chunks:
1. The initial segment that is used for all SCSI adapters including
those not supporting scatter/gather. The size of this buffer will be
(PAGE_SIZE << ST_FIRST_ORDER) bytes if the system can give a chunk of
this size (and it is not larger than the buffer size specified by
ST_BUFFER_BLOCKS). If this size is not available, the driver halves
the size and tries again until the size of one page. The default
settings in st_options.h make the driver to try to allocate all of the
buffer as one chunk.
those not supporting scatter/gather. The size of this buffer will be
(PAGE_SIZE << ST_FIRST_ORDER) bytes if the system can give a chunk of
this size (and it is not larger than the buffer size specified by
ST_BUFFER_BLOCKS). If this size is not available, the driver halves
the size and tries again until the size of one page. The default
settings in st_options.h make the driver to try to allocate all of the
buffer as one chunk.
2. The scatter/gather segments to fill the specified buffer size are
allocated so that as many segments as possible are used but the number
of segments does not exceed ST_FIRST_SG.
allocated so that as many segments as possible are used but the number
of segments does not exceed ST_FIRST_SG.
3. The remaining segments between ST_MAX_SG (or the module parameter
max_sg_segs) and the number of segments used in phases 1 and 2
are used to extend the buffer at run-time if this is necessary. The
number of scatter/gather segments allowed for the SCSI adapter is not
exceeded if it is smaller than the maximum number of scatter/gather
segments specified. If the maximum number allowed for the SCSI adapter
is smaller than the number of segments used in phases 1 and 2,
extending the buffer will always fail.
max_sg_segs) and the number of segments used in phases 1 and 2
are used to extend the buffer at run-time if this is necessary. The
number of scatter/gather segments allowed for the SCSI adapter is not
exceeded if it is smaller than the maximum number of scatter/gather
segments specified. If the maximum number allowed for the SCSI adapter
is smaller than the number of segments used in phases 1 and 2,
extending the buffer will always fail.
EOM BEHAVIOUR WHEN WRITING
EOM Behaviour When Writing
==========================
When the end of medium early warning is encountered, the current write
is finished and the number of bytes is returned. The next write
@ -300,12 +328,13 @@ bytes is returned. After this, -1 and the number of bytes are
alternately returned until the physical end of medium (or some other
error) is encountered.
MODULE PARAMETERS
Module Parameters
=================
The buffer size, write threshold, and the maximum number of allocated buffers
are configurable when the driver is loaded as a module. The keywords are:
========================== ===========================================
buffer_kbs=xxx the buffer size for fixed block mode is set
to xxx kilobytes
write_threshold_kbs=xxx the write threshold in kilobytes set to xxx
@ -313,12 +342,14 @@ max_sg_segs=xxx the maximum number of scatter/gather
segments
try_direct_io=x try direct transfer between user buffer and
tape drive if this is non-zero
========================== ===========================================
Note that if the buffer size is changed but the write threshold is not
set, the write threshold is set to the new buffer size - 2 kB.
BOOT TIME CONFIGURATION
Boot Time Configuration
=======================
If the driver is compiled into the kernel, the same parameters can be
also set using, e.g., the LILO command line. The preferred syntax is
@ -332,21 +363,23 @@ versions is supported. The same keywords can be used as when loading
the driver as module. If several parameters are set, the keyword-value
pairs are separated with a comma (no spaces allowed). A colon can be
used instead of the equal mark. The definition is prepended by the
string st=. Here is an example:
string st=. Here is an example::
st=buffer_kbs:64,write_threshold_kbs:60
The following syntax used by the old kernel versions is also supported:
The following syntax used by the old kernel versions is also supported::
st=aa[,bb[,dd]]
where
aa is the buffer size for fixed block mode in 1024 byte units
bb is the write threshold in 1024 byte units
dd is the maximum number of scatter/gather segments
where:
- aa is the buffer size for fixed block mode in 1024 byte units
- bb is the write threshold in 1024 byte units
- dd is the maximum number of scatter/gather segments
IOCTLS
IOCTLs
======
The tape is positioned and the drive parameters are set with ioctls
defined in mtio.h The tape control program 'mt' uses these ioctls. Try
@ -359,55 +392,80 @@ The supported ioctls are:
The following use the structure mtop:
MTFSF Space forward over count filemarks. Tape positioned after filemark.
MTFSFM As above but tape positioned before filemark.
MTBSF Space backward over count filemarks. Tape positioned before
MTFSF
Space forward over count filemarks. Tape positioned after filemark.
MTFSFM
As above but tape positioned before filemark.
MTBSF
Space backward over count filemarks. Tape positioned before
filemark.
MTBSFM As above but ape positioned after filemark.
MTFSR Space forward over count records.
MTBSR Space backward over count records.
MTFSS Space forward over count setmarks.
MTBSS Space backward over count setmarks.
MTWEOF Write count filemarks.
MTWEOFI Write count filemarks with immediate bit set (i.e., does not
MTBSFM
As above but ape positioned after filemark.
MTFSR
Space forward over count records.
MTBSR
Space backward over count records.
MTFSS
Space forward over count setmarks.
MTBSS
Space backward over count setmarks.
MTWEOF
Write count filemarks.
MTWEOFI
Write count filemarks with immediate bit set (i.e., does not
wait until data is on tape)
MTWSM Write count setmarks.
MTREW Rewind tape.
MTOFFL Set device off line (often rewind plus eject).
MTNOP Do nothing except flush the buffers.
MTRETEN Re-tension tape.
MTEOM Space to end of recorded data.
MTERASE Erase tape. If the argument is zero, the short erase command
MTWSM
Write count setmarks.
MTREW
Rewind tape.
MTOFFL
Set device off line (often rewind plus eject).
MTNOP
Do nothing except flush the buffers.
MTRETEN
Re-tension tape.
MTEOM
Space to end of recorded data.
MTERASE
Erase tape. If the argument is zero, the short erase command
is used. The long erase command is used with all other values
of the argument.
MTSEEK Seek to tape block count. Uses Tandberg-compatible seek (QFA)
MTSEEK
Seek to tape block count. Uses Tandberg-compatible seek (QFA)
for SCSI-1 drives and SCSI-2 seek for SCSI-2 drives. The file and
block numbers in the status are not valid after a seek.
MTSETBLK Set the drive block size. Setting to zero sets the drive into
MTSETBLK
Set the drive block size. Setting to zero sets the drive into
variable block mode (if applicable).
MTSETDENSITY Sets the drive density code to arg. See drive
MTSETDENSITY
Sets the drive density code to arg. See drive
documentation for available codes.
MTLOCK and MTUNLOCK Explicitly lock/unlock the tape drive door.
MTLOAD and MTUNLOAD Explicitly load and unload the tape. If the
MTLOCK and MTUNLOCK
Explicitly lock/unlock the tape drive door.
MTLOAD and MTUNLOAD
Explicitly load and unload the tape. If the
command argument x is between MT_ST_HPLOADER_OFFSET + 1 and
MT_ST_HPLOADER_OFFSET + 6, the number x is used sent to the
drive with the command and it selects the tape slot to use of
HP C1553A changer.
MTCOMPRESSION Sets compressing or uncompressing drive mode using the
MTCOMPRESSION
Sets compressing or uncompressing drive mode using the
SCSI mode page 15. Note that some drives other methods for
control of compression. Some drives (like the Exabytes) use
density codes for compression control. Some drives use another
mode page but this page has not been implemented in the
driver. Some drives without compression capability will accept
any compression mode without error.
MTSETPART Moves the tape to the partition given by the argument at the
MTSETPART
Moves the tape to the partition given by the argument at the
next tape operation. The block at which the tape is positioned
is the block where the tape was previously positioned in the
new active partition unless the next tape operation is
MTSEEK. In this case the tape is moved directly to the block
specified by MTSEEK. MTSETPART is inactive unless
MT_ST_CAN_PARTITIONS set.
MTMKPART Formats the tape with one partition (argument zero) or two
MTMKPART
Formats the tape with one partition (argument zero) or two
partitions (argument non-zero). If the argument is positive,
it specifies the size of partition 1 in megabytes. For DDS
drives and several early drives this is the physically first
@ -422,64 +480,81 @@ MTSETDRVBUFFER
with mask MT_SET_OPTIONS, the low order bits are used as argument.
This command is only allowed for the superuser (root). The
subcommands are:
0
* 0
The drive buffer option is set to the argument. Zero means
no buffering.
MT_ST_BOOLEANS
* MT_ST_BOOLEANS
Sets the buffering options. The bits are the new states
(enabled/disabled) the following options (in the
parenthesis is specified whether the option is global or
can be specified differently for each mode):
MT_ST_BUFFER_WRITES write buffering (mode)
MT_ST_ASYNC_WRITES asynchronous writes (mode)
MT_ST_READ_AHEAD read ahead (mode)
MT_ST_TWO_FM writing of two filemarks (global)
MT_ST_FAST_EOM using the SCSI spacing to EOD (global)
MT_ST_AUTO_LOCK automatic locking of the drive door (global)
MT_ST_DEF_WRITES the defaults are meant only for writes (mode)
MT_ST_CAN_BSR backspacing over more than one records can
MT_ST_BUFFER_WRITES
write buffering (mode)
MT_ST_ASYNC_WRITES
asynchronous writes (mode)
MT_ST_READ_AHEAD
read ahead (mode)
MT_ST_TWO_FM
writing of two filemarks (global)
MT_ST_FAST_EOM
using the SCSI spacing to EOD (global)
MT_ST_AUTO_LOCK
automatic locking of the drive door (global)
MT_ST_DEF_WRITES
the defaults are meant only for writes (mode)
MT_ST_CAN_BSR
backspacing over more than one records can
be used for repositioning the tape (global)
MT_ST_NO_BLKLIMS the driver does not ask the block limits
MT_ST_NO_BLKLIMS
the driver does not ask the block limits
from the drive (block size can be changed only to
variable) (global)
MT_ST_CAN_PARTITIONS enables support for partitioned
MT_ST_CAN_PARTITIONS
enables support for partitioned
tapes (global)
MT_ST_SCSI2LOGICAL the logical block number is used in
MT_ST_SCSI2LOGICAL
the logical block number is used in
the MTSEEK and MTIOCPOS for SCSI-2 drives instead of
the device dependent address. It is recommended to set
this flag unless there are tapes using the device
dependent (from the old times) (global)
MT_ST_SYSV sets the SYSV semantics (mode)
MT_ST_NOWAIT enables immediate mode (i.e., don't wait for
MT_ST_SYSV
sets the SYSV semantics (mode)
MT_ST_NOWAIT
enables immediate mode (i.e., don't wait for
the command to finish) for some commands (e.g., rewind)
MT_ST_NOWAIT_EOF enables immediate filemark mode (i.e. when
MT_ST_NOWAIT_EOF
enables immediate filemark mode (i.e. when
writing a filemark, don't wait for it to complete). Please
see the BASICS note about MTWEOFI with respect to the
possible dangers of writing immediate filemarks.
MT_ST_SILI enables setting the SILI bit in SCSI commands when
MT_ST_SILI
enables setting the SILI bit in SCSI commands when
reading in variable block mode to enhance performance when
reading blocks shorter than the byte count; set this only
if you are sure that the drive supports SILI and the HBA
correctly returns transfer residuals
MT_ST_DEBUGGING debugging (global; debugging must be
MT_ST_DEBUGGING
debugging (global; debugging must be
compiled into the driver)
MT_ST_SETBOOLEANS
MT_ST_CLEARBOOLEANS
* MT_ST_SETBOOLEANS, MT_ST_CLEARBOOLEANS
Sets or clears the option bits.
MT_ST_WRITE_THRESHOLD
* MT_ST_WRITE_THRESHOLD
Sets the write threshold for this device to kilobytes
specified by the lowest bits.
MT_ST_DEF_BLKSIZE
* MT_ST_DEF_BLKSIZE
Defines the default block size set automatically. Value
0xffffff means that the default is not used any more.
MT_ST_DEF_DENSITY
MT_ST_DEF_DRVBUFFER
* MT_ST_DEF_DENSITY, MT_ST_DEF_DRVBUFFER
Used to set or clear the density (8 bits), and drive buffer
state (3 bits). If the value is MT_ST_CLEAR_DEFAULT
(0xfffff) the default will not be used any more. Otherwise
the lowermost bits of the value contain the new value of
the parameter.
MT_ST_DEF_COMPRESSION
* MT_ST_DEF_COMPRESSION
The compression default will not be used if the value of
the lowermost byte is 0xff. Otherwise the lowermost bit
contains the new default. If the bits 8-15 are set to a
@ -487,17 +562,17 @@ MTSETDRVBUFFER
used as the compression algorithm. The value
MT_ST_CLEAR_DEFAULT can be used to clear the compression
default.
MT_ST_SET_TIMEOUT
* MT_ST_SET_TIMEOUT
Set the normal timeout in seconds for this device. The
default is 900 seconds (15 minutes). The timeout should be
long enough for the retries done by the device while
reading/writing.
MT_ST_SET_LONG_TIMEOUT
* MT_ST_SET_LONG_TIMEOUT
Set the long timeout that is used for operations that are
known to take a long time. The default is 14000 seconds
(3.9 hours). For erase this value is further multiplied by
eight.
MT_ST_SET_CLN
* MT_ST_SET_CLN
Set the cleaning request interpretation parameters using
the lowest 24 bits of the argument. The driver can set the
generic status bit GMT_CLN if a cleaning request bit pattern
@ -506,7 +581,7 @@ MTSETDRVBUFFER
cleaning. The bits are device-dependent. The driver is
given the number of the sense data byte (the lowest eight
bits of the argument; must be >= 18 (values 1 - 17
reserved) and <= the maximum requested sense data sixe),
reserved) and <= the maximum requested sense data sixe),
a mask to select the relevant bits (the bits 9-16), and the
bit pattern (bits 17-23). If the bit pattern is zero, one
or more bits under the mask indicate cleaning request. If
@ -518,12 +593,16 @@ MTSETDRVBUFFER
MT_ST_SET_CLN.)
The following ioctl uses the structure mtpos:
MTIOCPOS Reads the current position from the drive. Uses
MTIOCPOS
Reads the current position from the drive. Uses
Tandberg-compatible QFA for SCSI-1 drives and the SCSI-2
command for the SCSI-2 drives.
The following ioctl uses the structure mtget to return the status:
MTIOCGET Returns some status information.
MTIOCGET
Returns some status information.
The file number and block number within file are returned. The
block is -1 when it can't be determined (e.g., after MTBSF).
The drive type is either MTISSCSI1 or MTISSCSI2.
@ -537,7 +616,8 @@ MTIOCGET Returns some status information.
end of recorded data or end of tape. GMT_EOT means end of tape.
MISCELLANEOUS COMPILE OPTIONS
Miscellaneous Compile Options
=============================
The recovered write errors are considered fatal if ST_RECOVERED_WRITE_FATAL
is defined.
@ -568,7 +648,8 @@ time or the MT_ST_CAN_BSR bit is set for the drive with an ioctl.
user does not request data that far.)
DEBUGGING HINTS
Debugging Hints
===============
Debugging code is now compiled in by default but debugging is turned off
with the kernel module parameter debug_flag defaulting to 0. Debugging

View File

@ -1,3 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
=======================
The sym53c500_cs Driver
=======================
The sym53c500_cs driver originated as an add-on to David Hinds' pcmcia-cs
package, and was written by Tom Corner (tcorner@via.at). A rewrite was
long overdue, and the current version addresses the following concerns:
@ -20,4 +26,4 @@ Through the years, there have been a number of downloads of the pcmcia-cs
version of this driver, and I guess it worked for those users. It worked
for Tom Corner, and it works for me. Your mileage will probably vary.
--Bob Tracy (rct@frus.com)
Bob Tracy (rct@frus.com)

View File

@ -1,22 +1,36 @@
.. SPDX-License-Identifier: GPL-2.0
========================
tcm_qla2xxx Driver Notes
========================
tcm_qla2xxx jam_host attribute
------------------------------
There is now a new module endpoint atribute called jam_host
attribute: jam_host: boolean=0/1
attribute::
jam_host: boolean=0/1
This attribute and accompanying code is only included if the
Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
By default this jammer code and functionality is disabled
Use this attribute to control the discarding of SCSI commands to a
selected host.
This may be useful for testing error handling and simulating slow drain
and other fabric issues.
Setting a boolean of 1 for the jam_host attribute for a particular host
will discard the commands for that host.
will discard the commands for that host.
Reset back to 0 to stop the jamming.
Enable host 4 to be jammed
echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
Enable host 4 to be jammed::
Disable jamming on host 4
echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
Disable jamming on host 4::
echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host

View File

@ -1,24 +1,26 @@
Universal Flash Storage
=======================
.. SPDX-License-Identifier: GPL-2.0
=======================
Universal Flash Storage
=======================
Contents
--------
.. Contents
1. Overview
2. UFS Architecture Overview
2.1 Application Layer
2.2 UFS Transport Protocol(UTP) layer
2.3 UFS Interconnect(UIC) Layer
3. UFSHCD Overview
3.1 UFS controller initialization
3.2 UTP Transfer requests
3.3 UFS error handling
3.4 SCSI Error handling
1. Overview
2. UFS Architecture Overview
2.1 Application Layer
2.2 UFS Transport Protocol(UTP) layer
2.3 UFS Interconnect(UIC) Layer
3. UFSHCD Overview
3.1 UFS controller initialization
3.2 UTP Transfer requests
3.3 UFS error handling
3.4 SCSI Error handling
1. Overview
-----------
===========
Universal Flash Storage(UFS) is a storage specification for flash devices.
It is aimed to provide a universal storage interface for both
@ -28,19 +30,25 @@ is defined by JEDEC Solid State Technology Association. UFS is based
on MIPI M-PHY physical layer standard. UFS uses MIPI M-PHY as the
physical layer and MIPI Unipro as the link layer.
The main goals of UFS is to provide,
The main goals of UFS is to provide:
* Optimized performance:
For UFS version 1.0 and 1.1 the target performance is as follows,
Support for Gear1 is mandatory (rate A: 1248Mbps, rate B: 1457.6Mbps)
Support for Gear2 is optional (rate A: 2496Mbps, rate B: 2915.2Mbps)
For UFS version 1.0 and 1.1 the target performance is as follows:
- Support for Gear1 is mandatory (rate A: 1248Mbps, rate B: 1457.6Mbps)
- Support for Gear2 is optional (rate A: 2496Mbps, rate B: 2915.2Mbps)
Future version of the standard,
Gear3 (rate A: 4992Mbps, rate B: 5830.4Mbps)
- Gear3 (rate A: 4992Mbps, rate B: 5830.4Mbps)
* Low power consumption
* High random IOPs and low latency
2. UFS Architecture Overview
----------------------------
============================
UFS has a layered communication architecture which is based on SCSI
SAM-5 architectural model.
@ -48,16 +56,22 @@ SAM-5 architectural model.
UFS communication architecture consists of following layers,
2.1 Application Layer
---------------------
The Application layer is composed of UFS command set layer(UCS),
Task Manager and Device manager. The UFS interface is designed to be
protocol agnostic, however SCSI has been selected as a baseline
protocol for versions 1.0 and 1.1 of UFS protocol layer.
UFS supports subset of SCSI commands defined by SPC-4 and SBC-3.
* UCS: It handles SCSI commands supported by UFS specification.
* Task manager: It handles task management functions defined by the
* UCS:
It handles SCSI commands supported by UFS specification.
* Task manager:
It handles task management functions defined by the
UFS which are meant for command queue control.
* Device manager: It handles device level operations and device
* Device manager:
It handles device level operations and device
configuration operations. Device level operations mainly involve
device power management operations and commands to Interconnect
layers. Device level configurations involve handling of query
@ -65,10 +79,12 @@ UFS communication architecture consists of following layers,
information of the device.
2.2 UFS Transport Protocol(UTP) layer
-------------------------------------
UTP layer provides services for
the higher layers through Service Access Points. UTP defines 3
service access points for higher layers.
* UDM_SAP: Device manager service access point is exposed to device
manager for device level operations. These device level operations
are done through query requests.
@ -76,20 +92,23 @@ UFS communication architecture consists of following layers,
set layer(UCS) to transport commands.
* UTP_TM_SAP: Task management service access point is exposed to task
manager to transport task management functions.
UTP transports messages through UFS protocol information unit(UPIU).
2.3 UFS Interconnect(UIC) Layer
-------------------------------
UIC is the lowest layer of UFS layered architecture. It handles
connection between UFS host and UFS device. UIC consists of
MIPI UniPro and MIPI M-PHY. UIC provides 2 service access points
to upper layer,
* UIC_SAP: To transport UPIU between UFS host and UFS device.
* UIO_SAP: To issue commands to Unipro layers.
3. UFSHCD Overview
------------------
==================
The UFS host controller driver is based on Linux SCSI Framework.
UFSHCD is a low level device driver which acts as an interface between
@ -98,12 +117,14 @@ SCSI Midlayer and PCIe based UFS host controllers.
The current UFSHCD implementation supports following functionality,
3.1 UFS controller initialization
---------------------------------
The initialization module brings UFS host controller to active state
and prepares the controller to transfer commands/response between
UFSHCD and UFS device.
3.2 UTP Transfer requests
-------------------------
Transfer request handling module of UFSHCD receives SCSI commands
from SCSI Midlayer, forms UPIUs and issues the UPIUs to UFS Host
@ -112,11 +133,13 @@ The current UFSHCD implementation supports following functionality,
of the status of the command.
3.3 UFS error handling
----------------------
Error handling module handles Host controller fatal errors,
Device fatal errors and UIC interconnect layer related errors.
3.4 SCSI Error handling
-----------------------
This is done through UFSHCD SCSI error handling routines registered
with SCSI Midlayer. Examples of some of the error handling commands
@ -129,7 +152,7 @@ In this version of UFSHCD Query requests and power management
functionality are not implemented.
4. BSG Support
------------------
==============
This transport driver supports exchanging UFS protocol information units
(UPIUs) with a UFS device. Typically, user space will allocate
@ -138,7 +161,7 @@ request_upiu and reply_upiu respectively. Filling those UPIUs should
be done in accordance with JEDEC spec UFS2.1 paragraph 10.7.
*Caveat emptor*: The driver makes no further input validations and sends the
UPIU to the device as it is. Open the bsg device in /dev/ufs-bsg and
send SG_IO with the applicable sg_io_v4:
send SG_IO with the applicable sg_io_v4::
io_hdr_v4.guard = 'Q';
io_hdr_v4.protocol = BSG_PROTOCOL_SCSI;
@ -166,6 +189,7 @@ upiu-based protocol is available at:
For more detailed information about the tool and its supported
features, please see the tool's README.
UFS Specifications can be found at,
UFS - http://www.jedec.org/sites/default/files/docs/JESD220.pdf
UFSHCI - http://www.jedec.org/sites/default/files/docs/JESD223.pdf
UFS Specifications can be found at:
- UFS - http://www.jedec.org/sites/default/files/docs/JESD220.pdf
- UFSHCI - http://www.jedec.org/sites/default/files/docs/JESD223.pdf

View File

@ -0,0 +1,24 @@
.. SPDX-License-Identifier: GPL-2.0
===============================================================
Driver for Western Digital WD7193, WD7197 and WD7296 SCSI cards
===============================================================
The card requires firmware that can be cut out of the Windows NT driver that
can be downloaded from WD at:
http://support.wdc.com/product/download.asp?groupid=801&sid=27&lang=en
There is no license anywhere in the file or on the page - so the firmware
probably cannot be added to linux-firmware.
This script downloads and extracts the firmware, creating wd719x-risc.bin and
d719x-wcs.bin files. Put them in /lib/firmware/::
#!/bin/sh
wget http://support.wdc.com/download/archive/pciscsi.exe
lha xi pciscsi.exe pci-scsi.exe
lha xi pci-scsi.exe nt/wd7296a.sys
rm pci-scsi.exe
dd if=wd7296a.sys of=wd719x-risc.bin bs=1 skip=5760 count=14336
dd if=wd7296a.sys of=wd719x-wcs.bin bs=1 skip=20096 count=514
rm wd7296a.sys

View File

@ -1,21 +0,0 @@
Driver for Western Digital WD7193, WD7197 and WD7296 SCSI cards
---------------------------------------------------------------
The card requires firmware that can be cut out of the Windows NT driver that
can be downloaded from WD at:
http://support.wdc.com/product/download.asp?groupid=801&sid=27&lang=en
There is no license anywhere in the file or on the page - so the firmware
probably cannot be added to linux-firmware.
This script downloads and extracts the firmware, creating wd719x-risc.bin and
d719x-wcs.bin files. Put them in /lib/firmware/.
#!/bin/sh
wget http://support.wdc.com/download/archive/pciscsi.exe
lha xi pciscsi.exe pci-scsi.exe
lha xi pci-scsi.exe nt/wd7296a.sys
rm pci-scsi.exe
dd if=wd7296a.sys of=wd719x-risc.bin bs=1 skip=5760 count=14336
dd if=wd7296a.sys of=wd719x-wcs.bin bs=1 skip=20096 count=514
rm wd7296a.sys

View File

@ -236,7 +236,7 @@ M: Adaptec OEM Raid Solutions <aacraid@microsemi.com>
L: linux-scsi@vger.kernel.org
W: http://www.adaptec.com/
S: Supported
F: Documentation/scsi/aacraid.txt
F: Documentation/scsi/aacraid.rst
F: drivers/scsi/aacraid/
ABI/API
@ -540,7 +540,7 @@ M: Matthew Wilcox <willy@infradead.org>
M: Hannes Reinecke <hare@suse.com>
L: linux-scsi@vger.kernel.org
S: Maintained
F: Documentation/scsi/advansys.txt
F: Documentation/scsi/advansys.rst
F: drivers/scsi/advansys.c
ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346)
@ -4718,7 +4718,7 @@ L: dc395x@twibble.org
W: http://twibble.org/dist/dc395x/
W: http://lists.twibble.org/mailman/listinfo/dc395x/
S: Maintained
F: Documentation/scsi/dc395x.txt
F: Documentation/scsi/dc395x.rst
F: drivers/scsi/dc395x.*
DCCP PROTOCOL
@ -7491,7 +7491,7 @@ M: Don Brace <don.brace@microsemi.com>
L: esc.storagedev@microsemi.com
L: linux-scsi@vger.kernel.org
S: Supported
F: Documentation/scsi/hpsa.txt
F: Documentation/scsi/hpsa.rst
F: drivers/scsi/hpsa*.[ch]
F: include/linux/cciss*.h
F: include/uapi/linux/cciss*.h
@ -7580,7 +7580,7 @@ HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
M: HighPoint Linux Team <linux@highpoint-tech.com>
W: http://www.highpoint-tech.com
S: Supported
F: Documentation/scsi/hptiop.txt
F: Documentation/scsi/hptiop.rst
F: drivers/scsi/hptiop.c
HIPPI
@ -9473,7 +9473,7 @@ LASI 53c700 driver for PARISC
M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
L: linux-scsi@vger.kernel.org
S: Maintained
F: Documentation/scsi/53c700.txt
F: Documentation/scsi/53c700.rst
F: drivers/scsi/53c700*
LEAKING_ADDRESSES
@ -10741,7 +10741,7 @@ L: megaraidlinux.pdl@broadcom.com
L: linux-scsi@vger.kernel.org
W: http://www.avagotech.com/support/
S: Maintained
F: Documentation/scsi/megaraid.txt
F: Documentation/scsi/megaraid.rst
F: drivers/scsi/megaraid.*
F: drivers/scsi/megaraid/
@ -11195,7 +11195,7 @@ F: drivers/scsi/smartpqi/Kconfig
F: drivers/scsi/smartpqi/Makefile
F: include/linux/cciss*.h
F: include/uapi/linux/cciss*.h
F: Documentation/scsi/smartpqi.txt
F: Documentation/scsi/smartpqi.rst
MICROSEMI ETHERNET SWITCH DRIVER
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
@ -11577,7 +11577,7 @@ M: Finn Thain <fthain@telegraphics.com.au>
M: Michael Schmitz <schmitzmic@gmail.com>
L: linux-scsi@vger.kernel.org
S: Maintained
F: Documentation/scsi/g_NCR5380.txt
F: Documentation/scsi/g_NCR5380.rst
F: drivers/scsi/NCR5380.*
F: drivers/scsi/arm/cumana_1.c
F: drivers/scsi/arm/oak.c
@ -11906,7 +11906,7 @@ NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
S: Maintained
F: Documentation/scsi/NinjaSCSI.txt
F: Documentation/scsi/NinjaSCSI.rst
F: drivers/scsi/pcmcia/nsp_*
NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER
@ -11914,7 +11914,7 @@ M: GOTO Masanori <gotom@debian.or.jp>
M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
S: Maintained
F: Documentation/scsi/NinjaSCSI.txt
F: Documentation/scsi/NinjaSCSI.rst
F: drivers/scsi/nsp32*
NIOS2 ARCHITECTURE
@ -14929,7 +14929,7 @@ M: Doug Gilbert <dgilbert@interlog.com>
L: linux-scsi@vger.kernel.org
W: http://sg.danny.cz/sg
S: Maintained
F: Documentation/scsi/scsi-generic.txt
F: Documentation/scsi/scsi-generic.rst
F: drivers/scsi/sg.c
F: include/scsi/sg.h
@ -14949,7 +14949,7 @@ SCSI TAPE DRIVER
M: Kai Mäkisara <Kai.Makisara@kolumbus.fi>
L: linux-scsi@vger.kernel.org
S: Maintained
F: Documentation/scsi/st.txt
F: Documentation/scsi/st.rst
F: drivers/scsi/st.*
F: drivers/scsi/st_*.h
@ -17306,7 +17306,7 @@ R: Alim Akhtar <alim.akhtar@samsung.com>
R: Avri Altman <avri.altman@wdc.com>
L: linux-scsi@vger.kernel.org
S: Supported
F: Documentation/scsi/ufs.txt
F: Documentation/scsi/ufs.rst
F: drivers/scsi/ufs/
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS

View File

@ -36,7 +36,6 @@ CONFIG_BLK_DEV_CY82C693=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set

View File

@ -32,7 +32,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -202,7 +202,6 @@ CONFIG_EEPROM_AT24=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_CONSTANTS=y

View File

@ -10,6 +10,7 @@
#define _ASM_C6X_UNALIGNED_H
#include <linux/swab.h>
#include <linux/unaligned/generic.h>
/*
* The C64x+ can do unaligned word and dword accesses in hardware
@ -100,68 +101,4 @@ static inline void put_unaligned64(u64 val, const void *p)
#endif
/*
* Cause a link-time error if we try an unaligned access other than
* 1,2,4 or 8 bytes long
*/
extern int __bad_unaligned_access_size(void);
#define __get_unaligned_le(ptr) (typeof(*(ptr)))({ \
sizeof(*(ptr)) == 1 ? *(ptr) : \
(sizeof(*(ptr)) == 2 ? get_unaligned_le16((ptr)) : \
(sizeof(*(ptr)) == 4 ? get_unaligned_le32((ptr)) : \
(sizeof(*(ptr)) == 8 ? get_unaligned_le64((ptr)) : \
__bad_unaligned_access_size()))); \
})
#define __get_unaligned_be(ptr) (__force typeof(*(ptr)))({ \
sizeof(*(ptr)) == 1 ? *(ptr) : \
(sizeof(*(ptr)) == 2 ? get_unaligned_be16((ptr)) : \
(sizeof(*(ptr)) == 4 ? get_unaligned_be32((ptr)) : \
(sizeof(*(ptr)) == 8 ? get_unaligned_be64((ptr)) : \
__bad_unaligned_access_size()))); \
})
#define __put_unaligned_le(val, ptr) ({ \
void *__gu_p = (ptr); \
switch (sizeof(*(ptr))) { \
case 1: \
*(u8 *)__gu_p = (__force u8)(val); \
break; \
case 2: \
put_unaligned_le16((__force u16)(val), __gu_p); \
break; \
case 4: \
put_unaligned_le32((__force u32)(val), __gu_p); \
break; \
case 8: \
put_unaligned_le64((__force u64)(val), __gu_p); \
break; \
default: \
__bad_unaligned_access_size(); \
break; \
} \
(void)0; })
#define __put_unaligned_be(val, ptr) ({ \
void *__gu_p = (ptr); \
switch (sizeof(*(ptr))) { \
case 1: \
*(u8 *)__gu_p = (__force u8)(val); \
break; \
case 2: \
put_unaligned_be16((__force u16)(val), __gu_p); \
break; \
case 4: \
put_unaligned_be32((__force u32)(val), __gu_p); \
break; \
case 8: \
put_unaligned_be64((__force u64)(val), __gu_p); \
break; \
default: \
__bad_unaligned_access_size(); \
break; \
} \
(void)0; })
#endif /* _ASM_C6X_UNALIGNED_H */

View File

@ -35,7 +35,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_CHR_DEV_OSST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -333,7 +333,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -318,7 +318,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -333,7 +333,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -315,7 +315,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -317,7 +317,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -324,7 +324,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -357,7 +357,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -314,7 +314,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -315,7 +315,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -323,7 +323,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -312,7 +312,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -312,7 +312,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SAS_ATTRS=m

View File

@ -112,7 +112,6 @@ CONFIG_BLK_DEV_TC86C001=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_ATA=y

View File

@ -99,7 +99,6 @@ CONFIG_CDROM_PKTCDVD=m
CONFIG_ATA_OVER_ETH=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOWLEVEL is not set

View File

@ -99,7 +99,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_CONSTANTS=y

View File

@ -50,7 +50,6 @@ CONFIG_RAID_ATTRS=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -42,7 +42,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_ISCSI_TCP=m

View File

@ -239,7 +239,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -247,7 +247,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -245,7 +245,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -245,7 +245,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

View File

@ -203,7 +203,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_FC_ATTRS=y

View File

@ -2,7 +2,6 @@ CONFIG_AQUANTIA_PHY=y
CONFIG_AT803X_PHY=y
CONFIG_ATA=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_BLK_DEV_SR=y
CONFIG_BROADCOM_PHY=y
CONFIG_C293_PCIE=y

View File

@ -44,7 +44,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SYM53C8XX_2=y

View File

@ -42,7 +42,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SYM53C8XX_2=y

View File

@ -62,7 +62,6 @@ CONFIG_CDROM_PKTCDVD=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SPI_ATTRS=y

View File

@ -41,7 +41,6 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
# CONFIG_SCSI_PROC_FS is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_IPR=y
CONFIG_ATA=y

View File

@ -60,7 +60,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_CHR_DEV_OSST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_CONSTANTS=y

View File

@ -117,7 +117,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_FC_ATTRS=y

View File

@ -108,7 +108,6 @@ CONFIG_BLK_DEV_NVME=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SCAN_ASYNC=y

View File

@ -110,7 +110,6 @@ CONFIG_VIRTIO_BLK=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_FC_ATTRS=y

View File

@ -60,7 +60,6 @@ CONFIG_BLK_DEV_RAM_SIZE=65536
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_FC_ATTRS=y

View File

@ -368,7 +368,6 @@ CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m

View File

@ -97,7 +97,6 @@ CONFIG_VIRTIO_BLK=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_FC_ATTRS=y

View File

@ -84,7 +84,6 @@ CONFIG_EEPROM_AT24=m
# CONFIG_OCXL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SCAN_ASYNC=y

View File

@ -46,7 +46,6 @@ CONFIG_BLK_DEV_IDETAPE=m
CONFIG_SCSI=m
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y

View File

@ -73,7 +73,6 @@ CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y

View File

@ -136,7 +136,6 @@ CONFIG_CONNECTOR=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SPI_ATTRS=y

Some files were not shown because too many files have changed in this diff Show More