Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Esse commit está contido em:
70
Documentation/scsi/00-INDEX
Arquivo normal
70
Documentation/scsi/00-INDEX
Arquivo normal
@@ -0,0 +1,70 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
53c700.txt
|
||||
- info on driver for 53c700 based adapters
|
||||
AM53C974.txt
|
||||
- info on driver for AM53c974 based adapters
|
||||
BusLogic.txt
|
||||
- info on driver for adapters with BusLogic chips
|
||||
ChangeLog
|
||||
- Changes to scsi files, if not listed elsewhere
|
||||
ChangeLog.ips
|
||||
- IBM ServeRAID driver Changelog
|
||||
ChangeLog.ncr53c8xx
|
||||
- Changes to ncr53c8xx driver
|
||||
ChangeLog.sym53c8xx
|
||||
- Changes to sym53c8xx driver
|
||||
ChangeLog.sym53c8xx_2
|
||||
- Changes to second generation of sym53c8xx driver
|
||||
FlashPoint.txt
|
||||
- info on driver for BusLogic FlashPoint adapters
|
||||
LICENSE.FlashPoint
|
||||
- Licence of the Flashpoint driver
|
||||
Mylex.txt
|
||||
- info on driver for Mylex adapters
|
||||
NinjaSCSI.txt
|
||||
- info on WorkBiT NinjaSCSI-32/32Bi driver
|
||||
aha152x.txt
|
||||
- info on driver for Adaptec AHA152x based adapters
|
||||
aic7xxx.txt
|
||||
- info on driver for Adaptec controllers
|
||||
aic7xxx_old.txt
|
||||
- info on driver for Adaptec controllers, old generation
|
||||
cpqfc.txt
|
||||
- info on driver for Compaq Tachyon TS adapters
|
||||
dpti.txt
|
||||
- info on driver for DPT SmartRAID and Adaptec I2O RAID based adapters
|
||||
dtc3x80.txt
|
||||
- info on driver for DTC 2x80 based adapters
|
||||
g_NCR5380.txt
|
||||
- info on driver for NCR5380 and NCR53c400 based adapters
|
||||
ibmmca.txt
|
||||
- info on driver for IBM adapters with MCA bus
|
||||
in2000.txt
|
||||
- info on in2000 driver
|
||||
ncr53c7xx.txt
|
||||
- info on driver for NCR53c7xx based adapters
|
||||
ncr53c8xx.txt
|
||||
- info on driver for NCR53c8xx based adapters
|
||||
osst.txt
|
||||
- info on driver for OnStream SC-x0 SCSI tape
|
||||
ppa.txt
|
||||
- info on driver for IOmega zip drive
|
||||
qlogicfas.txt
|
||||
- info on driver for QLogic FASxxx based adapters
|
||||
qlogicisp.txt
|
||||
- info on driver for QLogic ISP 1020 based adapters
|
||||
scsi-generic.txt
|
||||
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
||||
scsi.txt
|
||||
- short blurb on using SCSI support as a module.
|
||||
scsi_mid_low_api.txt
|
||||
- info on API between SCSI layer and low level drivers
|
||||
st.txt
|
||||
- info on scsi tape driver
|
||||
sym53c500_cs.txt
|
||||
- info on PCMCIA driver for Symbios Logic 53c500 based adapters
|
||||
sym53c8xx_2.txt
|
||||
- info on second generation driver for sym53c8xx based adapters
|
||||
tmscsim.txt
|
||||
- info on driver for AM53c974 based adapters
|
154
Documentation/scsi/53c700.txt
Arquivo normal
154
Documentation/scsi/53c700.txt
Arquivo normal
@@ -0,0 +1,154 @@
|
||||
General Description
|
||||
===================
|
||||
|
||||
This driver supports the 53c700 and 53c700-66 chips. It also supports
|
||||
the 53c710 but only in 53c700 emulation mode. It is full featured and
|
||||
does sync (-66 and 710 only), disconnects and tag command queueing.
|
||||
|
||||
Since the 53c700 must be interfaced to a bus, you need to wrapper the
|
||||
card detector around this driver. For an example, see the
|
||||
NCR_D700.[ch] or lasi700.[ch] files.
|
||||
|
||||
The comments in the 53c700.[ch] files tell you which parts you need to
|
||||
fill in to get the driver working.
|
||||
|
||||
|
||||
Compile Time Flags
|
||||
==================
|
||||
|
||||
The driver may be either io mapped or memory mapped. This is
|
||||
selectable by configuration flags:
|
||||
|
||||
CONFIG_53C700_MEM_MAPPED
|
||||
|
||||
define if the driver is memory mapped.
|
||||
|
||||
CONFIG_53C700_IO_MAPPED
|
||||
|
||||
define if the driver is to be io mapped.
|
||||
|
||||
One or other of the above flags *must* be defined.
|
||||
|
||||
Other flags are:
|
||||
|
||||
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).
|
||||
|
||||
CONFIG_53C700_USE_CONSISTENT
|
||||
|
||||
allocate consistent memory (should only be used if your architecture
|
||||
has a mixture of consistent and inconsistent memory). Fully
|
||||
consistent or fully inconsistent architectures should not define this.
|
||||
|
||||
|
||||
Using the Chip Core Driver
|
||||
==========================
|
||||
|
||||
In order to plumb the 53c700 chip core driver into a working SCSI
|
||||
driver, you need to know three things about the way the chip is wired
|
||||
into your system (or expansion card).
|
||||
|
||||
1. The clock speed of the SCSI core
|
||||
2. The interrupt line used
|
||||
3. The memory (or io space) location of the 53c700 registers.
|
||||
|
||||
Optionally, you may also need to know other things, like how to read
|
||||
the SCSI Id from the card bios or whether the chip is wired for
|
||||
differential operation.
|
||||
|
||||
Usually you can find items 2. and 3. from general spec. documents or
|
||||
even by examining the configuration of a working driver under another
|
||||
operating system.
|
||||
|
||||
The clock speed is usually buried deep in the technical literature.
|
||||
It is required because it is used to set up both the synchronous and
|
||||
asynchronous dividers for the chip. As a general rule of thumb,
|
||||
manufacturers set the clock speed at the lowest possible setting
|
||||
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
|
||||
|
||||
Writing Your Glue Driver
|
||||
========================
|
||||
|
||||
This will be a standard SCSI driver (I don't know of a good document
|
||||
describing this, just copy from some other driver) with at least a
|
||||
detect and release entry.
|
||||
|
||||
In the detect routine, you need to allocate a struct
|
||||
NCR_700_Host_Parameters sized memory area and clear it (so that the
|
||||
default values for everything are 0). Then you must fill in the
|
||||
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.
|
||||
|
||||
In the release routine, you must free the NCR_700_Host_Parameters that
|
||||
you allocated, call the corresponding release_*_region and free the
|
||||
interrupt.
|
||||
|
||||
Handling Interrupts
|
||||
-------------------
|
||||
|
||||
In general, you should just plumb the card's interrupt line in with
|
||||
|
||||
request_irq(irq, NCR_700_intr, <irq flags>, <driver name>, host);
|
||||
|
||||
where host is the return from the relevant NCR_700_detect() routine.
|
||||
|
||||
You may also write your own interrupt handling routine which calls
|
||||
NCR_700_intr() directly. However, you should only really do this if
|
||||
you have a card with more than one chip on it and you can read a
|
||||
register to tell which set of chips wants the interrupt.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
differential: (OPTIONAL)
|
||||
|
||||
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.
|
||||
|
||||
chip710: (OPTIONAL)
|
||||
|
||||
set to 1 if the chip is a 53c710.
|
||||
|
||||
burst_disable: (OPTIONAL, 53c710 only)
|
||||
|
||||
disable 8 byte bursting for DMA transfers.
|
||||
|
566
Documentation/scsi/BusLogic.txt
Arquivo normal
566
Documentation/scsi/BusLogic.txt
Arquivo normal
@@ -0,0 +1,566 @@
|
||||
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
|
||||
|
||||
17 August 1998
|
||||
|
||||
Leonard N. Zubkoff
|
||||
Dandelion Digital
|
||||
lnz@dandelion.com
|
||||
|
||||
Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
BusLogic, Inc. designed and manufactured a variety of high performance SCSI
|
||||
host adapters which share a common programming interface across a diverse
|
||||
collection of bus architectures by virtue of their MultiMaster ASIC technology.
|
||||
BusLogic was acquired by Mylex Corporation in February 1996, but the products
|
||||
supported by this driver originated under the BusLogic name and so that name is
|
||||
retained in the source code and documentation.
|
||||
|
||||
This driver supports all present BusLogic MultiMaster Host Adapters, and should
|
||||
support any future MultiMaster designs with little or no modification. More
|
||||
recently, BusLogic introduced the FlashPoint Host Adapters, which are less
|
||||
costly and rely on the host CPU, rather than including an onboard processor.
|
||||
Despite not having an onboard CPU, the FlashPoint Host Adapters perform very
|
||||
well and have very low command latency. BusLogic has recently provided me with
|
||||
the FlashPoint Driver Developer's Kit, which comprises documentation and freely
|
||||
redistributable source code for the FlashPoint SCCB Manager. The SCCB Manager
|
||||
is the library of code that runs on the host CPU and performs functions
|
||||
analogous to the firmware on the MultiMaster Host Adapters. Thanks to their
|
||||
having provided the SCCB Manager, this driver now supports the FlashPoint Host
|
||||
Adapters as well.
|
||||
|
||||
My primary goals in writing this completely new BusLogic driver for Linux are
|
||||
to achieve the full performance that BusLogic SCSI Host Adapters and modern
|
||||
SCSI peripherals are capable of, and to provide a highly robust driver that can
|
||||
be depended upon for high performance mission critical applications. All of
|
||||
the major performance features can be configured from the Linux kernel command
|
||||
line or at module initialization time, allowing individual installations to
|
||||
tune driver performance and error recovery to their particular needs.
|
||||
|
||||
The latest information on Linux support for BusLogic SCSI Host Adapters, as
|
||||
well as the most recent release of this driver and the latest firmware for the
|
||||
BT-948/958/958D, will always be available from my Linux Home Page at URL
|
||||
"http://www.dandelion.com/Linux/".
|
||||
|
||||
Bug reports should be sent via electronic mail to "lnz@dandelion.com". Please
|
||||
include with the bug report the complete configuration messages reported by the
|
||||
driver and SCSI subsystem at startup, along with any subsequent system messages
|
||||
relevant to SCSI operations, and a detailed description of your system's
|
||||
hardware configuration.
|
||||
|
||||
Mylex has been an excellent company to work with and I highly recommend their
|
||||
products to the Linux community. In November 1995, I was offered the
|
||||
opportunity to become a beta test site for their latest MultiMaster product,
|
||||
the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide
|
||||
Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since
|
||||
Mylex received a degree and kind of testing that their own testing group cannot
|
||||
readily achieve, and the Linux community has available high performance host
|
||||
adapters that have been well tested with Linux even before being brought to
|
||||
market. This relationship has also given me the opportunity to interact
|
||||
directly with their technical staff, to understand more about the internal
|
||||
workings of their products, and in turn to educate them about the needs and
|
||||
potential of the Linux community.
|
||||
|
||||
More recently, Mylex has reaffirmed the company's interest in supporting the
|
||||
Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID
|
||||
Controllers. Mylex's interest and support is greatly appreciated.
|
||||
|
||||
Unlike some other vendors, if you contact Mylex Technical Support with a
|
||||
problem and are running Linux, they will not tell you that your use of their
|
||||
products is unsupported. Their latest product marketing literature even states
|
||||
"Mylex SCSI host adapters are compatible with all major operating systems
|
||||
including: ... Linux ...".
|
||||
|
||||
Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California
|
||||
94555, USA and can be reached at 510/796-6100 or on the World Wide Web at
|
||||
http://www.mylex.com. Mylex HBA Technical Support can be reached by electronic
|
||||
mail at techsup@mylex.com, by Voice at 510/608-2400, or by FAX at 510/745-7715.
|
||||
Contact information for offices in Europe and Japan is available on the Web
|
||||
site.
|
||||
|
||||
|
||||
DRIVER FEATURES
|
||||
|
||||
o Configuration Reporting and Testing
|
||||
|
||||
During system initialization, the driver reports extensively on the host
|
||||
adapter hardware configuration, including the synchronous transfer parameters
|
||||
requested and negotiated with each target device. AutoSCSI settings for
|
||||
Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are
|
||||
reported for each target device, as well as the status of Tagged Queuing.
|
||||
If the same setting is in effect for all target devices, then a single word
|
||||
or phrase is used; otherwise, a letter is provided for each target device to
|
||||
indicate the individual status. The following examples
|
||||
should clarify this reporting format:
|
||||
|
||||
Synchronous Negotiation: Ultra
|
||||
|
||||
Synchronous negotiation is enabled for all target devices and the host
|
||||
adapter will attempt to negotiate for 20.0 mega-transfers/second.
|
||||
|
||||
Synchronous Negotiation: Fast
|
||||
|
||||
Synchronous negotiation is enabled for all target devices and the host
|
||||
adapter will attempt to negotiate for 10.0 mega-transfers/second.
|
||||
|
||||
Synchronous Negotiation: Slow
|
||||
|
||||
Synchronous negotiation is enabled for all target devices and the host
|
||||
adapter will attempt to negotiate for 5.0 mega-transfers/second.
|
||||
|
||||
Synchronous Negotiation: Disabled
|
||||
|
||||
Synchronous negotiation is disabled and all target devices are limited to
|
||||
asynchronous operation.
|
||||
|
||||
Synchronous Negotiation: UFSNUUU#UUUUUUUU
|
||||
|
||||
Synchronous negotiation to Ultra speed is enabled for target devices 0
|
||||
and 4 through 15, to Fast speed for target device 1, to Slow speed for
|
||||
target device 2, and is not permitted to target device 3. The host
|
||||
adapter's SCSI ID is represented by the "#".
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
target devices that report having the tagged queuing capability. Tagged
|
||||
queuing allows for multiple outstanding commands to be issued to each target
|
||||
device or logical unit, and can improve I/O performance substantially. In
|
||||
addition, BusLogic's Strict Round Robin Mode is used to optimize host adapter
|
||||
performance, and scatter/gather I/O can support as many segments as can be
|
||||
effectively utilized by the Linux I/O subsystem. Control over the use of
|
||||
tagged queuing for each target device as well as individual selection of the
|
||||
tagged queue depth is available through driver options provided on the kernel
|
||||
command line or at module initialization time. By default, the queue depth
|
||||
is determined automatically based on the host adapter's total queue depth and
|
||||
the number, type, speed, and capabilities of the target devices found. In
|
||||
addition, tagged queuing is automatically disabled whenever the host adapter
|
||||
firmware version is known not to implement it correctly, or whenever a tagged
|
||||
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
|
||||
|
||||
The driver implements extensive error recovery procedures. When the higher
|
||||
level parts of the SCSI subsystem request that a timed out command be reset,
|
||||
a selection is made between a full host adapter hard reset and SCSI bus reset
|
||||
versus sending a bus device reset message to the individual target device
|
||||
based on the recommendation of the SCSI subsystem. Error recovery strategies
|
||||
are selectable through driver options individually for each target device,
|
||||
and also include sending a bus device reset to the specific target device
|
||||
associated with the command being reset, as well as suppressing error
|
||||
recovery entirely to avoid perturbing an improperly functioning device. If
|
||||
the bus device reset error recovery strategy is selected and sending a bus
|
||||
device reset does not restore correct operation, the next command that is
|
||||
reset will force a full host adapter hard reset and SCSI bus reset. SCSI bus
|
||||
resets caused by other devices and detected by the host adapter are also
|
||||
handled by issuing a soft reset to the host adapter and re-initialization.
|
||||
Finally, if tagged queuing is active and more than one command reset occurs
|
||||
in a 10 minute interval, or if a command reset occurs within the first 10
|
||||
minutes of operation, then tagged queuing will be disabled for that target
|
||||
device. These error recovery options improve overall system robustness by
|
||||
preventing individual errant devices from causing the system as a whole to
|
||||
lock up or crash, and thereby allowing a clean shutdown and restart after the
|
||||
offending component is removed.
|
||||
|
||||
o 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
|
||||
addresses assigned by the system BIOS, rather than the ISA compatible I/O
|
||||
port addresses. The ISA compatible I/O port address is then disabled by the
|
||||
driver. On PCI systems it is also recommended that the AutoSCSI utility be
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
On systems that support shared interrupts, any number of BusLogic Host
|
||||
Adapters may share the same interrupt request channel.
|
||||
|
||||
|
||||
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
|
||||
Host Adapter not in the following table contact the author beforehand to verify
|
||||
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)
|
||||
FlashPoint DL (BT-932) Dual Channel Ultra SCSI-3
|
||||
FlashPoint DL (BT-932R) Dual Channel Ultra SCSI-3 with RAIDPlus
|
||||
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
|
||||
BT-445C VLB Fast SCSI-2
|
||||
BT-747C EISA Fast SCSI-2
|
||||
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
|
||||
BT-757S EISA Wide Fast SCSI-2
|
||||
BT-757D EISA Wide Differential Fast SCSI-2
|
||||
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.
|
||||
|
||||
BusLogic SCSI Host Adapters are available packaged both as bare boards and as
|
||||
retail kits. The BT- model numbers above refer to the bare board packaging.
|
||||
The retail kit model numbers are found by replacing BT- with KT- in the above
|
||||
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
|
||||
|
||||
o 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
|
||||
it. The MD driver in Linux 2.0 provides for concatenation (LINEAR) and
|
||||
striping (RAID-0), and support for mirroring (RAID-1), fixed parity (RAID-4),
|
||||
and distributed parity (RAID-5) is available separately. The built-in Linux
|
||||
RAID support is generally more flexible and is expected to perform better
|
||||
than RAIDPlus, so there is little impetus to include RAIDPlus support in the
|
||||
BusLogic driver.
|
||||
|
||||
o 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
|
||||
to be negotiated. This results in fewer problems when these host adapters
|
||||
are installed in systems with cabling or termination that is not sufficient
|
||||
for UltraSCSI operation, or where existing SCSI devices do not properly
|
||||
respond to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI
|
||||
may be used to load "Optimum Performance" settings which allow UltraSCSI
|
||||
speed to be negotiated with all devices, or UltraSCSI speed can be enabled on
|
||||
an individual basis. It is recommended that SCAM be manually disabled after
|
||||
the "Optimum Performance" settings are loaded.
|
||||
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
The BT-948/958/958D will not respond to any of the ISA compatible I/O ports
|
||||
that previous BusLogic SCSI Host Adapters respond to. This driver supports
|
||||
the PCI I/O port assignments, so this is the preferred configuration.
|
||||
However, if the obsolete BusLogic driver must be used for any reason, such as
|
||||
a Linux distribution that does not yet use this driver in its boot kernel,
|
||||
BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA
|
||||
compatible I/O port.
|
||||
|
||||
To enable this backward compatibility option, invoke the AutoSCSI utility via
|
||||
Ctrl-B at system startup and select "Adapter Configuration", "View/Modify
|
||||
Configuration", and then change the "ISA Compatible Port" setting from
|
||||
"Disable" to "Primary" or "Alternate". Once this driver has been installed,
|
||||
the "ISA Compatible Port" option should be set back to "Disable" to avoid
|
||||
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
|
||||
|
||||
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
|
||||
compared to the BT-946C/956C/956CD. For booting from a SCSI disk to work
|
||||
correctly, it is necessary that the host adapter's BIOS and the kernel agree
|
||||
on which disk is the boot device, which requires that they recognize the PCI
|
||||
host adapters in the same order. The motherboard's PCI BIOS provides a
|
||||
standard way of enumerating the PCI host adapters, which is used by the Linux
|
||||
kernel. Some PCI BIOS implementations enumerate the PCI slots in order of
|
||||
increasing bus number and device number, while others do so in the opposite
|
||||
direction.
|
||||
|
||||
Unfortunately, Microsoft decided that Windows 95 would always enumerate the
|
||||
PCI slots in order of increasing bus number and device number regardless of
|
||||
the PCI BIOS enumeration, and requires that their scheme be supported by the
|
||||
host adapter's BIOS to receive Windows 95 certification. Therefore, the
|
||||
factory default settings of the BT-948/958/958D enumerate the host adapters
|
||||
by increasing bus number and device number. To disable this feature, invoke
|
||||
the AutoSCSI utility via Ctrl-B at system startup and select "Adapter
|
||||
Configuration", "View/Modify Configuration", press Ctrl-F10, and then change
|
||||
the "Use Bus And Device # For PCI Scanning Seq." option to OFF.
|
||||
|
||||
This driver will interrogate the setting of the PCI Scanning Sequence option
|
||||
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
|
||||
|
||||
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
|
||||
negotiated. This results in fewer problems when these host adapters are
|
||||
installed in systems with cabling or termination that is not sufficient for
|
||||
UltraSCSI operation, or where existing SCSI devices do not properly respond
|
||||
to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI may be
|
||||
used to load "Optimum Performance" settings which allow UltraSCSI speed to be
|
||||
negotiated with all devices, or UltraSCSI speed can be enabled on an
|
||||
individual basis. It is recommended that SCAM be manually disabled after the
|
||||
"Optimum Performance" settings are loaded.
|
||||
|
||||
|
||||
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
|
||||
for multiple host adapters may be specified either by separating the option
|
||||
strings by a semicolon, or by specifying multiple "BusLogic=" strings on the
|
||||
command line. Individual option specifications for a single host adapter are
|
||||
separated by commas. The Probing and Debugging Options apply to all host
|
||||
adapters whereas the remaining options apply individually only to the
|
||||
selected host adapter.
|
||||
|
||||
The BusLogic Driver Probing Options comprise the following:
|
||||
|
||||
IO:<integer>
|
||||
|
||||
The "IO:" option specifies an ISA I/O Address to be probed for a non-PCI
|
||||
MultiMaster Host Adapter. If neither "IO:" nor "NoProbeISA" options are
|
||||
specified, then the standard list of BusLogic MultiMaster ISA I/O Addresses
|
||||
will be probed (0x330, 0x334, 0x230, 0x234, 0x130, and 0x134). Multiple
|
||||
"IO:" options may be specified to precisely determine the I/O Addresses to
|
||||
be probed, but the probe order will always follow the standard list.
|
||||
|
||||
NoProbe
|
||||
|
||||
The "NoProbe" option disables all probing and therefore no BusLogic Host
|
||||
Adapters will be detected.
|
||||
|
||||
NoProbeISA
|
||||
|
||||
The "NoProbeISA" option disables probing of the standard BusLogic ISA I/O
|
||||
Addresses and therefore only PCI MultiMaster and FlashPoint Host Adapters
|
||||
will be detected.
|
||||
|
||||
NoProbePCI
|
||||
|
||||
The "NoProbePCI" options disables the interrogation of PCI Configuration
|
||||
Space and therefore only ISA Multimaster Host Adapters will be detected, as
|
||||
well as PCI Multimaster Host Adapters that have their ISA Compatible I/O
|
||||
Port set to "Primary" or "Alternate".
|
||||
|
||||
NoSortPCI
|
||||
|
||||
The "NoSortPCI" option forces PCI MultiMaster Host Adapters to be
|
||||
enumerated in the order provided by the PCI BIOS, ignoring any setting of
|
||||
the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." option.
|
||||
|
||||
MultiMasterFirst
|
||||
|
||||
The "MultiMasterFirst" option forces MultiMaster Host Adapters to be probed
|
||||
before FlashPoint Host Adapters. By default, if both FlashPoint and PCI
|
||||
MultiMaster Host Adapters are present, this driver will probe for
|
||||
FlashPoint Host Adapters first unless the BIOS primary disk is controlled
|
||||
by the first PCI MultiMaster Host Adapter, in which case MultiMaster Host
|
||||
Adapters will be probed first.
|
||||
|
||||
FlashPointFirst
|
||||
|
||||
The "FlashPointFirst" option forces FlashPoint Host Adapters to be probed
|
||||
before MultiMaster Host Adapters.
|
||||
|
||||
The BusLogic Driver Tagged Queuing Options allow for explicitly specifying
|
||||
the Queue Depth and whether Tagged Queuing is permitted for each Target
|
||||
Device (assuming that the Target Device supports Tagged Queuing). The Queue
|
||||
Depth is the number of SCSI Commands that are allowed to be concurrently
|
||||
presented for execution (either to the Host Adapter or Target Device). Note
|
||||
that explicitly enabling Tagged Queuing may lead to problems; the option to
|
||||
enable or disable Tagged Queuing is provided primarily to allow disabling
|
||||
Tagged Queuing on Target Devices that do not implement it correctly. The
|
||||
following options are available:
|
||||
|
||||
QueueDepth:<integer>
|
||||
|
||||
The "QueueDepth:" or QD:" option specifies the Queue Depth to use for all
|
||||
Target Devices that support Tagged Queuing, as well as the maximum Queue
|
||||
Depth for devices that do not support Tagged Queuing. If no Queue Depth
|
||||
option is provided, the Queue Depth will be determined automatically based
|
||||
on the Host Adapter's Total Queue Depth and the number, type, speed, and
|
||||
capabilities of the detected Target Devices. For Host Adapters that
|
||||
require ISA Bounce Buffers, the Queue Depth is automatically set by default
|
||||
to BusLogic_TaggedQueueDepthBB or BusLogic_UntaggedQueueDepthBB to avoid
|
||||
excessive preallocation of DMA Bounce Buffer memory. Target Devices that
|
||||
do not support Tagged Queuing always have their Queue Depth set to
|
||||
BusLogic_UntaggedQueueDepth or BusLogic_UntaggedQueueDepthBB, unless a
|
||||
lower Queue Depth option is provided. A Queue Depth of 1 automatically
|
||||
disables Tagged Queuing.
|
||||
|
||||
QueueDepth:[<integer>,<integer>...]
|
||||
|
||||
The "QueueDepth:[...]" or "QD:[...]" option specifies the Queue Depth
|
||||
individually for each Target Device. If an <integer> is omitted, the
|
||||
associated Target Device will have its Queue Depth selected automatically.
|
||||
|
||||
TaggedQueuing:Default
|
||||
|
||||
The "TaggedQueuing:Default" or "TQ:Default" option permits Tagged Queuing
|
||||
based on the firmware version of the BusLogic Host Adapter and based on
|
||||
whether the Queue Depth allows queuing multiple commands.
|
||||
|
||||
TaggedQueuing:Enable
|
||||
|
||||
The "TaggedQueuing:Enable" or "TQ:Enable" option enables Tagged Queuing for
|
||||
all Target Devices on this Host Adapter, overriding any limitation that
|
||||
would otherwise be imposed based on the Host Adapter firmware version.
|
||||
|
||||
TaggedQueuing:Disable
|
||||
|
||||
The "TaggedQueuing:Disable" or "TQ:Disable" option disables Tagged Queuing
|
||||
for all Target Devices on this Host Adapter.
|
||||
|
||||
TaggedQueuing:<Target-Spec>
|
||||
|
||||
The "TaggedQueuing:<Target-Spec>" or "TQ:<Target-Spec>" option controls
|
||||
Tagged Queuing individually for each Target Device. <Target-Spec> is a
|
||||
sequence of "Y", "N", and "X" characters. "Y" enables Tagged Queuing, "N"
|
||||
disables Tagged Queuing, and "X" accepts the default based on the firmware
|
||||
version. The first character refers to Target Device 0, the second to
|
||||
Target Device 1, and so on; if the sequence of "Y", "N", and "X" characters
|
||||
does not cover all the Target Devices, unspecified characters are assumed
|
||||
to be "X".
|
||||
|
||||
The BusLogic Driver Miscellaneous Options comprise the following:
|
||||
|
||||
BusSettleTime:<seconds>
|
||||
|
||||
The "BusSettleTime:" or "BST:" option specifies the Bus Settle Time in
|
||||
seconds. The Bus Settle Time is the amount of time to wait between a Host
|
||||
Adapter Hard Reset which initiates a SCSI Bus Reset and issuing any SCSI
|
||||
Commands. If unspecified, it defaults to BusLogic_DefaultBusSettleTime.
|
||||
|
||||
InhibitTargetInquiry
|
||||
|
||||
The "InhibitTargetInquiry" option inhibits the execution of an Inquire
|
||||
Target Devices or Inquire Installed Devices command on MultiMaster Host
|
||||
Adapters. This may be necessary with some older Target Devices that do not
|
||||
respond correctly when Logical Units above 0 are addressed.
|
||||
|
||||
The BusLogic Driver Debugging Options comprise the following:
|
||||
|
||||
TraceProbe
|
||||
|
||||
The "TraceProbe" option enables tracing of Host Adapter Probing.
|
||||
|
||||
TraceHardwareReset
|
||||
|
||||
The "TraceHardwareReset" option enables tracing of Host Adapter Hardware
|
||||
Reset.
|
||||
|
||||
TraceConfiguration
|
||||
|
||||
The "TraceConfiguration" option enables tracing of Host Adapter
|
||||
Configuration.
|
||||
|
||||
TraceErrors
|
||||
|
||||
The "TraceErrors" option enables tracing of SCSI Commands that return an
|
||||
error from the Target Device. The CDB and Sense Data will be printed for
|
||||
each SCSI Command that fails.
|
||||
|
||||
Debug
|
||||
|
||||
The "Debug" option enables all debugging options.
|
||||
|
||||
The following examples demonstrate setting the Queue Depth for Target Devices
|
||||
1 and 2 on the first host adapter to 7 and 15, the Queue Depth for all Target
|
||||
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 BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30
|
||||
|
||||
LILO Linux Boot Loader (in /etc/lilo.conf):
|
||||
|
||||
append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"
|
||||
|
||||
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
|
||||
of driver options containing commas.
|
||||
|
||||
|
||||
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:
|
||||
|
||||
cd /usr/src
|
||||
tar -xvzf BusLogic-2.0.15.tar.gz
|
||||
mv README.* LICENSE.* BusLogic.[ch] FlashPoint.c linux/drivers/scsi
|
||||
patch -p0 < BusLogic.patch (only for 2.0.33 and below)
|
||||
cd linux
|
||||
make config
|
||||
make zImage
|
||||
|
||||
Then install "arch/i386/boot/zImage" as your standard kernel, run lilo if
|
||||
appropriate, and reboot.
|
||||
|
||||
|
||||
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
|
||||
for BusLogic SCSI Host Adapters. To join the mailing list, send a message to
|
||||
"buslogic-announce-request@dandelion.com" with the line "subscribe" in the
|
||||
message body.
|
2023
Documentation/scsi/ChangeLog.1992-1997
Arquivo normal
2023
Documentation/scsi/ChangeLog.1992-1997
Arquivo normal
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
122
Documentation/scsi/ChangeLog.ips
Arquivo normal
122
Documentation/scsi/ChangeLog.ips
Arquivo normal
@@ -0,0 +1,122 @@
|
||||
IBM ServeRAID driver Change Log
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
5.00.01 - Sarasota ( 5i ) adapters must always be scanned first
|
||||
- Get rid on IOCTL_NEW_COMMAND code
|
||||
- Add Extended DCDB Commands for Tape Support in 5I
|
||||
|
||||
4.90.11 - Don't actually RESET unless it's physically required
|
||||
- Remove unused compile options
|
||||
|
||||
4.90.08 - Data Corruption if First Scatter Gather Element is > 64K
|
||||
|
||||
4.90.08 - Increase Delays in Flashing ( Trombone Only - 4H )
|
||||
|
||||
4.90.05 - Use New PCI Architecture to facilitate Hot Plug Development
|
||||
|
||||
4.90.01 - Add ServeRAID Version Checking
|
||||
|
||||
4.80.26 - Clean up potential code problems ( Arjan's recommendations )
|
||||
|
||||
4.80.21 - Change memcpy() to copy_to_user() in NVRAM Page 5 IOCTL path
|
||||
|
||||
4.80.20 - Set max_sectors in Scsi_Host structure ( if >= 2.4.7 kernel )
|
||||
- 5 second delay needed after resetting an i960 adapter
|
||||
|
||||
4.80.14 - Take all semaphores off stack
|
||||
- Clean Up New_IOCTL path
|
||||
|
||||
4.80.04 - Eliminate calls to strtok() if 2.4.x or greater
|
||||
- Adjustments to Device Queue Depth
|
||||
|
||||
4.80.00 - Make ia64 Safe
|
||||
|
||||
4.72.01 - I/O Mapped Memory release ( so "insmod ips" does not Fail )
|
||||
- Don't Issue Internal FFDC Command if there are Active Commands
|
||||
- Close Window for getting too many IOCTL's active
|
||||
|
||||
4.72.00 - Allow for a Scatter-Gather Element to exceed MAX_XFER Size
|
||||
|
||||
4.71.00 - Change all memory allocations to not use GFP_DMA flag
|
||||
- Code Clean-Up for 2.4.x kernel
|
||||
|
||||
4.70.15 - Fix Breakup for very large ( non-SG ) requests
|
||||
|
||||
4.70.13 - Don't release HA Lock in ips_next() until SC taken off queue
|
||||
- Unregister SCSI device in ips_release()
|
||||
- Don't Send CDB's if we already know the device is not present
|
||||
|
||||
4.70.12 - Corrective actions for bad controller ( during initialization )
|
||||
|
||||
4.70.09 - Use a Common ( Large Buffer ) for Flashing from the JCRM CD
|
||||
- Add IPSSEND Flash Support
|
||||
- Set Sense Data for Unknown SCSI Command
|
||||
- Use Slot Number from NVRAM Page 5
|
||||
- Restore caller's DCDB Structure
|
||||
|
||||
4.20.14 - Update patch files for kernel 2.4.0-test5
|
||||
|
||||
4.20.13 - Fix some failure cases / reset code
|
||||
- Hook into the reboot_notifier to flush the controller
|
||||
cache
|
||||
|
||||
4.20.03 - Rename version to coincide with new release schedules
|
||||
- Performance fixes
|
||||
- Fix truncation of /proc files with cat
|
||||
- Merge in changes through kernel 2.4.0test1ac21
|
||||
|
||||
4.10.13 - Fix for dynamic unload and proc file system
|
||||
|
||||
4.10.00 - Add support for ServeRAID 4M/4L
|
||||
|
||||
4.00.06 - Fix timeout with initial FFDC command
|
||||
|
||||
4.00.05 - Remove wish_block from init routine
|
||||
- Use linux/spinlock.h instead of asm/spinlock.h for kernels
|
||||
2.3.18 and later
|
||||
- Sync with other changes from the 2.3 kernels
|
||||
|
||||
4.00.04 - Rename structures/constants to be prefixed with IPS_
|
||||
|
||||
4.00.03 - Add alternative passthru interface
|
||||
- Add ability to flash ServeRAID BIOS
|
||||
|
||||
4.00.02 - Fix problem with PT DCDB with no buffer
|
||||
|
||||
4.00.01 - Add support for First Failure Data Capture
|
||||
|
||||
4.00.00 - Add support for ServeRAID 4
|
||||
|
||||
3.60.02 - Make DCDB direction based on lookup table.
|
||||
- Only allow one DCDB command to a SCSI ID at a time.
|
||||
|
||||
3.60.01 - Remove bogus error check in passthru routine.
|
||||
|
||||
3.60.00 - Bump max commands to 128 for use with ServeRAID
|
||||
firmware 3.60.
|
||||
- Change version to 3.60 to coincide with ServeRAID release
|
||||
numbering.
|
||||
|
||||
1.00.00 - Initial Public Release
|
||||
- Functionally equivalent to 0.99.05
|
||||
|
||||
0.99.05 - Fix an oops on certain passthru commands
|
||||
|
||||
0.99.04 - Fix race condition in the passthru mechanism
|
||||
-- this required the interface to the utilities to change
|
||||
- Fix error recovery code
|
||||
|
||||
0.99.03 - Make interrupt routine handle all completed request on the
|
||||
adapter not just the first one
|
||||
- Make sure passthru commands get woken up if we run out of
|
||||
SCBs
|
||||
- Send all of the commands on the queue at once rather than
|
||||
one at a time since the card will support it.
|
||||
|
||||
0.99.02 - Added some additional debug statements to print out
|
||||
errors if an error occurs while trying to read/write
|
||||
to a logical drive (IPS_DEBUG).
|
||||
|
||||
- Fixed read/write errors when the adapter is using an
|
||||
8K stripe size.
|
||||
|
349
Documentation/scsi/ChangeLog.megaraid
Arquivo normal
349
Documentation/scsi/ChangeLog.megaraid
Arquivo normal
@@ -0,0 +1,349 @@
|
||||
Release Date : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
|
||||
Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
|
||||
Older Version : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)
|
||||
|
||||
1. Modified name of two attributes in scsi_host_template.
|
||||
On Wed, 2005-02-02 at 10:56 -0500, Ju, Seokmann wrote:
|
||||
> + .sdev_attrs = megaraid_device_attrs,
|
||||
> + .shost_attrs = megaraid_class_device_attrs,
|
||||
|
||||
These are, perhaps, slightly confusing names.
|
||||
The terms device and class_device have well defined meanings in the
|
||||
generic device model, neither of which is what you mean here.
|
||||
Why not simply megaraid_sdev_attrs and megaraid_shost_attrs?
|
||||
|
||||
Other than this, it looks fine to me too.
|
||||
|
||||
Release Date : Thu Jan 27 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.4.4 (scsi module), 2.20.2.5 (cmm module)
|
||||
Older Version : 2.20.4.3 (scsi module), 2.20.2.4 (cmm module)
|
||||
|
||||
1. Bump up the version of scsi module due to its conflict.
|
||||
|
||||
Release Date : Thu Jan 21 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.4.3 (scsi module), 2.20.2.5 (cmm module)
|
||||
Older Version : 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)
|
||||
|
||||
1. Remove driver ioctl for logical drive to scsi address translation and
|
||||
replace with the sysfs attribute. To remove drives and change
|
||||
capacity, application shall now use the device attribute to get the
|
||||
logical drive number for a scsi device. For adding newly created
|
||||
logical drives, class device attribute would be required to uniquely
|
||||
identify each controller.
|
||||
- Atul Mukker <atulm@lsil.com>
|
||||
|
||||
"James, I've been thinking about this a little more, and you may be on
|
||||
to something here. Let each driver add files as such:"
|
||||
|
||||
- Matt Domsch <Matt_Domsch@dell.com>, 12.15.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
|
||||
"Then, if you simply publish your LD number as an extra parameter of
|
||||
the device, you can look through /sys to find it."
|
||||
|
||||
- James Bottomley <James.Bottomley@SteelEye.com>, 01.03.2005
|
||||
linux-scsi mailing list
|
||||
|
||||
|
||||
"I don't see why not ... it's your driver, you can publish whatever
|
||||
extra information you need as scsi_device attributes; that was one of
|
||||
the designs of the extensible attribute system."
|
||||
|
||||
- James Bottomley <James.Bottomley@SteelEye.com>, 01.06.2005
|
||||
linux-scsi mailing list
|
||||
|
||||
2. Add AMI megaraid support - Brian King <brking@charter.net>
|
||||
PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
|
||||
PCI_VENDOR_ID_AMI, PCI_SUBSYS_ID_PERC3_DC,
|
||||
|
||||
3. Make some code static - Adrian Bunk <bunk@stusta.de>
|
||||
Date: Mon, 15 Nov 2004 03:14:57 +0100
|
||||
|
||||
The patch below makes some needlessly global code static.
|
||||
-wait_queue_head_t wait_q;
|
||||
+static wait_queue_head_t wait_q;
|
||||
|
||||
Signed-off-by: Adrian Bunk <bunk@stusta.de>
|
||||
|
||||
4. Added NEC ROMB support - NEC MegaRAID PCI Express ROMB controller
|
||||
PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_MEGARAID_NEC_ROMB_2E,
|
||||
PCI_SUBSYS_ID_NEC, PCI_SUBSYS_ID_MEGARAID_NEC_ROMB_2E,
|
||||
|
||||
5. Fixed Tape drive issue : For any Direct CDB command to physical device
|
||||
including tape, timeout value set by driver was 10 minutes. With this
|
||||
value, most of command will return within timeout. However, for those
|
||||
command like ERASE or FORMAT, it takes more than an hour depends on
|
||||
capacity of the device and the command could be terminated before it
|
||||
completes.
|
||||
To address this issue, the 'timeout' field in the DCDB command will
|
||||
have NO TIMEOUT (i.e., 4) value as its timeout on DCDB command.
|
||||
|
||||
|
||||
|
||||
Release Date : Thu Dec 9 19:10:23 EST 2004
|
||||
- Sreenivas Bagalkote <sreenib@lsil.com>
|
||||
|
||||
Current Version : 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)
|
||||
Older Version : 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)
|
||||
|
||||
i. Introduced driver ioctl that returns scsi address for a given ld.
|
||||
|
||||
"Why can't the existing sysfs interfaces be used to do this?"
|
||||
- Brian King (brking@us.ibm.com)
|
||||
|
||||
"I've looked into solving this another way, but I cannot see how
|
||||
to get this driver-private mapping of logical drive number-> HCTL
|
||||
without putting code something like this into the driver."
|
||||
|
||||
"...and by providing a mapping a function to userspace, the driver
|
||||
is free to change its mapping algorithm in the future if necessary .."
|
||||
- Matt Domsch (Matt_Domsch@dell.com)
|
||||
|
||||
Release Date : Thu Dec 9 19:02:14 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
|
||||
|
||||
Current Version : 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)
|
||||
Older Version : 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)
|
||||
|
||||
i. Fix a bug in kioc's dma buffer deallocation
|
||||
|
||||
Release Date : Thu Nov 4 18:24:56 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
|
||||
|
||||
Current Version : 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)
|
||||
Older Version : 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)
|
||||
|
||||
i. Handle IOCTL cmd timeouts more properly.
|
||||
|
||||
ii. pci_dma_sync_{sg,single}_for_cpu was introduced into megaraid_mbox
|
||||
incorrectly (instead of _for_device). Changed to appropriate
|
||||
pci_dma_sync_{sg,single}_for_device.
|
||||
|
||||
Release Date : Wed Oct 06 11:15:29 EDT 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
|
||||
Current Version : 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)
|
||||
Older Version : 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)
|
||||
|
||||
i. Remove CONFIG_COMPAT around register_ioctl32_conversion
|
||||
|
||||
Release Date : Mon Sep 27 22:15:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)
|
||||
Older Version : 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)
|
||||
|
||||
i. Fix data corruption. Because of a typo in the driver, the IO packets
|
||||
were wrongly shared by the ioctl path. This causes a whole IO command
|
||||
to be replaced by an incoming ioctl command.
|
||||
|
||||
Release Date : Tue Aug 24 09:43:35 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)
|
||||
Older Version : 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)
|
||||
|
||||
i. Function reordering so that inline functions are defined before they
|
||||
are actually used. It is now mandatory for GCC 3.4.1 (current stable)
|
||||
|
||||
Declare some heavy-weight functions to be non-inlined,
|
||||
megaraid_mbox_build_cmd, megaraid_mbox_runpendq,
|
||||
megaraid_mbox_prepare_pthru, megaraid_mbox_prepare_epthru,
|
||||
megaraid_busywait_mbox
|
||||
|
||||
- Andrew Morton <akpm@osdl.org>, 08.19.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
"Something else to clean up after inclusion: every instance of an
|
||||
inline function is actually rendered as a full function call, because
|
||||
the function is always used before it is defined. Atul, please
|
||||
re-arrange the code to eliminate the need for most (all) of the
|
||||
function prototypes at the top of each file, and define (not just
|
||||
declare with a prototype) each inline function before its first use"
|
||||
|
||||
- Matt Domsch <Matt_Domsch@dell.com>, 07.27.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
|
||||
ii. Display elapsed time (countdown) while waiting for FW to boot.
|
||||
|
||||
iii. Module compilation reorder in Makefile so that unresolved symbols do
|
||||
not occur when driver is compiled non-modular.
|
||||
|
||||
Patrick J. LoPresti <patl@users.sourceforge.net>, 8.22.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
|
||||
Release Date : Thu Aug 19 09:58:33 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)
|
||||
Older Version : 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)
|
||||
|
||||
i. When copying the mailbox packets, copy only first 14 bytes (for 32-bit
|
||||
mailboxes) and only first 22 bytes (for 64-bit mailboxes). This is to
|
||||
avoid getting the stale values for busy bit. We want to set the busy
|
||||
bit just before issuing command to the FW.
|
||||
|
||||
ii. In the reset handling, if the reseted command is not owned by the
|
||||
driver, do not (wrongly) print information for the "attached" driver
|
||||
packet.
|
||||
|
||||
iii. Have extended wait when issuing command in synchronous mode. This is
|
||||
required for the cases where the option ROM is disabled and there is
|
||||
no BIOS to start the controller. The FW starts to boot after receiving
|
||||
the first command from the driver. The current driver has 1 second
|
||||
timeout for the synchronous commands, which is far less than what is
|
||||
actually required. We now wait up to MBOX_RESET_TIME (180 seconds) for
|
||||
FW boot process.
|
||||
|
||||
iv. In megaraid_mbox_product_info, clear the mailbox contents completely
|
||||
before preparing the command for inquiry3. This is to ensure that the
|
||||
FW does not get junk values in the command.
|
||||
|
||||
v. Do away with the redundant LSI_CONFIG_COMPAT redefinition for
|
||||
CONFIG_COMPAT. Replace <asm/ioctl32.h> with <linux/ioctl32.h>
|
||||
|
||||
- James Bottomley <James.Bottomley@SteelEye.com>, 08.17.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
vi. Add support for 64-bit applications. Current drivers assume only
|
||||
32-bit applications, even on 64-bit platforms. Use the "data" and
|
||||
"buffer" fields of the mimd_t structure, instead of embedded 32-bit
|
||||
addresses in application mailbox and passthru structures.
|
||||
|
||||
vii. Move the function declarations for the management module from
|
||||
megaraid_mm.h to megaraid_mm.c
|
||||
|
||||
- Andrew Morton <akpm@osdl.org>, 08.19.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
viii. Change default values for MEGARAID_NEWGEN, MEGARAID_MM, and
|
||||
MEGARAID_MAILBOX to 'n' in Kconfig.megaraid
|
||||
|
||||
- Andrew Morton <akpm@osdl.org>, 08.19.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
ix. replace udelay with msleep
|
||||
|
||||
x. Typos corrected in comments and whitespace adjustments, explicit
|
||||
grouping of expressions.
|
||||
|
||||
|
||||
Release Date : Fri Jul 23 15:22:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)
|
||||
Older Version : 2.20.1.0 (scsi module), 2.20.0.0 (cmm module)
|
||||
|
||||
i. Add PCI ids for Acer ROMB 2E solution
|
||||
|
||||
ii. Add PCI ids for I4
|
||||
|
||||
iii. Typo corrected for subsys id for megaraid sata 300-4x
|
||||
|
||||
iv. Remove yield() while mailbox handshake in synchronous commands
|
||||
|
||||
|
||||
"My other main gripe is things like this:
|
||||
|
||||
+ // wait for maximum 1 second for status to post
|
||||
+ for (i = 0; i < 40000; i++) {
|
||||
+ if (mbox->numstatus != 0xFF) break;
|
||||
+ udelay(25); yield();
|
||||
+ }
|
||||
|
||||
which litter the driver. Use of yield() in drivers is deprecated."
|
||||
|
||||
- James Bottomley <James.Bottomley@SteelEye.com>, 07.14.2004
|
||||
linux-scsi mailing list
|
||||
|
||||
v. Remove redundant __megaraid_busywait_mbox routine
|
||||
|
||||
vi. Fix bug in the managment module, which causes a system lockup when the
|
||||
IO module is loaded and then unloaded, followed by executing any
|
||||
management utility. The current version of management module does not
|
||||
handle the adapter unregister properly.
|
||||
|
||||
Specifically, it still keeps a reference to the unregistered
|
||||
controllers. To avoid this, the static array adapters has been
|
||||
replaced by a dynamic list, which gets updated every time an adapter
|
||||
is added or removed.
|
||||
|
||||
Also, during unregistration of the IO module, the resources are
|
||||
now released in the exact reverse order of the allocation time
|
||||
sequence.
|
||||
|
||||
|
||||
Release Date : Fri Jun 25 18:58:43 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.1.0
|
||||
Older Version : megaraid 2.20.0.1
|
||||
|
||||
i. Stale list pointer in adapter causes kernel panic when module
|
||||
megaraid_mbox is unloaded
|
||||
|
||||
|
||||
Release Date : Thu Jun 24 20:37:11 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.0.1
|
||||
Older Version : megaraid 2.20.0.00
|
||||
|
||||
i. Modules are not 'y' by default, but depend on current definition of
|
||||
SCSI & PCI.
|
||||
|
||||
ii. Redundant structure mraid_driver_t removed.
|
||||
|
||||
iii. Miscellaneous indentation and goto/label fixes.
|
||||
- Christoph Hellwig <hch@infradead.org>, 06.24.2004 linux-scsi
|
||||
|
||||
iv. scsi_host_put(), do just before completing HBA shutdown.
|
||||
|
||||
|
||||
|
||||
Release Date : Mon Jun 21 19:53:54 EDT 2004 - Atul Mukker <atulm@lsil.com>
|
||||
Current Version : 2.20.0.0
|
||||
Older Version : megaraid 2.20.0.rc2 and 2.00.3
|
||||
|
||||
i. Independent module to interact with userland applications and
|
||||
multiplex command to low level RAID module(s).
|
||||
|
||||
"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
|
||||
|
||||
"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
|
||||
|
||||
ii. Remove C99 initializations from pci_device id.
|
||||
|
||||
"pci_id_table_g would be much more readable when not using C99
|
||||
initializers.
|
||||
PCI table doesn't change, there's lots of users that prefer the more
|
||||
readable variant. And it's really far less and much easier to grok
|
||||
lines without C99 initializers."
|
||||
|
||||
- Christoph Hellwig <hch@infradead.org>, 05.28.2004 linux-scsi
|
||||
|
||||
iii. Many fixes as suggested by Christoph Hellwig <hch@infradead.org> on
|
||||
linux-scsi, 05.28.2004
|
||||
|
||||
iv. We now support up to 32 parallel ioctl commands instead of current 1.
|
||||
There is a conscious effort to let memory allocation not fail for ioctl
|
||||
commands.
|
||||
|
||||
v. Do away with internal memory management. Use pci_pool_(create|alloc)
|
||||
instead.
|
||||
|
||||
vi. Kill tasklet when unloading the driver.
|
||||
|
||||
vii. Do not use "host_lock', driver has fine-grain locks now to protect all
|
||||
data structures.
|
||||
|
||||
viii. Optimize the build scatter-gather list routine. The callers already
|
||||
know the data transfer address and length.
|
||||
|
||||
ix. Better implementation of error handling and recovery. Driver now
|
||||
performs extended errors recovery for instances like scsi cable pull.
|
||||
|
||||
x. Disassociate the management commands with an overlaid scsi command.
|
||||
Driver now treats the management packets as special packets and has a
|
||||
dedicated callback routine.
|
495
Documentation/scsi/ChangeLog.ncr53c8xx
Arquivo normal
495
Documentation/scsi/ChangeLog.ncr53c8xx
Arquivo normal
@@ -0,0 +1,495 @@
|
||||
Sat May 12 12:00 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version ncr53c8xx-3.4.3b
|
||||
- Ensure LEDC bit in GPCNTL is cleared when reading the NVRAM.
|
||||
Fix sent by Stig Telfer <stig@api-networks.com>.
|
||||
- Define scsi_set_pci_device() as nil for kernel < 2.4.4.
|
||||
|
||||
Mon Feb 12 22:30 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version ncr53c8xx-3.4.3
|
||||
- Call pci_enable_device() as AC wants this to be done.
|
||||
- Get both the BAR cookies actual and PCI BAR values.
|
||||
(see Changelog.sym53c8xx rev. 1.7.3 for details)
|
||||
- Merge changes for linux-2.4 that declare the host template
|
||||
in the driver object also when the driver is statically
|
||||
linked with the kernel.
|
||||
|
||||
Sun Sep 24 21:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version ncr53c8xx-3.4.2
|
||||
- See Changelog.sym53c8xx, driver version 1.7.2.
|
||||
|
||||
Wed Jul 26 23:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version ncr53c8xx-3.4.1
|
||||
- Provide OpenFirmare path through the proc FS on PPC.
|
||||
- Remove trailing argument #2 from a couple of #undefs.
|
||||
|
||||
Sun Jul 09 16:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version ncr53c8xx-3.4.0
|
||||
- Remove the PROFILE C and SCRIPTS code.
|
||||
This facility was not this useful and thus was not longer
|
||||
desirable given the increasing complexity of the driver code.
|
||||
- Merges from FreeBSD sym-1.6.2 driver:
|
||||
* Clarify memory barriers needed by the driver for architectures
|
||||
that implement a weak memory ordering.
|
||||
- General cleanup:
|
||||
Move definitions for barriers and IO/MMIO operations to the
|
||||
sym53c8xx_defs.h header files. They are now shared by the
|
||||
both drivers.
|
||||
Use SCSI_NCR_IOMAPPED instead of NCR_IOMAPPED.
|
||||
|
||||
Thu May 11 12:30 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* revision 3.3b
|
||||
|
||||
Mon Apr 24 12:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2i
|
||||
- Return value 1 (instead of 0) from the driver setup routine.
|
||||
- Let the driver also attach controllers that have been set to
|
||||
OFF in the NVRAM as it did prior to revision 3.2g.
|
||||
|
||||
Sat Apr 1 12:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2h
|
||||
- Fix a compilation problem on Alpha introduced in version 3.2g.
|
||||
(`port' changed to `base_io').
|
||||
- Move from `sym' to this driver a tiny change for __sparc__ that
|
||||
applies to cache line size (? Probably from David S Miller).
|
||||
- Make sure no data transfer will happen for Scsi_Cmnd requests
|
||||
that supply SCSI_DATA_NONE direction (this avoids some BUG()
|
||||
statement in the PCI code when a data buffer is also supplied).
|
||||
|
||||
Thu Mar 16 9:30 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* revision 3.3b-3
|
||||
- Added exclusion for the 53C1010 and 53C1010_66 chips
|
||||
to the driver (change to sym53c8xx_comm.h).
|
||||
|
||||
Mon March 6 23:15 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2g
|
||||
- Add the file sym53c8xx_comm.h that collects code that should
|
||||
be shared by sym53c8xx and ncr53c8xx drivers. For now, it is
|
||||
a header file that is only included by the ncr53c8xx driver,
|
||||
but things will be cleaned up later. This code addresses
|
||||
notably:
|
||||
* Chip detection and PCI related initialisations
|
||||
* NVRAM detection and reading
|
||||
* DMA mapping
|
||||
* Boot setup command
|
||||
* And some other ...
|
||||
- Add support for the new dynamic dma mapping kernel interface.
|
||||
Requires Linux-2.3.47 (tested with pre-2.3.47-6).
|
||||
- Get data transfer direction from the scsi command structure
|
||||
(Scsi_Cmnd) when this information is available.
|
||||
|
||||
Mon March 6 23:15 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2g
|
||||
- Add the file sym53c8xx_comm.h that collects code that should
|
||||
be shared by sym53c8xx and ncr53c8xx drivers. For now, it is
|
||||
a header file that is only included by the ncr53c8xx driver,
|
||||
but things will be cleaned up later. This code addresses
|
||||
notably:
|
||||
* Chip detection and PCI related initialisations
|
||||
* NVRAM detection and reading
|
||||
* DMA mapping
|
||||
* Boot setup command
|
||||
* And some other ...
|
||||
- Add support for the new dynamic dma mapping kernel interface.
|
||||
Requires Linux-2.3.47 (tested with pre-2.3.47-6).
|
||||
- Get data transfer direction from the scsi command structure
|
||||
(Scsi_Cmnd) when this information is available.
|
||||
|
||||
Fri Jan 14 14:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* revision pre-3.3b-1
|
||||
- Merge parallel driver series 3.31 and 3.2e
|
||||
|
||||
Tue Jan 11 14:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* revision 3.31
|
||||
- Added support for mounting disks on wide-narrow-wide
|
||||
scsi configurations.
|
||||
- Built off of version 3.30
|
||||
|
||||
Mon Jan 10 13:30 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* revision 3.30
|
||||
- Added capability to use the integrity checking code
|
||||
in the kernel (optional).
|
||||
- Disabled support for the 53C1010.
|
||||
- Built off of version 3.2c
|
||||
|
||||
Sat Jan 8 22:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2e
|
||||
- Add year 2000 copyright.
|
||||
- Display correctly bus signals when bus is detected wrong.
|
||||
- Remove the dead code that broke driver 3.2d.
|
||||
|
||||
Mon Dec 6 22:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2d
|
||||
- Change messages written by the driver at initialisation and
|
||||
through the /proc FS (rather cosmetic changes that consist in
|
||||
printing out the PCI bus number and device/function).
|
||||
- Get rid of the old PCI bios interface, but preserve kernel 2.0
|
||||
compatibility from a simple wrapper.
|
||||
- Remove the compilation condition about having to acquire the
|
||||
io_request_lock since it seems to be a definite feature now.:)
|
||||
- proc_dir structure no longer needed for kernel >= 2.3.27.
|
||||
- Change the driver detection code by the sym53c8xx one, modulo
|
||||
some minor changes. The driver can now attach any number of
|
||||
controllers (>40) and does no longer hoger stack space at
|
||||
initialisation.
|
||||
- Definitely disable overlapped PCI arbitration for all dual
|
||||
function chips, since I cannot make sure for what chip revisions
|
||||
it is actually safe.
|
||||
- Add support for the SYM53C1510D.
|
||||
- Update the poor Tekram sync factor table.
|
||||
- Remove the compilation condition about having to acquire the
|
||||
io_request_lock since it seems to be a definite feature now.:)
|
||||
- proc_dir structure no longer needed for kernel >= 2.3.27.
|
||||
|
||||
Sat Sep 11 18:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2c
|
||||
- Handle correctly (hopefully) jiffies wrap-around.
|
||||
- Restore the entry used to detect 875 until revision 0xff.
|
||||
(I removed it inadvertently, it seems :) )
|
||||
- Replace __initfunc() which is deprecated stuff by __init which
|
||||
is not yet so. ;-)
|
||||
- Add support of some 'resource handling' for linux-2.3.13.
|
||||
Basically the BARs have been changed to something more complex
|
||||
in the pci_dev structure.
|
||||
- Remove some deprecated code.
|
||||
|
||||
Sat May 10 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision pre-3.2b-1
|
||||
- Support for the 53C895A by Pamela Delaney <pam.delaney@lsil.com>
|
||||
The 53C895A contains all of the features of the 896 but has only
|
||||
one channel and has a 32 bit PCI bus. It does 64 bit PCI addressing
|
||||
using dual cycle PCI data transfers.
|
||||
- Miscellaneous minor fixes.
|
||||
- Some additions to the README.ncr53c8xx file.
|
||||
|
||||
Sun Apr 11 10:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2a
|
||||
- Add 'hostid:#id' boot option. This option allows to change the
|
||||
default SCSI id the driver uses for controllers.
|
||||
- Remove nvram layouts and driver set-up structures from the C source,
|
||||
and use the one defined in sym53c8xx_defs.h file.
|
||||
(shared by both drivers).
|
||||
- Set for now MAX LUNS to 16 (instead of 8).
|
||||
|
||||
Thu Mar 11 23:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.2 (8xx-896 driver bundle)
|
||||
- Only define the host template in ncr53c8xx.h and include the
|
||||
sym53c8xx_defs.h file.
|
||||
- Declare static all symbols that do not need to be visible from
|
||||
outside the driver code.
|
||||
- Add 'excl' boot command option that allows to pass to the driver
|
||||
io address of devices not to attach.
|
||||
- Add info() function called from the host template to print
|
||||
driver/host information.
|
||||
- Minor documentation additions.
|
||||
|
||||
Sat Mar 6 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1h
|
||||
- Fix some oooold bug that hangs the bus if a device rejects a
|
||||
negotiation. Btw, the corresponding stuff also needed some cleanup
|
||||
and thus the change is a bit larger than it could have been.
|
||||
- Still some typo that made compilation fail for 64 bit (trivial fix).
|
||||
|
||||
Sun Feb 14:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1g
|
||||
- Deal correctly with 64 bit PCI address registers on Linux 2.2.
|
||||
Pointed out by Leonard Zubkoff.
|
||||
- Allow to tune request_irq() flags from the boot command line using
|
||||
ncr53c8xx=irqm:??, as follows:
|
||||
a) If bit 0x10 is set in irqm, SA_SHIRQ flag is not used.
|
||||
b) If bit 0x20 is set in irqm, SA_INTERRUPT flag is not used.
|
||||
By default the driver uses both SA_SHIRQ and SA_INTERRUPT.
|
||||
Option 'ncr53c8xx=irqm:0x20' may be used when an IRQ is shared by
|
||||
a 53C8XX adapter and a network board.
|
||||
- Tiny mispelling fixed (ABORT instead of ABRT). Was fortunately
|
||||
harmless.
|
||||
- Negotiate SYNC data transfers with CCS devices.
|
||||
|
||||
Sat Jan 16 17:30 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1f
|
||||
- Some PCI fix-ups not needed any more for PPC (from Cort).
|
||||
- Cache line size set to 16 DWORDS for Sparc (from DSM).
|
||||
- Waiting list look-up didn't work for the first command of the list.
|
||||
- Remove 2 useless lines of code.
|
||||
|
||||
Sun Dec 13 18:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1e
|
||||
- Same work-around as for the 53c876 rev <= 0x15 for 53c896 rev 1:
|
||||
Disable overlapped arbitration. This will not make difference
|
||||
since the chip has on-chip RAM.
|
||||
|
||||
Thu Nov 26 22:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1d
|
||||
- The SISL RAID change requires now remap_pci_mem() stuff to be
|
||||
compiled for __i386__ when normal IOs are used.
|
||||
- Minor spelling fixes in doc files.
|
||||
|
||||
Sat Nov 21 18:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1c
|
||||
- Ignore chips that are driven by SISL RAID (DAC 960).
|
||||
Change sent by Leonard Zubkoff and slightly reworked.
|
||||
- Still a buglet in the tags initial settings that needed to be fixed.
|
||||
It was not possible to disable TGQ at system startup for devices
|
||||
that claim TGQ support. The driver used at least 2 for the queue
|
||||
depth but did'nt keep track of user settings for tags depth lower
|
||||
than 2.
|
||||
|
||||
Wed Nov 11 10:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1b
|
||||
- The driver was unhappy when configured with default_tags > MAX_TAGS
|
||||
Hopefully doubly-fixed.
|
||||
- Update the Configure.help driver section that speaks of TAGS.
|
||||
|
||||
Wed Oct 21 21:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.1a
|
||||
- Changes from Eddie Dost for Sparc and Alpha:
|
||||
ioremap/iounmap support for Sparc.
|
||||
pcivtophys changed to bus_dvma_to_phys.
|
||||
- Add the 53c876 description to the chip table. This is only useful
|
||||
for printing the right name of the controller.
|
||||
- DEL-441 Item 2 work-around for the 53c876 rev <= 5 (0x15).
|
||||
- Add additional checking of INQUIRY data:
|
||||
Check INQUIRY data received length is at least 7. Byte 7 of
|
||||
inquiry data contains device features bits and the driver might
|
||||
be confused by garbage. Also check peripheral qualifier.
|
||||
- Cleanup of the SCSI tasks management:
|
||||
Remove the special case for 32 tags. Now the driver only uses the
|
||||
scheme that allows up to 64 tags per LUN.
|
||||
Merge some code from the 896 driver.
|
||||
Use a 1,3,5,...MAXTAGS*2+1 tag numbering. Previous driver could
|
||||
use any tag number from 1 to 253 and some non conformant devices
|
||||
might have problems with large tag numbers.
|
||||
- 'no_sync' changed to 'no_disc' in the README file. This is an old
|
||||
and trivial mistake that seems to demonstrate the README file is
|
||||
not often read. :)
|
||||
|
||||
Sun Oct 4 14:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0i
|
||||
- Cosmetic changes for sparc (but not for the driver) that needs
|
||||
__irq_itoa() to be used for printed IRQ value to be understandable.
|
||||
- Some problems with the driver that didn't occur using driver 2.5f
|
||||
were due to a SCSI selection problem triggered by a clearly
|
||||
documented feature that in fact seems not to work: (53C8XX chips
|
||||
are claimed by the manuals to be able to execute SCSI scripts just
|
||||
after abitration while the SCSI core is performing SCSI selection).
|
||||
This optimization is broken and has been removed.
|
||||
- Some broken scsi devices are confused when a negotiation is started
|
||||
on a LUN that does not correspond to a real device. According to
|
||||
SCSI specs, this is a device firmware bug. This has been worked
|
||||
around by only starting negotiation if the LUN has previously be
|
||||
used for at least 1 successful SCSI command.
|
||||
- The 'last message sent' printed out on M_REJECT message reception
|
||||
was read from the SFBR i/o register after the previous message had
|
||||
been sent.
|
||||
This was not correct and affects all previous driver versions and
|
||||
the original FreeBSD one as well. The SCSI scripts has been fixed
|
||||
so that it now provides the right information to the C code.
|
||||
|
||||
Sat Jul 18 13:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0g
|
||||
- Preliminary fixes for Big Endian (sent by Eddie C. Dost).
|
||||
Big Endian architectures should work again with the driver.
|
||||
Eddie's patch has been partially applied since current 2.1.109
|
||||
does not have all the Sparc changes of the vger tree.
|
||||
- Use of BITS_PER_LONG instead of (~0UL == 0xffffffffUL) has fixed
|
||||
the problem observed when the driver was compiled using EGCS or
|
||||
PGCC.
|
||||
|
||||
Mon Jul 13 20:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0f
|
||||
- Some spelling fixes.
|
||||
- linux/config.h misplaced in ncr53c8xx.h
|
||||
- MODULE_PARM stuff added for linux 2.1.
|
||||
- check INQUIRY response data format is exactly 2.
|
||||
- use BITS_PER_LONG if defined.
|
||||
|
||||
Sun Jun 28 12:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0e
|
||||
- Some cleanup, spelling fixes, version checks, documentations
|
||||
changes, etc ...
|
||||
|
||||
Sat Jun 20 20:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0c
|
||||
- Add a boot setup option that allows to set up device queue depths
|
||||
at boot-up. This option is very useful since Linux does not
|
||||
allow to change scsi device queue depth once the system has been
|
||||
booted up.
|
||||
|
||||
Sun Jun 15 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0a
|
||||
- Support for up to 64 TAGS per LUN.
|
||||
- Rewrite the TARGET vs LUN capabilities management.
|
||||
CmdQueue is now handled as a LUN capability as it shall be.
|
||||
This also fixes a bug triggered when disabling tagged command
|
||||
queuing for a device that had this feature enabled.
|
||||
- Remove the ncr_opennings() stuff that was useless under Linux
|
||||
and hard to understand to me.
|
||||
- Add "setverbose" procfs driver command. It allows to tune
|
||||
verbose level after boot-up. Setting this level to zero, for
|
||||
example avoid flooding the syslog file.
|
||||
- Add KERN_XXX to some printk's.
|
||||
|
||||
Tue Jun 10 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 3.0
|
||||
- Linux config changes for 2.0.34:
|
||||
Remove NVRAM detection config option. This option is now enabled
|
||||
by default but can be disabled by editing the driver header file.
|
||||
Add a PROFILE config option.
|
||||
- Update Configure.help
|
||||
- Add calls to new function mdelay() for milli-seconds delay if
|
||||
kernel version >= 2.1.105.
|
||||
- Replace all printf(s) by printk(s). After all, the ncr53c8xx is
|
||||
a driver for Linux.
|
||||
- Perform auto-sense on COMMAND TERMINATED. Not sure it is useful.
|
||||
- Some other minor changes.
|
||||
|
||||
Tue Jun 4 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6n
|
||||
- Code cleanup and simplification:
|
||||
Remove kernel 1.2.X and 1.3.X support.
|
||||
Remove the _old_ target capabilities table.
|
||||
Remove the error recovery code that have'nt been really useful.
|
||||
Use a single alignment boundary (CACHE_LINE_SIZE) for data
|
||||
structures.
|
||||
- Several aggressive SCRIPTS optimizations and changes:
|
||||
Reselect SCRIPTS code rewritten.
|
||||
Support for selection/reselection without ATN.
|
||||
And some others.
|
||||
- Miscallaneous changes in the C code:
|
||||
Count actual number of CCB queued to the controller (future use).
|
||||
Lots of other minor changes.
|
||||
|
||||
Wed May 13 20:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6m
|
||||
- Problem of missed SCSI bus reset with the 53C895 fixed by
|
||||
Richard Waltham. The 53C895 needs about 650 us for the bus
|
||||
mode to settle. Delays used while resetting the controller
|
||||
and the bus have been adjusted. Thanks Richard!
|
||||
- Some simplification for 64 bit arch done ccb address testing.
|
||||
- Add a check of the MSG_OUT phase after Selection with ATN.
|
||||
- The new tagged queue stuff seems ok, so some informationnal
|
||||
message have been conditionned by verbose >= 3.
|
||||
- Donnot reset if a SBMC interrupt reports the same bus mode.
|
||||
- Print out the whole driver set-up. Some options were missing and
|
||||
the print statement was misplaced for modules.
|
||||
- Ignore a SCSI parity interrupt if the chip is not connected to
|
||||
the SCSI bus.
|
||||
|
||||
Sat May 1 16:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6l
|
||||
- Add CCB done queue support for Alpha and perhaps some other
|
||||
architectures.
|
||||
- Add some barriers to enforce memory ordering for x86 and
|
||||
Alpha architectures.
|
||||
- Fix something that looks like an old bug in the nego SIR
|
||||
interrupt code in case of negotiation failure.
|
||||
|
||||
Sat Apr 25 21:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6k
|
||||
- Remove all accesses to the on-chip RAM from the C code:
|
||||
Use SCRIPTS to load the on-chip RAM.
|
||||
Use SCRIPTS to repair the start queue on selection timeout.
|
||||
Use the copy of script in main memory to calculate the chip
|
||||
context on phase mismatch.
|
||||
- The above allows now to use the on-chip RAM without requiring
|
||||
to get access to the on-chip RAM from the C code. This makes
|
||||
on-chip RAM useable for linux-1.2.13 and for Linux-Alpha for
|
||||
instance.
|
||||
- Some simplifications and cleanups in the SCRIPTS and C code.
|
||||
- Buglet fixed in parity error recovery SCRIPTS (never tested).
|
||||
- Minor updates in README.ncr53c8xx.
|
||||
|
||||
Wed Apr 15 21:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6j
|
||||
- Incorporate changes from linux-2.1.95 ncr53c8xx driver version.
|
||||
- Add SMP support for linux-2.1.95 and above.
|
||||
- Fix a bug when QUEUE FULL is returned and no commands are
|
||||
disconnected. This happens with Atlas I / L912 and may happen
|
||||
with Atlas II / LXY4.
|
||||
- Nail another one on CHECK condition when requeuing the command
|
||||
for auto-sense.
|
||||
- Call scsi_done() for all completed commands after interrupt
|
||||
handling.
|
||||
- Increase the done queue to 24 entries.
|
||||
|
||||
Sat Apr 4 20:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6i
|
||||
- CTEST0 is used by the 53C885 for Power Management and
|
||||
priority setting between the 2 functions.
|
||||
Use SDID instead as actual target number. Just have had to
|
||||
overwrite it with SSID on reselection.
|
||||
- Split DATA_IN and DATA_OUT scripts into 2 sub-scripts.
|
||||
64 segments are moved from on-chip RAM scripts.
|
||||
If more segments, a script in main memory is used for the
|
||||
additional segments.
|
||||
- Since the SCRIPTS processor continues SCRIPTS execution after
|
||||
having won arbitration, do some stuff prior to testing any SCSI
|
||||
phase on reselection. This should have the vertue to process
|
||||
scripts in parallel with the SCSI core performing selection.
|
||||
- Increase the done queue to 12 entries.
|
||||
|
||||
Sun Mar 29 12:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6h
|
||||
- Some fixes.
|
||||
|
||||
Tue Mar 26 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6g
|
||||
- New done queue. 8 entries by default (6 always useable).
|
||||
Can be increased if needed.
|
||||
- Resources management using doubly linked queues.
|
||||
- New auto-sense and QUEUE FULL handling that does not need to
|
||||
stall the NCR queue any more.
|
||||
- New CCB starvation avoiding algorithm.
|
||||
- Prepare CCBs for SCSI commands that cannot be queued, instead of
|
||||
inserting these commands into the waiting list. The waiting list
|
||||
is now only used while resetting and when memory for CCBs is not
|
||||
yet available?
|
||||
|
||||
Sun Feb 8 22:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6f
|
||||
- Some fixes in order to really support the 53C895, at least with
|
||||
FAST-20 devices.
|
||||
- Heavy changes in the target/lun resources management to allow
|
||||
the scripts to jump directly to the CCB on reselection instead
|
||||
of walking on the lun CCBs list. Up to 32 tags per lun are now
|
||||
supported without script processor and PCI traffic overhead.
|
||||
|
||||
Sun Jan 11 22:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* revision 2.6d
|
||||
- new (different ?) implementation of the start queue:
|
||||
Use a simple CALL to a launch script in the CCB.
|
||||
- implement a minimal done queue (1 entry :-) ).
|
||||
this avoid scanning all CCBs on INT FLY (Only scan all CCBs, on
|
||||
overflow). Hit ratio is better than 99.9 % on my system, so no
|
||||
need to have a larger done queue.
|
||||
- generalization of the restart of CCB on special condition as
|
||||
Abort, QUEUE FULL, CHECK CONDITION.
|
||||
This has been called 'silly scheduler'.
|
||||
- make all the profiling code conditionned by a config option.
|
||||
This spare some PCI traffic and C code when this feature is not
|
||||
needed.
|
||||
- handle more cleanly the situation where direction is unknown.
|
||||
The pointers patching is now performed by the SCRIPTS processor.
|
||||
- remove some useless scripts instructions.
|
||||
|
||||
Ported from driver 2.5 series:
|
||||
------------------------------
|
||||
- Use FAST-5 instead of SLOW for slow scsi devices according to
|
||||
new SPI-2 draft.
|
||||
- Make some changes in order to accommodate with 875 rev <= 3
|
||||
device errata listing 397. Minor consequences are:
|
||||
. Leave use of PCI Write and Invalidate under user control.
|
||||
Now, by default the driver does not enable PCI MWI and option
|
||||
'specf:y' is required in order to enable this feature.
|
||||
. Memory Read Line is not enabled for 875 and 875-like chips.
|
||||
. Programmed burst length set to 64 DWORDS (instead of 128).
|
||||
(Note: SYMBIOS uses 32 DWORDS for the SDMS BIOS)
|
||||
- Add 'buschk' boot option.
|
||||
This option enables checking of SCSI BUS data lines after SCSI
|
||||
RESET (set by default). (Submitted by Richard Waltham).
|
||||
- Update the README file.
|
||||
- Dispatch CONDITION MET and RESERVATION CONFLICT scsi status
|
||||
as OK driver status.
|
||||
- Update the README file and the Symbios NVRAM format definition
|
||||
with removable media flags values (available with SDMS 4.09).
|
||||
- Several PCI configuration registers fix-ups for powerpc.
|
||||
(Patch sent by Cort).
|
593
Documentation/scsi/ChangeLog.sym53c8xx
Arquivo normal
593
Documentation/scsi/ChangeLog.sym53c8xx
Arquivo normal
@@ -0,0 +1,593 @@
|
||||
Sat May 12 12:00 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.3c
|
||||
- Ensure LEDC bit in GPCNTL is cleared when reading the NVRAM.
|
||||
Fix sent by Stig Telfer <stig@api-networks.com>.
|
||||
- Backport from SYM-2 the work-around that allows to support
|
||||
hardwares that fail PCI parity checking.
|
||||
- Check that we received at least 8 bytes of INQUIRY response
|
||||
for byte 7, that contains device capabilities, to be valid.
|
||||
- Define scsi_set_pci_device() as nil for kernel < 2.4.4.
|
||||
- + A couple of minor changes.
|
||||
|
||||
Sat Apr 7 19:30 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.3b
|
||||
- Fix an unaligned LOAD from scripts (was used as dummy read).
|
||||
- In ncr_soft_reset(), only try to ABORT the current operation
|
||||
for chips that support SRUN bit in ISTAT1 and if SCRIPTS are
|
||||
currently running, as 896 and 1010 manuals suggest.
|
||||
- In the CCB abort path, do not assume that the CCB is currently
|
||||
queued to SCRIPTS. This is not always true, notably after a
|
||||
QUEUE FULL status or when using untagged commands.
|
||||
|
||||
Sun Mar 4 18:30 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.3a
|
||||
- Fix an issue in the ncr_int_udc() (unexpected disconnect)
|
||||
handling. If the DSA didn't match a CCB, a bad write to
|
||||
memory could happen.
|
||||
|
||||
Mon Feb 12 22:30 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.3
|
||||
- Support for hppa.
|
||||
Tiny patch sent to me by Robert Hirst.
|
||||
- Tiny patch for ia64 sent to me by Pamela Delaney.
|
||||
|
||||
Tue Feb 6 13:30 2001 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.3-pre1
|
||||
- Call pci_enable_device() as AC wants this to be done.
|
||||
- Get both the BAR cookies used by CPU and actual PCI BAR
|
||||
values used from SCRIPTS. Recent PCI chips are able to
|
||||
access themselves using internal cycles, but they compare
|
||||
BAR values to destination address to make decision.
|
||||
Earlier chips simply use PCI transactions to access IO
|
||||
registers from SCRIPTS.
|
||||
The bus_dvma_to_mem() interface that reverses the actual
|
||||
PCI BAR value from the BAR cookie is now useless.
|
||||
This point had been discussed at the list and the solution
|
||||
got approved by PCI code maintainer (Martin Mares).
|
||||
- Merge changes for linux-2.4 that declare the host template
|
||||
in the driver object also when the driver is statically
|
||||
linked with the kernel.
|
||||
- Increase SCSI message size up to 12 bytes, given that 8
|
||||
bytes was not enough for the PPR message (fix).
|
||||
- Add field 'maxoffs_st' (max offset for ST data transfers).
|
||||
The C1010 supports offset 62 in DT mode but only 31 in
|
||||
ST mode, to 2 different values for the max SCSI offset
|
||||
are needed. Replace the obviously wrong masking of the
|
||||
offset against 0x1f for ST mode by a lowering to
|
||||
maxoffs_st of the SCSI offset in ST mode.
|
||||
- Refine a work-around for the C1010-66. Revision 1 does
|
||||
not requires extra cycles in DT DATA OUT phase.
|
||||
- Add a missing endian-ization (abrt_tbl.addr).
|
||||
- Minor clean-up in the np structure for fields accessed
|
||||
from SCRIPTS that requires special alignments.
|
||||
|
||||
Sun Sep 24 21:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.2
|
||||
- Remove the hack for PPC added in previous driver version.
|
||||
- Add FE_DAC feature bit to distinguish between 64 bit PCI
|
||||
addressing (FE_DAC) and 64 bit PCI interface (FE_64BIT).
|
||||
- Get rid of the boot command line "ultra:" argument.
|
||||
This parameter wasn't that clever since we can use "sync:"
|
||||
for Ultra/Ultra2 settings, and for Ultra3 we may want to
|
||||
pass PPR options (for now only DT clocking).
|
||||
- Add FE_VARCLK feature bit that indicates that SCSI clock
|
||||
frequency may vary depending on board design and thus,
|
||||
the driver should try to evaluate the SCSI clock.
|
||||
- Simplify the way the driver determine the SCSI clock:
|
||||
ULTRA3 -> 160 MHz, ULTRA2 -> 80 MHz otherwise 40 MHz.
|
||||
Measure the SCSI clock frequency if FE_VARCLK is set.
|
||||
- Remove FE_CLK80 feature bit that got useless.
|
||||
- Add support for the SYM53C875A (Pamela Delaney).
|
||||
|
||||
Wed Jul 26 23:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.1
|
||||
- Provide OpenFirmare path through the proc FS on PPC.
|
||||
- Download of on-chip SRAM using memcpy_toio() doesn't work
|
||||
on PPC. Restore previous method (MEMORY MOVE from SCRIPTS).
|
||||
- Remove trailing argument #2 from a couple of #undefs.
|
||||
|
||||
Sun Jul 09 16:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.7.0
|
||||
- Remove the PROFILE C and SCRIPTS code.
|
||||
This facility was not this useful and thus was not longer
|
||||
desirable given the increasing complexity of the driver code.
|
||||
- Merges from FreeBSD sym-1.6.2 driver:
|
||||
* Clarify memory barriers needed by the driver for architectures
|
||||
that implement a weak memory ordering.
|
||||
* Simpler handling of illegal phases and data overrun from
|
||||
SCRIPTS. These errors are now immediately reported to
|
||||
the C code by an interrupt.
|
||||
* Sync the residual handling code with sym-1.6.2 and now
|
||||
report `resid' to user for linux version >= 2.3.99
|
||||
- General cleanup:
|
||||
Move definitions for barriers and IO/MMIO operations to the
|
||||
sym53c8xx_defs.h header files. They are now shared by the
|
||||
both drivers.
|
||||
Remove unused options that claimed to optimize for the 896.
|
||||
If fact, they were not this clever. :)
|
||||
Use SCSI_NCR_IOMAPPED instead of NCR_IOMAPPED.
|
||||
Remove a couple of unused fields from data structures.
|
||||
|
||||
Thu May 11 12:40 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-1.6b
|
||||
- Merged version.
|
||||
|
||||
Mon Apr 24 12:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5m
|
||||
- Return value 1 (instead of 0) from the driver setup routine.
|
||||
- Do not enable PCI DAC cycles. This just broke support for
|
||||
SYM534C896 on sparc64. Problem fixed by David S. Miller.
|
||||
|
||||
Fri Apr 14 9:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-1.6b-9
|
||||
- Added 53C1010_66 support.
|
||||
- Small fix to integrity checking code.
|
||||
- Removed requirement for integrity checking if want to run
|
||||
at ultra 3.
|
||||
|
||||
Sat Apr 1 12:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5l
|
||||
- Tiny change for __sparc__ appeared in 2.3.99-pre4.1 that
|
||||
applies to cache line size (? Probably from David S Miller).
|
||||
- Make sure no data transfer will happen for Scsi_Cmnd requests
|
||||
that supply SCSI_DATA_NONE direction (this avoids some BUG()
|
||||
statement in the PCI code when a data buffer is also supplied).
|
||||
|
||||
Sat Mar 11 12:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.6b-5
|
||||
- Test against expected data transfer direction from SCRIPTS.
|
||||
- Add support for the new dynamic dma mapping kernel interface.
|
||||
Requires Linux-2.3.47 (tested with pre-2.3.47-6).
|
||||
Many thanks to David S. Miller for his preliminary changes
|
||||
that have been useful guidelines.
|
||||
- Get data transfer direction from the scsi command structure
|
||||
(Scsi_Cmnd) with kernels that provide this information.
|
||||
|
||||
Mon Mar 6 23:30 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5k
|
||||
- Test against expected data transfer direction from SCRIPTS.
|
||||
- Revert the change in 'ncr_flush_done_cmds()' but unmap the
|
||||
scsi dma buffer prior to queueing the command to our done
|
||||
list.
|
||||
- Miscellaneous (minor) fixes in the code added in driver
|
||||
version 1.5j.
|
||||
|
||||
Mon Feb 14 4:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-pre-1.6b-2.
|
||||
- Updated the SCRIPTS error handling of the SWIDE
|
||||
condition - to remove any reads of the sbdl
|
||||
register. Changes needed because the 896 and 1010
|
||||
chips will check parity in some special circumstances.
|
||||
This will cause a parity error interrupt if not in
|
||||
data phase. Changes based on those made in the
|
||||
FreeBSD driver version 1.3.2.
|
||||
|
||||
Sun Feb 20 11:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5j
|
||||
- Add support for the new dynamic dma mapping kernel interface.
|
||||
Requires Linux-2.3.47 (tested with pre-2.3.47-6).
|
||||
Many thanks to David S. Miller for his preliminary changes
|
||||
that have been useful guidelines, for having reviewed the
|
||||
code and having tested this driver version on Ultra-Sparc.
|
||||
- 2 tiny bugs fixed in the PCI wrapper that provides support
|
||||
for early kernels without pci device structure.
|
||||
- Get data transfer direction from the scsi command structure
|
||||
(Scsi_Cmnd) with kernels that provide this information.
|
||||
- Fix an old bug that only affected 896 rev. 1 when driver
|
||||
profile support option was set in kernel configuration.
|
||||
|
||||
Fri Jan 14 14:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-pre-1.6b-1.
|
||||
- Merge parallel driver series 1.61 and 1.5e
|
||||
|
||||
Tue Jan 11 14:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-1.61
|
||||
- Added support for mounting disks on wide-narrow-wide
|
||||
scsi configurations.
|
||||
- Modified offset to be a maximum of 31 in ST mode,
|
||||
62 in DT mode.
|
||||
- Based off of 1.60
|
||||
|
||||
Mon Jan 10 10:00 2000 Pam Delaney (pam.delaney@lsil.com)
|
||||
* version sym53c8xx-1.60
|
||||
- Added capability to use the integrity checking code
|
||||
in the kernel (optional).
|
||||
- Added PPR negotiation.
|
||||
- Added support for 53C1010 Ultra 3 part.
|
||||
- Based off of 1.5f
|
||||
|
||||
Sat Jan 8 22:00 2000 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5h
|
||||
- Add year 2000 copyright.
|
||||
- Display correctly bus signals when bus is detected wrong.
|
||||
- Some fix for Sparc from DSM that went directly to kernel tree.
|
||||
|
||||
Mon Dec 6 22:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5g
|
||||
- Change messages written by the driver at initialisation and
|
||||
through the /proc FS (rather cosmetic changes that consist in
|
||||
printing out the PCI bus number and PCI device/function).
|
||||
- Ensure the SCRIPTS processor is stopped while calibrating the
|
||||
SCSI clock (the initialisation code has been a bit reworked).
|
||||
Change moved to the FreeBSD sym_hipd driver).
|
||||
- Some fixes in the MODIFY_DP/IGN_RESIDUE code and residual
|
||||
calculation (moved from FreeBSD sym_hipd driver).
|
||||
- Add NVRAM support for Tekram boards that use 24C16 EEPROM.
|
||||
Code moved from the FreeBSD sym_hipd driver, since it has
|
||||
been that one that got this feature first.
|
||||
- Definitely disable overlapped PCI arbitration for all dual
|
||||
function chips, since I cannot make sure for what chip revisions
|
||||
it is actually safe.
|
||||
- Add support for the SYM53C1510D (also for ncr53c8xx).
|
||||
- Fix up properly the PCI latency timer when needed or asked for.
|
||||
- Get rid of the old PCI bios interface, but preserve kernel 2.0
|
||||
compatibility from a simple wrapper.
|
||||
- Update the poor Tekram sync factor table.
|
||||
- Fix in a tiny 'printk' bug that may oops in case of extended
|
||||
errors (unrecovered parity error, data overrun, etc ...)
|
||||
(Sent by Pamela Delaney from LSILOGIC)
|
||||
- Remove the compilation condition about having to acquire the
|
||||
io_request_lock since it seems to be a definite feature now.:)
|
||||
- Change get_pages by GetPages since Linux >= 2.3.27 now wants
|
||||
get_pages to ever be used as a kernel symbol (from 2.3.27).
|
||||
- proc_dir structure no longer needed for kernel >= 2.3.27.
|
||||
|
||||
Sun Oct 3 19:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5f
|
||||
- Change the way the driver checks the PCI clock frequency, so
|
||||
that overclocked PCI BUS up to 48 MHz will not be refused.
|
||||
The more the BUS is overclocked, the less the driver will
|
||||
guarantee that its measure of the SCSI clock is correct.
|
||||
- Backport some minor improvements of SCRIPTS from the sym_hipd
|
||||
driver.
|
||||
- Backport the code rewrite of the START QUEUE dequeuing (on
|
||||
bad scsi status received) from the sym_hipd driver.
|
||||
|
||||
Sat Sep 11 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5e
|
||||
- New linux-2.3.13 __setup scheme support added.
|
||||
- Cleanup of the extended error status handling:
|
||||
Use 1 bit per error type.
|
||||
- Also save the extended error status prior to auto-sense.
|
||||
- Add the FE_DIFF chip feature bit to indicate support of
|
||||
diff probing from GPIO3 (825/825A/876/875).
|
||||
- Remove the quirk handling that has been useless since day one.
|
||||
- Work-around PCI chips being reported twice on some platforms.
|
||||
- Add some redundant PCI reads in order to deal with common
|
||||
bridge misbehaviour regarding posted write flushing.
|
||||
- Add some other conditionnal code for people who have to deal
|
||||
with really broken bridges (they will have to edit a source
|
||||
file to try these options).
|
||||
- Handle correctly (hopefully) jiffies wrap-around.
|
||||
- Restore the entry used to detect 875 until revision 0xff.
|
||||
(I removed it inadvertently, it seems :) )
|
||||
- Replace __initfunc() which is deprecated stuff by __init which
|
||||
is not yet so. ;-)
|
||||
- Rewrite the MESSAGE IN scripts more generic by using a MOVE
|
||||
table indirect. Extended messages of any size are accepted now.
|
||||
(Size is limited to 8 for now, but a constant is just to be
|
||||
increased if necessary)
|
||||
- Fix some bug in the fully untested MDP handling:) and share
|
||||
some code between MDP handling and residual calculation.
|
||||
- Calculate the data transfer residual as the 2's complement
|
||||
integer (A positive value in returned on data overrun, and
|
||||
a negative one on underrun).
|
||||
- Add support of some 'resource handling' for linux-2.3.13.
|
||||
Basically the BARs have been changed to something more complex
|
||||
in the pci_dev structure.
|
||||
- Remove some deprecated code.
|
||||
|
||||
Sat Jun 5 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5c
|
||||
- Do not negotiate on auto-sense if we are currently using 8 bit
|
||||
async transfer for the target.
|
||||
- Only check for SISL/RAID on i386 platforms.
|
||||
(A problem has been reported on PPC with that code).
|
||||
- On MSG REJECT for a negotiation, the driver attempted to restart
|
||||
the SCRIPT processor when this one was already running.
|
||||
|
||||
Sat May 29 12:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5b
|
||||
- Force negotiation prior auto-sense.
|
||||
This ensures that the driver will be able to grab the sense data
|
||||
from a device that has received a BUS DEVICE RESET message from
|
||||
another initiator.
|
||||
- Complete all disconnected CCBs for a logical UNIT if we are told
|
||||
about a UNIT ATTENTION for a RESET condition by this target.
|
||||
- Add the control command 'cleardev' that allows to send a ABORT
|
||||
message to a logical UNIT (for test purpose).
|
||||
|
||||
Tue May 25 23:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5a
|
||||
- Add support for task abort and bus device reset SCSI message
|
||||
and implement proper synchonisation with SCRIPTS to handle
|
||||
correctly task abortion without races.
|
||||
- Send an ABORT message (if untagged) or ABORT TAG message (if tagged)
|
||||
when the driver is told to abort a command that is disconnected and
|
||||
complete the command with appropriate error.
|
||||
If the aborted command is not yet started, remove it from the start
|
||||
queue and complete it with error.
|
||||
- Add the control command 'resetdev' that allows to send a BUS
|
||||
DEVICE RESET message to a target (for test purpose).
|
||||
- Clean-up some unused or useless code.
|
||||
|
||||
Fri May 21 23:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.5
|
||||
- Add support for CHMOV with Wide controllers.
|
||||
- Handling of the SWIDE (low byte residue at the end of a CHMOV
|
||||
in DATA IN phase with WIDE transfer when the byte count gets odd).
|
||||
- Handling of the IGNORE WIDE RESIDUE message.
|
||||
Handled from SCRIPTS as possible with some optimizations when both
|
||||
a wide device and the controller are odd at the same time (SWIDE
|
||||
present and IGNORE WIDE RESIDUE message on the BUS at the same time).
|
||||
- Check against data OVERRUN/UNDERRUN condition at the end of a data
|
||||
transfer, whatever a SWIDE is present (OVERRUN in DATA IN phase)
|
||||
or the SODL is full (UNDERRUN in DATA out phase).
|
||||
- Handling of the MODIFY DATA POINTER message.
|
||||
This one cannot be handled from SCRIPTS, but hopefully it will not
|
||||
happen very often. :)
|
||||
- Large rewrite of the SCSI MESSAGE handling.
|
||||
|
||||
Sun May 9 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.4
|
||||
- Support for IMMEDIATE ARBITRATION.
|
||||
See the README file for detailed information about this feature.
|
||||
Requires both a compile option and a boot option.
|
||||
- Minor SCRIPTS optimization in reselection pattern for LUN 0.
|
||||
- Simpler algorithm to deal with SCSI command starvation.
|
||||
Just use 2 tag counters in flip/flop and switch to the other
|
||||
one every 3 seconds.
|
||||
- Do some work in SCRIPTS after the SELECT instruction and prior
|
||||
to testing for a PHASE. SYMBIOS say this feature is working fine.
|
||||
(Btw, only problems with Toshiba 3401B had been reported).
|
||||
- Measure the PCI clock speed and do not attach controllers if
|
||||
result is greater than 37 MHz. Since the precision of the
|
||||
algorithm (from Stefan Esser) is better than 2%, this should
|
||||
be fine.
|
||||
- Fix the misdetection of SYM53C875E (was detected as a 876).
|
||||
- Fix the misdetection of SYM53C810 not A (was detected as a 810A).
|
||||
- Support for up to 256 TAGS per LUN (CMD_PER_LUN).
|
||||
Currently limited to 255 due to Linux limitation. :)
|
||||
- Support for up to 508 active commands (CAN_QUEUE).
|
||||
- Support for the 53C895A by Pamela Delaney <pam.delaney@lsil.com>
|
||||
The 53C895A contains all of the features of the 896 but has only
|
||||
one channel and has a 32 bit PCI bus. It does 64 bit PCI addressing
|
||||
using dual cycle PCI data transfers.
|
||||
- Miscellaneous minor fixes.
|
||||
- Some additions to the README.ncr53c8xx file.
|
||||
|
||||
Tue Apr 15 10:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.3e
|
||||
- Support for any number of LUNs (64) (SPI2-compliant).
|
||||
(Btw, this may only be ever useful under linux-2.2 ;-))
|
||||
|
||||
Sun Apr 11 10:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.3d
|
||||
- Add 'hostid:#id' boot option. This option allows to change the
|
||||
default SCSI id the driver uses for controllers.
|
||||
- Make SCRIPTS not use self-mastering for PCI.
|
||||
There were still 2 places the driver used this feature of the
|
||||
53C8XX family.
|
||||
- Move some data structures (nvram layouts and driver set-up) to
|
||||
the sym53c8xx_defs.h file. So, the both drivers will share them.
|
||||
- Set MAX LUNS to 16 (instead of 8).
|
||||
|
||||
Sat Mar 20 21:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.3b
|
||||
- Add support for NCR PQS PDS.
|
||||
James Bottomley <James.Bottomley@columbiasc.ncr.com>
|
||||
- Allow value 0 for host ID.
|
||||
- Support more than 8 controllers (> 40 in fact :-) )
|
||||
- Add 'excl=#ioaddr' boot option: exclude controller.
|
||||
(Version 1.3a driver)
|
||||
|
||||
Thu Mar 11 23:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.3 (8xx-896 driver bundle)
|
||||
- Equivalent changes as ncr53c8xx-3.2 due to the driver bundle.
|
||||
(See Changelog.ncr53c8xx)
|
||||
- Do a normal soft reset as first chip reset, since aborting current
|
||||
operation may raise an interrupt we are not able to handle since
|
||||
the interrupt handler is not yet established.
|
||||
|
||||
Sat Mar 6 11:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.2b
|
||||
- Fix some oooold bug that hangs the bus if a device rejects a
|
||||
negotiation. Btw, the corresponding stuff also needed some cleanup
|
||||
and thus the change is a bit larger than it could have been.
|
||||
- Still some typo that made compilation fail for 64 bit (trivial fix).
|
||||
|
||||
Sun Feb 21 20:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.2a
|
||||
- The rewrite of the interrupt handling broke the SBMC interrupt
|
||||
handling due to a 1 bit mask tiny error. Hopefully fixed.
|
||||
- If INQUIRY came from a scatter list, the driver looked into
|
||||
the scatterlist instead of the data.:) Since this should never
|
||||
happen, we just discard the data if use_sg is not zero.
|
||||
|
||||
Fri Feb 12 23:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.2
|
||||
- Major rewrite of the interrupt handling and recovery stuff for
|
||||
the support of non compliant SCSI removal, insertion and all
|
||||
kinds of screw-up that may happen on the SCSI BUS.
|
||||
Hopefully, the driver is now unbreakable or may-be, it is just
|
||||
quite brocken. :-)
|
||||
Many thanks to Johnson Russel (Symbios) for having responded to
|
||||
my questions and for his interesting advices and comments about
|
||||
support of SCSI hot-plug.
|
||||
- Add 'recovery' option to driver set-up.
|
||||
- Negotiate SYNC data transfers with CCS devices.
|
||||
- Deal correctly with 64 bit PCI address registers on Linux 2.2.
|
||||
Pointed out by Leonard Zubkoff.
|
||||
|
||||
Sun Jan 31 18:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.1a
|
||||
- Some 896 chip revisions (all for now :-)), may hang-up if the
|
||||
soft reset bit is set at the wrong time while SCRIPTS are running.
|
||||
We need to first abort the current SCRIPTS operation prior to
|
||||
resetting the chip. This fix has been sent to me by SYMBIOS/LSI
|
||||
and I just translated it into ncr53c8xx syntax.
|
||||
Must be considered 100 % trustable, unless I did some mistake
|
||||
when translating it. :-)
|
||||
|
||||
Sun Jan 24 18:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.1
|
||||
- Major rewrite of the SCSI parity error handling.
|
||||
The informations contained in the data manuals are incomplete about
|
||||
this feature.
|
||||
I asked SYMBIOS about and got in reply the explanations that are
|
||||
_indeed_ missing in the data manuals.
|
||||
- Allow to tune request_irq() flags from the boot command line using
|
||||
ncr53c8xx=irqm:??, as follows:
|
||||
a) If bit 0x10 is set in irqm, SA_SHIRQ flag is not used.
|
||||
b) If bit 0x20 is set in irqm, SA_INTERRUPT flag is not used.
|
||||
By default the driver uses both SA_SHIRQ and SA_INTERRUPT.
|
||||
Option 'ncr53c8xx=irqm:0x20' may be used when an IRQ is shared by
|
||||
a 53C8XX adapter and a network board.
|
||||
- Fix for 64 bit PCI address register calculation. (Lance Robinson)
|
||||
- Fix for big-endian in phase mismatch handling. (Michal Jaegermann)
|
||||
|
||||
Fri Jan 1 20:00 1999 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.0a
|
||||
- Waiting list look-up didn't work for the first command of the list.
|
||||
Hopefully fixed, but tested on paper only. ;)
|
||||
- Remove the most part of PPC specific code for Linux-2.2.
|
||||
Thanks to Cort.
|
||||
- Some other minors changes.
|
||||
|
||||
Sat Dec 19 21:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version sym53c8xx-1.0
|
||||
- Define some new IO registers for the 896 (istat1, mbox0, mbox1)
|
||||
- Revamp slighly the Symbios NVRAM lay-out based on the excerpt of
|
||||
the header file I received from Symbios.
|
||||
- Check the PCI bus number for the boot order (Using a fast
|
||||
PCI controller behing a PCI-PCI bridge seems sub-optimal).
|
||||
- Disable overlapped PCI arbitration for the 896 revision 1.
|
||||
- Reduce a bit the number of IO register reads for phase mismatch
|
||||
by reading DWORDS at a time instead of BYTES.
|
||||
|
||||
Thu Dec 3 24:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.18
|
||||
- I received this afternoon a 896 from SYMBIOS and started testing
|
||||
the driver with this beast. After having fixed 3 buglets, it worked
|
||||
with all features enabled including the phase mismatch handling
|
||||
from SCRIPTS. Since this feature is not yet tested enough, the
|
||||
boot option 'ncr53c8xx=specf:1' is still required to enable the
|
||||
driver to handle PM from SCRIPTS.
|
||||
|
||||
Sun Nov 29 18:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.17
|
||||
- The SISL RAID change requires now remap_pci_mem() stuff to be
|
||||
compiled for __i386__ when normal IOs are used.
|
||||
- The PCI memory read from SCRIPTS that should ensure ordering
|
||||
was in fact misplaced. BTW, this may explain why broken PCI
|
||||
device drivers regarding ordering are working so well. ;-)
|
||||
- Rewrite ncr53c8xx_setup (boot command line options) since the
|
||||
binary code was a bit too bloated in my opinion.
|
||||
- Make the code simpler in the wakeup_done routine.
|
||||
|
||||
Tue Nov 24 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.16
|
||||
- Add SCSI_NCR_OPTIMIZE_896_1 compile option and 'optim' boot option.
|
||||
When set, the driver unconditionnaly assumes that the interrupt
|
||||
handler is called for command completion, then clears INTF, scans
|
||||
the done queue and returns if some completed CCB is found. If no
|
||||
completed CCB are found, interrupt handling will proceed normally.
|
||||
With a 896 that handles MA from SCRIPTS, this can be a great win,
|
||||
since the driver will never performs PCI read transactions, but
|
||||
only PCI write transactions that may be posted.
|
||||
If the driver haven't to also raise the SIGP this would be perfect.
|
||||
Even with this penalty, I think that this will work great.
|
||||
Obviously this optimization makes sense only if the IRQ is not
|
||||
shared with another device.
|
||||
- Still a buglet in the tags initial settings that needed to be fixed.
|
||||
It was not possible to disable TGQ at system startup for devices
|
||||
that claim TGQ support. The driver used at least 2 for the queue
|
||||
depth but did'nt keep track of user settings for tags depth lower
|
||||
than 2.
|
||||
|
||||
Thu Nov 19 23:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.15
|
||||
- Add support for hardware LED control of the 896.
|
||||
- Ignore chips that are driven by SISL RAID (DAC 960).
|
||||
Change sent by Leonard Zubkoff and slightly reworked.
|
||||
- Prevent 810A rev 11 and 860 rev 1 from using cache line based
|
||||
transactions since those early chip revisions may use such on
|
||||
LOAD/STORE instructions (work-around).
|
||||
- Remove some useless and bloat code from the pci init stuff.
|
||||
- Do not use the readX()/writeX() kernel functions for __i386__,
|
||||
since they perform useless masking operations in order to deal
|
||||
with broken driver in 2.1.X kernel.
|
||||
|
||||
Wed Nov 11 10:00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.14
|
||||
- The driver was unhappy when configured with default_tags > MAX_TAGS
|
||||
Hopefully doubly-fixed.
|
||||
- Set PCI_PARITY in PCI_COMMAND register in not set (PCI fix-up).
|
||||
- Print out some message if phase mismatch is handled from SCRIPTS.
|
||||
|
||||
Sun Nov 1 14H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.13
|
||||
- Some rewrite of the device detection code. This code had been
|
||||
patched too much and needed to be face-lifted a bit.
|
||||
Remove all platform dependent fix-ups that was not needed or
|
||||
conflicted with some other driver code as work-arounds.
|
||||
Reread the NVRAM before the calling of ncr_attach(). This spares
|
||||
stack space and so allows to handle more boards.
|
||||
Handle 64 bit base addresses under linux-2.0.X.
|
||||
Set MASTER bit in PCI COMMAND register if not set.
|
||||
|
||||
Wed Oct 30 22H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.12
|
||||
- Damned! I just broke the driver for Alpha by leaving a stale
|
||||
instruction in the source code. Hopefully fixed.
|
||||
- Do not set PFEN when it is useless. Doing so we are sure that BOF
|
||||
will be active, since the manual appears to be very unclear on what
|
||||
feature is actually used by the chip when both PFEN and BOF are
|
||||
set.
|
||||
|
||||
Sat Oct 24 16H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.11
|
||||
- LOAD/STORE instructions were miscompiled for register offsets
|
||||
beyond 0x7f. This broke accesses to 896' new registers.
|
||||
- Disable by default Phase Mismatch handling from SCRIPTS, since
|
||||
current 896 rev.1 seems not to operate safely with the driver
|
||||
when this feature is enabled (and above LOAD/STORE fix applied).
|
||||
I will change the default to 'enabled' when this problem will be
|
||||
solved.
|
||||
Using boot option 'ncr53c8xx=specf:1' enables this feature.
|
||||
- Implement a work-around (DEL 472 - ITEM 5) that should allow the
|
||||
driver to safely enable hardware phase mismatch with 896 rev. 1.
|
||||
|
||||
Tue Oct 20 22H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.10
|
||||
- Add the 53c876 description to the chip table. This is only useful
|
||||
for printing the right name of the controller.
|
||||
- Add additional checking of INQUIRY data:
|
||||
Check INQUIRY data received length is at least 7. Byte 7 of
|
||||
inquiry data contains device features bits and the driver might
|
||||
be confused by garbage. Also check peripheral qualifier.
|
||||
- Use a 1,3,5,...MAXTAGS*2+1 tag numbering. Previous driver could
|
||||
use any tag number from 1 to 253 and some non conformant devices
|
||||
might have problems with large tag numbers.
|
||||
- Use NAME53C and NAME53C8XX for chip name prefix chip family name.
|
||||
Just give a try using "sym53c" and "sym53c8xx" instead of "ncr53c"
|
||||
and "ncr53c8xx". :-)
|
||||
|
||||
Sun Oct 11 17H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.9
|
||||
- DEL-441 Item 2 work-around for the 53c876 rev <= 5 (0x15).
|
||||
- Break ncr_scatter() into 2 functions in order to guarantee best
|
||||
possible code optimization for the case we get a scatter list.
|
||||
- Add the code intended to support up to 1 tera-byte for 64 bit systems.
|
||||
It is probably too early, but I wanted to complete the thing.
|
||||
|
||||
Sat Oct 3 14H00 1998 Gerard Roudier (groudier@club-internet.fr)
|
||||
* version pre-sym53c8xx-0.8
|
||||
- Do some testing with io_mapped and fix what needed to be so.
|
||||
- Wait for SCSI selection to complete or time-out immediately after
|
||||
the chip won arbitration, since executing SCRIPTS while the SCSI
|
||||
core is performing SCSI selection breaks the selection procedure
|
||||
at least for some chip revisions.
|
||||
- Interrupt the SCRIPTS if a device does not go to MSG OUT phase after
|
||||
having been selected with ATN. Such a situation is not recoverable,
|
||||
better to fail when we are stuck.
|
144
Documentation/scsi/ChangeLog.sym53c8xx_2
Arquivo normal
144
Documentation/scsi/ChangeLog.sym53c8xx_2
Arquivo normal
@@ -0,0 +1,144 @@
|
||||
Sat Dec 30 21:30 2000 Gerard Roudier
|
||||
* version sym-2.1.0-20001230
|
||||
- Initial release of SYM-2.
|
||||
|
||||
Mon Jan 08 21:30 2001 Gerard Roudier
|
||||
* version sym-2.1.1-20010108
|
||||
- Change a couple of defines containing ncr or NCR by their
|
||||
equivalent containing sym or SYM instead.
|
||||
|
||||
Sun Jan 14 22:30 2001 Gerard Roudier
|
||||
* version sym-2.1.2-20010114
|
||||
- Fix a couple of printfs:
|
||||
* Add the target number to the display of transfer parameters.
|
||||
* Make the display of TCQ and queue depth clearer.
|
||||
|
||||
Wed Jan 17 23:30 2001 Gerard Roudier
|
||||
* version sym-2.1.3-20010117
|
||||
- Wrong residual values were returned in some situations.
|
||||
This broke cdrecord with linux-2.4.0, for example.
|
||||
|
||||
Sat Jan 20 18:00 2001 Gerard Roudier
|
||||
* version sym-2.1.4-20010120
|
||||
- Add year 2001 to Copyright.
|
||||
- A tiny bug in the dma memory freeing path has been fixed.
|
||||
(Driver unload failed with a bad address reference).
|
||||
|
||||
Wed Jan 24 21:00 2001 Gerard Roudier
|
||||
* version sym-2.1.5-20010124
|
||||
- Make the driver work under Linux-2.4.x when statically linked
|
||||
with the kernel.
|
||||
- Check against memory allocation failure for SCRIPTZ and add the
|
||||
missing free of this memory on instance detach.
|
||||
- Check against GPIO3 pulled low for HVD controllers (driver did
|
||||
just the opposite).
|
||||
Misdetection of BUS mode was triggered on module reload only,
|
||||
since BIOS settings were trusted instead on first load.
|
||||
|
||||
Wed Feb 7 21:00 2001 Gerard Roudier
|
||||
* version sym-2.1.6-20010207
|
||||
- Call pci_enable_device() as wished by kernel maintainers.
|
||||
- Change the sym_queue_scsiio() interface.
|
||||
This is intended to simplify portability.
|
||||
- Move the code intended to deal with the dowloading of SCRIPTS
|
||||
from SCRIPTS :) in the patch method (was wrongly placed in
|
||||
the SCRIPTS setup method).
|
||||
- Add a missing cpu_to_scr() (np->abort_tbl.addr)
|
||||
- Remove a wrong cpu_to_scr() (np->targtbl_ba)
|
||||
- Cleanup a bit the PPR failure recovery code.
|
||||
|
||||
Sat Mar 3 21:00 2001 Gerard Roudier
|
||||
- Add option SYM_OPT_ANNOUNCE_TRANSFER_RATE and move the
|
||||
corresponding code to file sym_misc.c.
|
||||
Also move the code that sniffes INQUIRY to sym_misc.c.
|
||||
This allows to share the corresponding code with NetBSD
|
||||
without polluating the core driver source (sym_hipd.c).
|
||||
- Add optionnal code that handles IO timeouts from the driver.
|
||||
(not used under Linux, but required for NetBSD)
|
||||
- Donnot assume any longer that PAGE_SHIFT and PAGE_SIZE are
|
||||
defined at compile time, as at least NetBSD uses variables
|
||||
in memory for that.
|
||||
- Refine a work-around for the C1010-33 that consists in
|
||||
disabling internal LOAD/STORE. Was applied up to revision 1.
|
||||
Is now only applied to revision 0.
|
||||
- Some code reorganisations due to code moves between files.
|
||||
|
||||
Tues Apr 10 21:00 2001 Gerard Roudier
|
||||
* version sym-2.1.9-20010412
|
||||
- Reset 53C896 and 53C1010 chip according to the manual.
|
||||
(i.e.: set the ABRT bit in ISTAT if SCRIPTS are running)
|
||||
- Set #LUN in request sense only if scsi version <= 2 and
|
||||
#LUN <= 7.
|
||||
- Set busy_itl in LCB to 1 if the LCB is allocated and a
|
||||
SCSI command is active. This is a simplification.
|
||||
- In sym_hcb_free(), do not scan the free_ccbq if no CCBs
|
||||
has been allocated. This fixes a panic if attach failed.
|
||||
- Add DT/ST (double/simple transition) in the transfer
|
||||
negotiation announce.
|
||||
- Forces the max number of tasks per LUN to at least 64.
|
||||
- Use pci_set_dma_mask() for linux-2.4.3 and above.
|
||||
- A couple of comments fixes.
|
||||
|
||||
Wed May 22:00 2001 Gerard Roudier
|
||||
* version sym-2.1.10-20010509
|
||||
- Mask GPCNTL against 0x1c (was 0xfc) for the reading of the NVRAM.
|
||||
This ensure LEDC bit will not be set on 896 and later chips.
|
||||
Fix sent by Chip Salzenberg <chip@perlsupport.com>.
|
||||
- Define the number of PQS BUSes supported.
|
||||
Fix sent by Stig Telfer <stig@api-networks.com>
|
||||
- Miscellaneous common code rearrangements due to NetBSD accel
|
||||
ioctl support, without impact on Linux (hopefully).
|
||||
|
||||
Mon July 2 12:00 2001 Gerard Roudier
|
||||
* version sym-2.1.11-20010702
|
||||
- Add Tekram 390 U2B/U2W SCSI LED handling.
|
||||
Submitted by Chip Salzenberg <chip@valinux.com>
|
||||
- Add call to scsi_set_pci_device() for kernels >= 2.4.4.
|
||||
- Check pci dma mapping failures and complete the IO with some
|
||||
error when such mapping fails.
|
||||
- Fill in instance->max_cmd_len for kernels > 2.4.0.
|
||||
- A couple of tiny fixes ...
|
||||
|
||||
Sun Sep 9 18:00 2001 Gerard Roudier
|
||||
* version sym-2.1.12-20010909
|
||||
- Change my email address.
|
||||
- Add infrastructure for the forthcoming 64 bit DMA addressing support.
|
||||
(Based on PCI 64 bit patch from David S. Miller)
|
||||
- Donnot use anymore vm_offset_t type.
|
||||
|
||||
Sat Sep 15 20:00 2001 Gerard Roudier
|
||||
* version sym-2.1.13-20010916
|
||||
- Add support for 64 bit DMA addressing using segment registers.
|
||||
16 registers for up to 4 GB x 16 -> 64 GB.
|
||||
|
||||
Sat Sep 22 12:00 2001 Gerard Roudier
|
||||
* version sym-2.1.14-20010922
|
||||
- Complete rewrite of the eh handling. The driver is now using a
|
||||
semaphore in order to behave synchronously as required by the eh
|
||||
threads. A timer is also used to prevent from waiting indefinitely.
|
||||
|
||||
Sun Sep 30 17:00 2001 Gerard Roudier
|
||||
* version sym-2.1.15-20010930
|
||||
- Include <linux/module.h> unconditionnaly as expected by latest
|
||||
kernels.
|
||||
- Use del_timer_sync() for recent kernels to kill the driver timer
|
||||
on module release.
|
||||
|
||||
Sun Oct 28 15:00 2001 Gerard Roudier
|
||||
* version sym-2.1.16-20011028
|
||||
- Slightly simplify driver configuration.
|
||||
- Prepare a new patch against linux-2.4.13.
|
||||
|
||||
Sat Nov 17 10:00 2001 Gerard Roudier
|
||||
* version sym-2.1.17
|
||||
- Fix a couple of gcc/gcc3 warnings.
|
||||
- Allocate separately from the HCB the array for CCBs hashed by DSA.
|
||||
All driver memory allocations are now not greater than 1 PAGE
|
||||
even on PPC64 / 4KB PAGE surprising setup.
|
||||
|
||||
Sat Dec 01 18:00 2001 Gerard Roudier
|
||||
* version sym-2.1.17a
|
||||
- Use u_long instead of U32 for the IO base cookie. This is more
|
||||
consistent with what archs are expecting.
|
||||
- Use MMIO per default for Power PC instead of some fake normal IO,
|
||||
as Paul Mackerras stated that MMIO works fine now on this arch.
|
163
Documentation/scsi/FlashPoint.txt
Arquivo normal
163
Documentation/scsi/FlashPoint.txt
Arquivo normal
@@ -0,0 +1,163 @@
|
||||
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://www.dandelion.com/Linux/.
|
||||
|
||||
"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/linux.
|
||||
|
||||
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 it's
|
||||
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
|
60
Documentation/scsi/LICENSE.FlashPoint
Arquivo normal
60
Documentation/scsi/LICENSE.FlashPoint
Arquivo normal
@@ -0,0 +1,60 @@
|
||||
FlashPoint Driver Developer's Kit
|
||||
Version 1.0
|
||||
|
||||
Copyright 1995-1996 by Mylex Corporation
|
||||
All Rights Reserved
|
||||
|
||||
This program is free software; you may redistribute and/or modify it under
|
||||
the terms of either:
|
||||
|
||||
a) the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 2, or (at your option) any later version,
|
||||
|
||||
or
|
||||
|
||||
b) the "BSD-style License" included below.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See either the GNU General Public
|
||||
License or the BSD-style License below for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
The BSD-style License is as follows:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain this LICENSE.FlashPoint
|
||||
file, without modification, this list of conditions, and the following
|
||||
disclaimer. The following copyright notice must appear immediately at
|
||||
the beginning of all source files:
|
||||
|
||||
Copyright 1995-1996 by Mylex Corporation. All Rights Reserved
|
||||
|
||||
This file is available under both the GNU General Public License
|
||||
and a BSD-style copyright; see LICENSE.FlashPoint for details.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. The name of Mylex Corporation may not be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY MYLEX CORP. ``AS IS'' 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 THE AUTHOR 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
5
Documentation/scsi/Mylex.txt
Arquivo normal
5
Documentation/scsi/Mylex.txt
Arquivo normal
@@ -0,0 +1,5 @@
|
||||
Please see the file README.BusLogic for information about Linux support for
|
||||
Mylex (formerly BusLogic) MultiMaster and FlashPoint SCSI Host Adapters.
|
||||
|
||||
The Mylex DAC960 PCI RAID Controllers are now supported. Please consult
|
||||
http://www.dandelion.com/Linux/ for further information on the DAC960 driver.
|
130
Documentation/scsi/NinjaSCSI.txt
Arquivo normal
130
Documentation/scsi/NinjaSCSI.txt
Arquivo normal
@@ -0,0 +1,130 @@
|
||||
|
||||
WorkBiT NinjaSCSI-3/32Bi driver for Linux
|
||||
|
||||
1. Comment
|
||||
This is Workbit corp.'s(http://www.workbit.co.jp/) NinjaSCSI-3
|
||||
(http://www.workbit.co.jp/ts/z_nj3r.html) and NinjaSCSI-32Bi
|
||||
(http://www.workbit.co.jp/ts/z_njsc32bi.html) PCMCIA card driver module
|
||||
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/messgaes
|
||||
...
|
||||
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 Linux kernel source, and extract it to /usr/src.
|
||||
Because NinjaSCSI driver requiers some SCSI header files in Linux kernel
|
||||
source.
|
||||
I recomend rebuilding your kernel. This eliminate some versioning problem.
|
||||
$ 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 requies 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.o to suitable plase, like /lib/modules/<Kernel version>/pcmcia/ .
|
||||
|
||||
[6] Add these lines to /etc/pcmcia/config .
|
||||
If you yse 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>
|
183
Documentation/scsi/aha152x.txt
Arquivo normal
183
Documentation/scsi/aha152x.txt
Arquivo normal
@@ -0,0 +1,183 @@
|
||||
$Id: README.aha152x,v 1.2 1999/12/25 15:32:30 fischer Exp fischer $
|
||||
Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x)
|
||||
|
||||
Copyright 1993-1999 J<>rgen Fischer <fischer@norbit.de>
|
||||
TC1550 patches by Luuk van Dijk (ldz@xs4all.nl)
|
||||
|
||||
|
||||
In Revision 2 the driver was modified a lot (especially the
|
||||
bottom-half handler complete()).
|
||||
|
||||
The driver is much cleaner now, has support for the new
|
||||
error handling code in 2.3, produced less cpu load (much
|
||||
less polling loops), has slightly higher throughput (at
|
||||
least on my ancient test box; a i486/33Mhz/20MB).
|
||||
|
||||
|
||||
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)
|
||||
RECONNECT allow targets to disconnect from the bus (0/1; default 1 [on])
|
||||
PARITY enable parity checking (0/1; default 1 [on])
|
||||
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):
|
||||
|
||||
-DAUTOCONF
|
||||
use configuration the controller reports (AHA-152x only)
|
||||
|
||||
-DSKIP_BIOSTEST
|
||||
Don't test for BIOS signature (AHA-1510 or disabled BIOS)
|
||||
|
||||
-DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
|
||||
override for the first controller
|
||||
|
||||
-DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
|
||||
override for the second controller
|
||||
|
||||
-DAHA152X_DEBUG
|
||||
enable debugging output
|
||||
|
||||
-DAHA152X_STAT
|
||||
enable some statistics
|
||||
|
||||
|
||||
LILO COMMAND LINE OPTIONS:
|
||||
|
||||
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
|
||||
valid (known). Don't use values that aren't supported under normal
|
||||
operation. If you think that you need other values: contact me.
|
||||
For two controllers use the aha152x statement twice.
|
||||
|
||||
|
||||
SYMBOLS FOR MODULE CONFIGURATION:
|
||||
|
||||
Choose from 2 alternatives:
|
||||
|
||||
1. specify everything (old)
|
||||
|
||||
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
|
||||
configuration override for second controller
|
||||
|
||||
2. specify only what you need to (irq or io is required; new)
|
||||
|
||||
io=IOPORT0[,IOPORT1]
|
||||
IOPORT for first and second controller
|
||||
|
||||
irq=IRQ0[,IRQ1]
|
||||
IRQ for first and second controller
|
||||
|
||||
scsiid=SCSIID0[,SCSIID1]
|
||||
SCSIID for first and second controller
|
||||
|
||||
reconnect=RECONNECT0[,RECONNECT1]
|
||||
allow targets to disconnect for first and second controller
|
||||
|
||||
parity=PAR0[PAR1]
|
||||
use parity for first and second controller
|
||||
|
||||
sync=SYNCHRONOUS0[,SYNCHRONOUS1]
|
||||
enable synchronous transfers for first and second controller
|
||||
|
||||
delay=DELAY0[,DELAY1]
|
||||
reset DELAY for first and second controller
|
||||
|
||||
exttrans=EXTTRANS0[,EXTTRANS1]
|
||||
enable extended translation for first and second controller
|
||||
|
||||
|
||||
If you use both alternatives the first will be taken.
|
||||
|
||||
|
||||
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)
|
||||
scheme instead. DOS expects a BIOS or driver that understands this
|
||||
C/H/S addressing.
|
||||
|
||||
The number of cylinders/heads/sectors is called geometry and is required
|
||||
as base for requests in C/H/S addressing. SCSI only knows about the
|
||||
total capacity of disks in blocks (sectors).
|
||||
|
||||
Therefore the SCSI BIOS/DOS driver has to calculate a logical/virtual
|
||||
geometry just to be able to support that addressing scheme. The geometry
|
||||
returned by the SCSI BIOS is a pure calculation and has nothing to
|
||||
do with the real/physical geometry of the disk (which is usually
|
||||
irrelevant anyway).
|
||||
|
||||
Basically this has no impact at all on Linux, because it also uses block
|
||||
instead of C/H/S addressing. Unfortunately C/H/S addressing is also used
|
||||
in the partition table and therefore every operating system has to know
|
||||
the right geometry to be able to interpret it.
|
||||
|
||||
Moreover there are certain limitations to the C/H/S addressing scheme,
|
||||
namely the address space is limited to upto 255 heads, upto 63 sectors
|
||||
and a maximum of 1023 cylinders.
|
||||
|
||||
The AHA-1522 BIOS calculates the geometry by fixing the number of heads
|
||||
to 64, the number of sectors to 32 and by calculating the number of
|
||||
cylinders by dividing the capacity reported by the disk by 64*32 (1 MB).
|
||||
This is considered to be the default translation.
|
||||
|
||||
With respect to the limit of 1023 cylinders using C/H/S you can only
|
||||
address the first GB of your disk in the partition table. Therefore
|
||||
BIOSes of some newer controllers based on the AIC-6260/6360 support
|
||||
extended translation. This means that the BIOS uses 255 for heads,
|
||||
63 for sectors and then divides the capacity of the disk by 255*63
|
||||
(about 8 MB), as soon it sees a disk greater than 1 GB. That results
|
||||
in a maximum of about 8 GB addressable diskspace in the partition table
|
||||
(but there are already bigger disks out there today).
|
||||
|
||||
To make it even more complicated the translation mode might/might
|
||||
not be configurable in certain BIOS setups.
|
||||
|
||||
This driver does some more or less failsafe guessing to get the
|
||||
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,
|
||||
ie. either (C/32/64) or (C/63/255)). This can be extended translation
|
||||
even if it's not enabled in the driver.
|
||||
|
||||
- if that fails, take extended translation if enabled by override,
|
||||
kernel or module parameter, otherwise take default translation and
|
||||
ask the user for verification. This might on not yet partitioned
|
||||
disks.
|
||||
|
||||
|
||||
REFERENCES USED:
|
||||
|
||||
"AIC-6260 SCSI Chip Specification", Adaptec Corporation.
|
||||
|
||||
"SCSI COMPUTER SYSTEM INTERFACE - 2 (SCSI-2)", X3T9.2/86-109 rev. 10h
|
||||
|
||||
"Writing a SCSI device driver for Linux", Rik Faith (faith@cs.unc.edu)
|
||||
|
||||
"Kernel Hacker's Guide", Michael K. Johnson (johnsonm@sunsite.unc.edu)
|
||||
|
||||
"Adaptec 1520/1522 User's Guide", Adaptec Corporation.
|
||||
|
||||
Michael K. Johnson (johnsonm@sunsite.unc.edu)
|
||||
|
||||
Drew Eckhardt (drew@cs.colorado.edu)
|
||||
|
||||
Eric Youngdale (eric@andante.org)
|
||||
|
||||
special thanks to Eric Youngdale for the free(!) supplying the
|
||||
documentation on the chip.
|
516
Documentation/scsi/aic79xx.txt
Arquivo normal
516
Documentation/scsi/aic79xx.txt
Arquivo normal
@@ -0,0 +1,516 @@
|
||||
====================================================================
|
||||
= Adaptec Ultra320 Family Manager Set v1.3.11 =
|
||||
= =
|
||||
= 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
|
||||
|
||||
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 susupend 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 packtized 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
|
||||
devlice 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 transcievers.
|
||||
|
||||
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 coalessing.
|
||||
|
||||
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 Coalessing
|
||||
- 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.
|
||||
|
||||
Edit the file "modprobe.conf" in the directory /etc 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 ommitted 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 ommitted 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 ommitted 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 ommitted 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 ommitted 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 ommitted 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. Contacting Adaptec
|
||||
|
||||
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 for 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.
|
||||
- To speak with a Fibre Channel/RAID/External Storage Technical
|
||||
Support Specialist, call 1-321-207-2000,
|
||||
Hours: Monday-Friday, 3:00 A.M. to 5:00 P.M., PST.
|
||||
(Not open on holidays)
|
||||
- For Technical Support in all other technologies including
|
||||
SCSI, call 1-408-934-7274,
|
||||
Hours: Monday-Friday, 6:00 A.M. to 5:00 P.M., PST.
|
||||
(Not open on holidays)
|
||||
- For after hours support, call 1-800-416-8066 ($99/call,
|
||||
$149/call on holidays)
|
||||
- To order Adaptec products including software and cables, call
|
||||
1-800-442-7274 or 1-408-957-7274. You can also visit our
|
||||
online store at http://www.adaptecstore.com
|
||||
|
||||
Europe
|
||||
- Visit our Web site at http://www.adaptec-europe.com.
|
||||
- English and French: To speak with a Technical Support
|
||||
Specialist, call one of the following numbers:
|
||||
- English: +32-2-352-3470
|
||||
- French: +32-2-352-3460
|
||||
Hours: Monday-Thursday, 10:00 to 12:30, 13:30 to 17:30 CET
|
||||
Friday, 10:00 to 12:30, 13:30 to 16:30 CET
|
||||
- German: To speak with a Technical Support Specialist,
|
||||
call +49-89-456-40660
|
||||
Hours: Monday-Thursday, 09:30 to 12:30, 13:30 to 16:30 CET
|
||||
Friday, 09:30 to 12:30, 13:30 to 15:00 CET
|
||||
- To order Adaptec products, including accessories and cables:
|
||||
- UK: +0800-96-65-26 or fax +0800-731-02-95
|
||||
- Other European countries: +32-11-300-379
|
||||
|
||||
Australia and New Zealand
|
||||
- Visit our Web site at http://www.adaptec.com.au.
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+612-9416-0698
|
||||
Hours: Monday-Friday, 10:00 A.M. to 4:30 P.M., EAT
|
||||
(Not open on holidays)
|
||||
|
||||
Japan
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+81-3-5308-6120
|
||||
Hours: Monday-Friday, 9:00 a.m. to 12:00 p.m., 1:00 p.m. to
|
||||
6:00 p.m. TSC
|
||||
|
||||
Hong Kong and China
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+852-2869-7200
|
||||
Hours: Monday-Friday, 10:00 to 17:00.
|
||||
- Fax Technical Support at +852-2869-7100.
|
||||
|
||||
Singapore
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+65-245-7470
|
||||
Hours: Monday-Friday, 10:00 to 17:00.
|
||||
- Fax Technical Support at +852-2869-7100
|
||||
|
||||
-------------------------------------------------------------------
|
||||
/*
|
||||
* 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.
|
||||
*/
|
414
Documentation/scsi/aic7xxx.txt
Arquivo normal
414
Documentation/scsi/aic7xxx.txt
Arquivo normal
@@ -0,0 +1,414 @@
|
||||
====================================================================
|
||||
= Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.28 =
|
||||
= 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, unttagged 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
|
||||
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 instroduced in 6.2.29 that
|
||||
could cuase 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.
|
||||
|
||||
Edit the file "modprobe.conf" in the directory /etc 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 ommitted 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 ommitted 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.
|
||||
|
||||
3. Contacting Adaptec
|
||||
|
||||
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 for 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.
|
||||
- To speak with a Fibre Channel/RAID/External Storage Technical
|
||||
Support Specialist, call 1-321-207-2000,
|
||||
Hours: Monday-Friday, 3:00 A.M. to 5:00 P.M., PST.
|
||||
(Not open on holidays)
|
||||
- For Technical Support in all other technologies including
|
||||
SCSI, call 1-408-934-7274,
|
||||
Hours: Monday-Friday, 6:00 A.M. to 5:00 P.M., PST.
|
||||
(Not open on holidays)
|
||||
- For after hours support, call 1-800-416-8066 ($99/call,
|
||||
$149/call on holidays)
|
||||
- To order Adaptec products including software and cables, call
|
||||
1-800-442-7274 or 1-408-957-7274. You can also visit our
|
||||
online store at http://www.adaptecstore.com
|
||||
|
||||
Europe
|
||||
- Visit our Web site at http://www.adaptec-europe.com.
|
||||
- English and French: To speak with a Technical Support
|
||||
Specialist, call one of the following numbers:
|
||||
- English: +32-2-352-3470
|
||||
- French: +32-2-352-3460
|
||||
Hours: Monday-Thursday, 10:00 to 12:30, 13:30 to 17:30 CET
|
||||
Friday, 10:00 to 12:30, 13:30 to 16:30 CET
|
||||
- German: To speak with a Technical Support Specialist,
|
||||
call +49-89-456-40660
|
||||
Hours: Monday-Thursday, 09:30 to 12:30, 13:30 to 16:30 CET
|
||||
Friday, 09:30 to 12:30, 13:30 to 15:00 CET
|
||||
- To order Adaptec products, including accessories and cables:
|
||||
- UK: +0800-96-65-26 or fax +0800-731-02-95
|
||||
- Other European countries: +32-11-300-379
|
||||
|
||||
Australia and New Zealand
|
||||
- Visit our Web site at http://www.adaptec.com.au.
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+612-9416-0698
|
||||
Hours: Monday-Friday, 10:00 A.M. to 4:30 P.M., EAT
|
||||
(Not open on holidays)
|
||||
|
||||
Japan
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+81-3-5308-6120
|
||||
Hours: Monday-Friday, 9:00 a.m. to 12:00 p.m., 1:00 p.m. to
|
||||
6:00 p.m. TSC
|
||||
|
||||
Hong Kong and China
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+852-2869-7200
|
||||
Hours: Monday-Friday, 10:00 to 17:00.
|
||||
- Fax Technical Support at +852-2869-7100.
|
||||
|
||||
Singapore
|
||||
- To speak with a Technical Support Specialist, call
|
||||
+65-245-7470
|
||||
Hours: Monday-Friday, 10:00 to 17:00.
|
||||
- Fax Technical Support at +852-2869-7100
|
||||
|
||||
-------------------------------------------------------------------
|
||||
/*
|
||||
* 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.
|
||||
*/
|
511
Documentation/scsi/aic7xxx_old.txt
Arquivo normal
511
Documentation/scsi/aic7xxx_old.txt
Arquivo normal
@@ -0,0 +1,511 @@
|
||||
AIC7xxx Driver for Linux
|
||||
|
||||
Introduction
|
||||
----------------------------
|
||||
The AIC7xxx SCSI driver adds support for Adaptec (http://www.adaptec.com)
|
||||
SCSI controllers and chipsets. Major portions of the driver and driver
|
||||
development are shared between both Linux and FreeBSD. Support for the
|
||||
AIC-7xxx chipsets have been in the default Linux kernel since approximately
|
||||
linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
|
||||
2.1.0 or later.
|
||||
|
||||
Supported cards/chipsets
|
||||
----------------------------
|
||||
Adaptec Cards
|
||||
----------------------------
|
||||
AHA-274x
|
||||
AHA-274xT
|
||||
AHA-2842
|
||||
AHA-2910B
|
||||
AHA-2920C
|
||||
AHA-2930
|
||||
AHA-2930U
|
||||
AHA-2930CU
|
||||
AHA-2930U2
|
||||
AHA-2940
|
||||
AHA-2940W
|
||||
AHA-2940U
|
||||
AHA-2940UW
|
||||
AHA-2940UW-PRO
|
||||
AHA-2940AU
|
||||
AHA-2940U2W
|
||||
AHA-2940U2
|
||||
AHA-2940U2B
|
||||
AHA-2940U2BOEM
|
||||
AHA-2944D
|
||||
AHA-2944WD
|
||||
AHA-2944UD
|
||||
AHA-2944UWD
|
||||
AHA-2950U2
|
||||
AHA-2950U2W
|
||||
AHA-2950U2B
|
||||
AHA-29160M
|
||||
AHA-3940
|
||||
AHA-3940U
|
||||
AHA-3940W
|
||||
AHA-3940UW
|
||||
AHA-3940AUW
|
||||
AHA-3940U2W
|
||||
AHA-3950U2B
|
||||
AHA-3950U2D
|
||||
AHA-3960D
|
||||
AHA-39160M
|
||||
AHA-3985
|
||||
AHA-3985U
|
||||
AHA-3985W
|
||||
AHA-3985UW
|
||||
|
||||
Motherboard Chipsets
|
||||
----------------------------
|
||||
AIC-777x
|
||||
AIC-785x
|
||||
AIC-786x
|
||||
AIC-787x
|
||||
AIC-788x
|
||||
AIC-789x
|
||||
AIC-3860
|
||||
|
||||
Bus Types
|
||||
----------------------------
|
||||
W - Wide SCSI, SCSI-3, 16bit bus, 68pin connector, will also support
|
||||
SCSI-1/SCSI-2 50pin devices, transfer rates up to 20MB/s.
|
||||
U - Ultra SCSI, transfer rates up to 40MB/s.
|
||||
U2- Ultra 2 SCSI, transfer rates up to 80MB/s.
|
||||
D - Differential SCSI.
|
||||
T - Twin Channel SCSI. Up to 14 SCSI devices.
|
||||
|
||||
AHA-274x - EISA SCSI controller
|
||||
AHA-284x - VLB SCSI controller
|
||||
AHA-29xx - PCI SCSI controller
|
||||
AHA-394x - PCI controllers with two separate SCSI controllers on-board.
|
||||
AHA-398x - PCI RAID controllers with three separate SCSI controllers
|
||||
on-board.
|
||||
|
||||
Not Supported Devices
|
||||
------------------------------
|
||||
Adaptec Cards
|
||||
----------------------------
|
||||
AHA-2920 (Only the cards that use the Future Domain chipset are not
|
||||
supported, any 2920 cards based on Adaptec AIC chipsets,
|
||||
such as the 2920C, are supported)
|
||||
AAA-13x Raid Adapters
|
||||
AAA-113x Raid Port Card
|
||||
|
||||
Motherboard Chipsets
|
||||
----------------------------
|
||||
AIC-7810
|
||||
|
||||
Bus Types
|
||||
----------------------------
|
||||
R - Raid Port busses are not supported.
|
||||
|
||||
The hardware RAID devices sold by Adaptec are *NOT* supported by this
|
||||
driver (and will people please stop emailing me about them, they are
|
||||
a totally separate beast from the bare SCSI controllers and this driver
|
||||
can not be retrofitted in any sane manner to support the hardware RAID
|
||||
features on those cards - Doug Ledford).
|
||||
|
||||
|
||||
People
|
||||
------------------------------
|
||||
Justin T Gibbs gibbs@plutotech.com
|
||||
(BSD Driver Author)
|
||||
Dan Eischen deischen@iworks.InterWorks.org
|
||||
(Original Linux Driver Co-maintainer)
|
||||
Dean Gehnert deang@teleport.com
|
||||
(Original Linux FTP/patch maintainer)
|
||||
Jess Johnson jester@frenzy.com
|
||||
(AIC7xxx FAQ author)
|
||||
Doug Ledford dledford@redhat.com
|
||||
(Current Linux aic7xxx-5.x.x Driver/Patch/FTP maintainer)
|
||||
|
||||
Special thanks go to John Aycock (aycock@cpsc.ucalgary.ca), the original
|
||||
author of the driver. John has since retired from the project. Thanks
|
||||
again for all his work!
|
||||
|
||||
Mailing list
|
||||
------------------------------
|
||||
There is a mailing list available for users who want to track development
|
||||
and converse with other users and developers. This list is for both
|
||||
FreeBSD and Linux support of the AIC7xxx chipsets.
|
||||
|
||||
To subscribe to the AIC7xxx mailing list send mail to the list server,
|
||||
with "subscribe AIC7xxx" in the body (no Subject: required):
|
||||
To: majordomo@FreeBSD.ORG
|
||||
---
|
||||
subscribe AIC7xxx
|
||||
|
||||
To unsubscribe from the list, send mail to the list server with:
|
||||
To: majordomo@FreeBSD.ORG
|
||||
---
|
||||
unsubscribe AIC7xxx
|
||||
|
||||
Send regular messages and replies to: AIC7xxx@FreeBSD.ORG
|
||||
|
||||
Boot Command line options
|
||||
------------------------------
|
||||
"aic7xxx=no_reset" - Eliminate the SCSI bus reset during startup.
|
||||
Some SCSI devices need the initial reset that this option disables
|
||||
in order to work. If you have problems at bootup, please make sure
|
||||
you aren't using this option.
|
||||
|
||||
"aic7xxx=reverse_scan" - Certain PCI motherboards scan for devices at
|
||||
bootup by scanning from the highest numbered PCI device to the
|
||||
lowest numbered PCI device, others do just the opposite and scan
|
||||
from lowest to highest numbered PCI device. There is no reliable
|
||||
way to autodetect this ordering. So, we default to the most common
|
||||
order, which is lowest to highest. Then, in case your motherboard
|
||||
scans from highest to lowest, we have this option. If your BIOS
|
||||
finds the drives on controller A before controller B but the linux
|
||||
kernel finds your drives on controller B before A, then you should
|
||||
use this option.
|
||||
|
||||
"aic7xxx=extended" - Force the driver to detect extended drive translation
|
||||
on your controller. This helps those people who have cards without
|
||||
a SEEPROM make sure that linux and all other operating systems think
|
||||
the same way about your hard drives.
|
||||
|
||||
"aic7xxx=scbram" - Some cards have external SCB RAM that can be used to
|
||||
give the card more hardware SCB slots. This allows the driver to use
|
||||
that SCB RAM. Without this option, the driver won't touch the SCB
|
||||
RAM because it is known to cause problems on a few cards out there
|
||||
(such as 3985 class cards).
|
||||
|
||||
"aic7xxx=irq_trigger:x" - Replace x with either 0 or 1 to force the kernel
|
||||
to use the correct IRQ type for your card. This only applies to EISA
|
||||
based controllers. On these controllers, 0 is for Edge triggered
|
||||
interrupts, and 1 is for Level triggered interrupts. If you aren't
|
||||
sure or don't know which IRQ trigger type your EISA card uses, then
|
||||
let the kernel autodetect the trigger type.
|
||||
|
||||
"aic7xxx=verbose" - This option can be used in one of two ways. If you
|
||||
simply specify aic7xxx=verbose, then the kernel will automatically
|
||||
pick the default set of verbose messages for you to see.
|
||||
Alternatively, you can specify the command as
|
||||
"aic7xxx=verbose:0xXXXX" where the X entries are replaced with
|
||||
hexadecimal digits. This option is a bit field type option. For
|
||||
a full listing of the available options, search for the
|
||||
#define VERBOSE_xxxxxx lines in the aic7xxx.c file. If you want
|
||||
verbose messages, then it is recommended that you simply use the
|
||||
aic7xxx=verbose variant of this command.
|
||||
|
||||
"aic7xxx=pci_parity:x" - This option controls whether or not the driver
|
||||
enables PCI parity error checking on the PCI bus. By default, this
|
||||
checking is disabled. To enable the checks, simply specify pci_parity
|
||||
with no value afterwords. To reverse the parity from even to odd,
|
||||
supply any number other than 0 or 255. In short:
|
||||
pci_parity - Even parity checking (even is the normal PCI parity)
|
||||
pci_parity:x - Where x > 0, Odd parity checking
|
||||
pci_parity:0 - No check (default)
|
||||
NOTE: In order to get Even PCI parity checking, you must use the
|
||||
version of the option that does not include the : and a number at
|
||||
the end (unless you want to enter exactly 2^32 - 1 as the number).
|
||||
|
||||
"aic7xxx=no_probe" - This option will disable the probing for any VLB
|
||||
based 2842 controllers and any EISA based controllers. This is
|
||||
needed on certain newer motherboards where the normal EISA I/O ranges
|
||||
have been claimed by other PCI devices. Probing on those machines
|
||||
will often result in the machine crashing or spontaneously rebooting
|
||||
during startup. Examples of machines that need this are the
|
||||
Dell PowerEdge 6300 machines.
|
||||
|
||||
"aic7xxx=seltime:2" - This option controls how long the card waits
|
||||
during a device selection sequence for the device to respond.
|
||||
The original SCSI spec says that this "should be" 256ms. This
|
||||
is generally not required with modern devices. However, some
|
||||
very old SCSI I devices need the full 256ms. Most modern devices
|
||||
can run fine with only 64ms. The default for this option is
|
||||
64ms. If you need to change this option, then use the following
|
||||
table to set the proper value in the example above:
|
||||
0 - 256ms
|
||||
1 - 128ms
|
||||
2 - 64ms
|
||||
3 - 32ms
|
||||
|
||||
"aic7xxx=panic_on_abort" - This option is for debugging and will cause
|
||||
the driver to panic the linux kernel and freeze the system the first
|
||||
time the drivers abort or reset routines are called. This is most
|
||||
helpful when some problem causes infinite reset loops that scroll too
|
||||
fast to see. By using this option, you can write down what the errors
|
||||
actually are and send that information to me so it can be fixed.
|
||||
|
||||
"aic7xxx=dump_card" - This option will print out the *entire* set of
|
||||
configuration registers on the card during the init sequence. This
|
||||
is a debugging aid used to see exactly what state the card is in
|
||||
when we finally finish our initialization routines. If you don't
|
||||
have documentation on the chipsets, this will do you absolutely
|
||||
no good unless you are simply trying to write all the information
|
||||
down in order to send it to me.
|
||||
|
||||
"aic7xxx=dump_sequencer" - This is the same as the above options except
|
||||
that instead of dumping the register contents on the card, this
|
||||
option dumps the contents of the sequencer program RAM. This gives
|
||||
the ability to verify that the instructions downloaded to the
|
||||
card's sequencer are indeed what they are suppossed to be. Again,
|
||||
unless you have documentation to tell you how to interpret these
|
||||
numbers, then it is totally useless.
|
||||
|
||||
"aic7xxx=override_term:0xffffffff" - This option is used to force the
|
||||
termination on your SCSI controllers to a particular setting. This
|
||||
is a bit mask variable that applies for up to 8 aic7xxx SCSI channels.
|
||||
Each channel gets 4 bits, divided as follows:
|
||||
bit 3 2 1 0
|
||||
| | | Enable/Disable Single Ended Low Byte Termination
|
||||
| | En/Disable Single Ended High Byte Termination
|
||||
| En/Disable Low Byte LVD Termination
|
||||
En/Disable High Byte LVD Termination
|
||||
|
||||
The upper 2 bits that deal with LVD termination only apply to Ultra2
|
||||
controllers. Futhermore, due to the current Ultra2 controller
|
||||
designs, these bits are tied together such that setting either bit
|
||||
enables both low and high byte LVD termination. It is not possible
|
||||
to only set high or low byte LVD termination in this manner. This is
|
||||
an artifact of the BIOS definition on Ultra2 controllers. For other
|
||||
controllers, the only important bits are the two lowest bits. Setting
|
||||
the higher bits on non-Ultra2 controllers has no effect. A few
|
||||
examples of how to use this option:
|
||||
|
||||
Enable low and high byte termination on a non-ultra2 controller that
|
||||
is the first aic7xxx controller (the correct bits are 0011),
|
||||
aic7xxx=override_term:0x3
|
||||
|
||||
Enable all termination on the third aic7xxx controller, high byte
|
||||
termination on the second aic7xxx controller, and low and high byte
|
||||
SE termination on the first aic7xxx controller
|
||||
(bits are 1111 0010 0011),
|
||||
aic7xxx=override_term:0xf23
|
||||
|
||||
No attempt has been made to make this option non-cryptic. It really
|
||||
shouldn't be used except in dire circumstances, and if that happens,
|
||||
I'm probably going to be telling you what to set this to anyway :)
|
||||
|
||||
"aic7xxx=stpwlev:0xffffffff" - This option is used to control the STPWLEV
|
||||
bit in the DEVCONFIG PCI register. Currently, this is one of the
|
||||
very few registers that we have absolutely *no* way of detecting
|
||||
what the variable should be. It depends entirely on how the chipset
|
||||
and external terminators were coupled by the card/motherboard maker.
|
||||
Further, a chip reset (at power up) always sets this bit to 0. If
|
||||
there is no BIOS to run on the chipset/card (such as with a 2910C
|
||||
or a motherboard controller with the BIOS totally disabled) then
|
||||
the variable may not get set properly. Of course, if the proper
|
||||
setting was 0, then that's what it would be after the reset, but if
|
||||
the proper setting is actually 1.....you get the picture. Now, since
|
||||
we can't detect this at all, I've added this option to force the
|
||||
setting. If you have a BIOS on your controller then you should never
|
||||
need to use this option. However, if you are having lots of SCSI
|
||||
reset problems and can't seem to get them knocked out, this may help.
|
||||
|
||||
Here's a test to know for certain if you need this option. Make
|
||||
a boot floppy that you can use to boot your computer up and that
|
||||
will detect the aic7xxx controller. Next, power down your computer.
|
||||
While it's down, unplug all SCSI cables from your Adaptec SCSI
|
||||
controller. Boot the system back up to the Adaptec EZ-SCSI BIOS
|
||||
and then make sure that termination is enabled on your adapter (if
|
||||
you have an Adaptec BIOS of course). Next, boot up the floppy you
|
||||
made and wait for it to detect the aic7xxx controller. If the kernel
|
||||
finds the controller fine, says scsi : x hosts and then tries to
|
||||
detect your devices like normal, up to the point where it fails to
|
||||
mount your root file system and panics, then you're fine. If, on
|
||||
the other hand, the system goes into an infinite reset loop, then
|
||||
you need to use this option and/or the previous option to force the
|
||||
proper termination settings on your controller. If this happens,
|
||||
then you next need to figure out what your settings should be.
|
||||
|
||||
To find the correct settings, power your machine back down, connect
|
||||
back up the SCSI cables, and boot back into your machine like normal.
|
||||
However, boot with the aic7xxx=verbose:0x39 option. Record the
|
||||
initial DEVCONFIG values for each of your aic7xxx controllers as
|
||||
they are listed, and also record what the machine is detecting as
|
||||
the proper termination on your controllers. NOTE: the order in
|
||||
which the initial DEVCONFIG values are printed out is not gauranteed
|
||||
to be the same order as the SCSI controllers are registered. The
|
||||
above option and this option both work on the order of the SCSI
|
||||
controllers as they are registered, so make sure you match the right
|
||||
DEVCONFIG values with the right controllers if you have more than
|
||||
one aic7xxx controller.
|
||||
|
||||
Once you have the detected termination settings and the initial
|
||||
DEVCONFIG values for each controller, then figure out what the
|
||||
termination on each of the controllers *should* be. Hopefully, that
|
||||
part is correct, but it could possibly be wrong if there is
|
||||
bogus cable detection logic on your controller or something similar.
|
||||
If all the controllers have the correct termination settings, then
|
||||
don't set the aic7xxx=override_term variable at all, leave it alone.
|
||||
Next, on any controllers that go into an infinite reset loop when
|
||||
you unplug all the SCSI cables, get the starting DEVCONFIG value.
|
||||
If the initial DEVCONFIG value is divisible by 2, then the correct
|
||||
setting for that controller is 0. If it's an odd number, then
|
||||
the correct setting for that controller is 1. For any other
|
||||
controllers that didn't have an infinite reset problem, then reverse
|
||||
the above options. If DEVCONFIG was even, then the correct setting
|
||||
is 1, if not then the correct setting is 0.
|
||||
|
||||
Now that you know what the correct setting was for each controller,
|
||||
we need to encode that into the aic7xxx=stpwlev:0x... variable.
|
||||
This variable is a bit field encoded variable. Bit 0 is for the first
|
||||
aic7xxx controller, bit 1 for the next, etc. Put all these bits
|
||||
together and you get a number. For example, if the third aic7xxx
|
||||
needed a 1, but the second and first both needed a 0, then the bits
|
||||
would be 100 in binary. This then translates to 0x04. You would
|
||||
therefore set aic7xxx=stpwlev:0x04. This is fairly standard binary
|
||||
to hexadecimal conversions here. If you aren't up to speed on the
|
||||
binary->hex conversion then send an email to the aic7xxx mailing
|
||||
list and someone can help you out.
|
||||
|
||||
"aic7xxx=tag_info:{{8,8..},{8,8..},..}" - This option is used to disable
|
||||
or enable Tagged Command Queueing (TCQ) on specific devices. As of
|
||||
driver version 5.1.11, TCQ is now either on or off by default
|
||||
according to the setting you choose during the make config process.
|
||||
In order to en/disable TCQ for certian devices at boot time, a user
|
||||
may use this boot param. The driver will then parse this message out
|
||||
and en/disable the specific device entries that are present based upon
|
||||
the value given. The param line is parsed in the following manner:
|
||||
|
||||
{ - first instance indicates the start of this parameter values
|
||||
second instance is the start of entries for a particular
|
||||
device entry
|
||||
} - end the entries for a particular host adapter, or end the entire
|
||||
set of parameter entries
|
||||
, - move to next entry. Inside of a set of device entries, this
|
||||
moves us to the next device on the list. Outside of device
|
||||
entries, this moves us to the next host adapter
|
||||
. - Same effect as , but is safe to use with insmod.
|
||||
x - the number to enter into the array at this position.
|
||||
0 = Enable tagged queueing on this device and use the default
|
||||
queue depth
|
||||
1-254 = Enable tagged queueing on this device and use this
|
||||
number as the queue depth
|
||||
255 = Disable tagged queueing on this device.
|
||||
Note: anything above 32 for an actual queue depth is wasteful
|
||||
and not recommended.
|
||||
|
||||
A few examples of how this can be used:
|
||||
|
||||
tag_info:{{8,12,,0,,255,4}}
|
||||
This line will only effect the first aic7xxx card registered. It
|
||||
will set scsi id 0 to a queue depth of 8, id 1 to 12, leave id 2
|
||||
at the default, set id 3 to tagged queueing enabled and use the
|
||||
default queue depth, id 4 default, id 5 disabled, and id 6 to 4.
|
||||
Any not specified entries stay at the default value, repeated
|
||||
commas with no value specified will simply increment to the next id
|
||||
without changing anything for the missing values.
|
||||
|
||||
tag_info:{,,,{,,,255}}
|
||||
First, second, and third adapters at default values. Fourth
|
||||
adapter, id 3 is disabled. Notice that leading commas simply
|
||||
increment what the first number effects, and there are no need
|
||||
for trailing commas. When you close out an adapter, or the
|
||||
entire entry, anything not explicitly set stays at the default
|
||||
value.
|
||||
|
||||
A final note on this option. The scanner I used for this isn't
|
||||
perfect or highly robust. If you mess the line up, the worst that
|
||||
should happen is that the line will get ignored. If you don't
|
||||
close out the entire entry with the final bracket, then any other
|
||||
aic7xxx options after this will get ignored. So, in general, be
|
||||
sure of what you are entering, and after you have it right, just
|
||||
add it to the lilo.conf file so there won't be any mistakes. As
|
||||
a means of checking this parser, the entire tag_info array for
|
||||
each card is now printed out in the /proc/scsi/aic7xxx/x file. You
|
||||
can use that to verify that your options were parsed correctly.
|
||||
|
||||
Boot command line options may be combined to form the proper set of options
|
||||
a user might need. For example, the following is valid:
|
||||
|
||||
aic7xxx=verbose,extended,irq_trigger:1
|
||||
|
||||
The only requirement is that individual options be separated by a comma or
|
||||
a period on the command line.
|
||||
|
||||
Module Loading command options
|
||||
------------------------------
|
||||
When loading the aic7xxx driver as a module, the exact same options are
|
||||
available to the user. However, the syntax to specify the options changes
|
||||
slightly. For insmod, you need to wrap the aic7xxx= argument in quotes
|
||||
and replace all ',' with '.'. So, for example, a valid insmod line
|
||||
would be:
|
||||
|
||||
insmod aic7xxx aic7xxx='verbose.irq_trigger:1.extended'
|
||||
|
||||
This line should result in the *exact* same behaviour as if you typed
|
||||
it in at the lilo prompt and the driver was compiled into the kernel
|
||||
instead of being a module. The reason for the single quote is so that
|
||||
the shell won't try to interpret anything in the line, such as {.
|
||||
Insmod assumes any options starting with a letter instead of a number
|
||||
is a character string (which is what we want) and by switching all of
|
||||
the commas to periods, insmod won't interpret this as more than one
|
||||
string and write junk into our binary image. I consider it a bug in
|
||||
the insmod program that even if you wrap your string in quotes (quotes
|
||||
that pass the shell mind you and that insmod sees) it still treates
|
||||
a comma inside of those quotes as starting a new variable, resulting
|
||||
in memory scribbles if you don't switch the commas to periods.
|
||||
|
||||
|
||||
Kernel Compile options
|
||||
------------------------------
|
||||
The various kernel compile time options for this driver are now fairly
|
||||
well documented in the file Documentation/Configure.help. In order to
|
||||
see this documentation, you need to use one of the advanced configuration
|
||||
programs (menuconfig and xconfig). If you are using the "make menuconfig"
|
||||
method of configuring your kernel, then you would simply highlight the
|
||||
option in question and hit the ? key. If you are using the "make xconfig"
|
||||
method of configuring your kernel, then simply click on the help button
|
||||
next to the option you have questions about. The help information from
|
||||
the Configure.help file will then get automatically displayed.
|
||||
|
||||
/proc support
|
||||
------------------------------
|
||||
The /proc support for the AIC7xxx can be found in the /proc/scsi/aic7xxx/
|
||||
directory. That directory contains a file for each SCSI controller in
|
||||
the system. Each file presents the current configuration and transfer
|
||||
statistics (enabled with #define in aic7xxx.c) for each controller.
|
||||
|
||||
Thanks to Michael Neuffer for his upper-level SCSI help, and
|
||||
Matthew Jacob for statistics support.
|
||||
|
||||
Debugging the driver
|
||||
------------------------------
|
||||
Should you have problems with this driver, and would like some help in
|
||||
getting them solved, there are a couple debugging items built into
|
||||
the driver to facilitate getting the needed information from the system.
|
||||
In general, I need a complete description of the problem, with as many
|
||||
logs as possible concerning what happens. To help with this, there is
|
||||
a command option aic7xxx=panic_on_abort. This option, when set, forces
|
||||
the driver to panic the kernel on the first SCSI abort issued by the
|
||||
mid level SCSI code. If your system is going to reset loops and you
|
||||
can't read the screen, then this is what you need. Not only will it
|
||||
stop the system, but it also prints out a large amount of state
|
||||
information in the process. Second, if you specify the option
|
||||
"aic7xxx=verbose:0x1ffff", the system will print out *SOOOO* much
|
||||
information as it runs that you won't be able to see anything.
|
||||
However, this can actually be very useful if your machine simply
|
||||
locks up when trying to boot, since it will pin-point what was last
|
||||
happening (in regards to the aic7xxx driver) immediately prior to
|
||||
the lockup. This is really only useful if your machine simply can
|
||||
not boot up successfully. If you can get your machine to run, then
|
||||
this will produce far too much information.
|
||||
|
||||
FTP sites
|
||||
------------------------------
|
||||
ftp://ftp.redhat.com/pub/aic/
|
||||
- Out of date. I used to keep stuff here, but too many people
|
||||
complained about having a hard time getting into Red Hat's ftp
|
||||
server. So use the web site below instead.
|
||||
ftp://ftp.pcnet.com/users/eischen/Linux/
|
||||
- Dan Eischen's driver distribution area
|
||||
ftp://ekf2.vsb.cz/pub/linux/kernel/aic7xxx/ftp.teleport.com/
|
||||
- European Linux mirror of Teleport site
|
||||
|
||||
Web sites
|
||||
------------------------------
|
||||
http://people.redhat.com/dledford/
|
||||
- My web site, also the primary aic7xxx site with several related
|
||||
pages.
|
||||
|
||||
Dean W. Gehnert
|
||||
deang@teleport.com
|
||||
|
||||
$Revision: 3.0 $
|
||||
|
||||
Modified by Doug Ledford 1998-2000
|
||||
|
272
Documentation/scsi/cpqfc.txt
Arquivo normal
272
Documentation/scsi/cpqfc.txt
Arquivo normal
@@ -0,0 +1,272 @@
|
||||
Notes for CPQFCTS driver for Compaq Tachyon TS
|
||||
Fibre Channel Host Bus Adapter, PCI 64-bit, 66MHz
|
||||
for Linux (RH 6.1, 6.2 kernel 2.2.12-32, 2.2.14-5)
|
||||
SMP tested
|
||||
Tested in single and dual HBA configuration, 32 and 64bit busses,
|
||||
33 and 66MHz. Only supports FC-AL.
|
||||
SEST size 512 Exchanges (simultaneous I/Os) limited by module kmalloc()
|
||||
max of 128k bytes contiguous.
|
||||
|
||||
Ver 2.5.4 Oct 03, 2002
|
||||
* fixed memcpy of sense buffer in ioctl to copy the smaller defined size
|
||||
Ver 2.5.3 Aug 01, 2002
|
||||
* fix the passthru ioctl to handle the Scsi_Cmnd->request being a pointer
|
||||
Ver 2.5.1 Jul 30, 2002
|
||||
* fix ioctl to pay attention to the specified LUN.
|
||||
Ver 2.5.0 Nov 29, 2001
|
||||
* eliminated io_request_lock. This change makes the driver specific
|
||||
to the 2.5.x kernels.
|
||||
* silenced excessively noisy printks.
|
||||
|
||||
Ver 2.1.2 July 23, 2002
|
||||
* initialize DumCmnd->lun in cpqfcTS_ioctl (used in fcFindLoggedInPorts as LUN index)
|
||||
|
||||
Ver 2.1.1 Oct 18, 2001
|
||||
* reinitialize Cmnd->SCp.sent_command (used to identify commands as
|
||||
passthrus) on calling scsi_done, since the scsi mid layer does not
|
||||
use (or reinitialize) this field to prevent subsequent comands from
|
||||
having it set incorrectly.
|
||||
|
||||
Ver 2.1.0 Aug 27, 2001
|
||||
* Revise driver to use new kernel 2.4.x PCI DMA API, instead of
|
||||
virt_to_bus(). (enables driver to work w/ ia64 systems with >2Gb RAM.)
|
||||
Rework main scatter-gather code to handle cases where SG element
|
||||
lengths are larger than 0x7FFFF bytes and use as many scatter
|
||||
gather pages as necessary. (Steve Cameron)
|
||||
* Makefile changes to bring cpqfc into line w/ rest of SCSI drivers
|
||||
(thanks to Keith Owens)
|
||||
|
||||
Ver 2.0.5 Aug 06, 2001
|
||||
* Reject non-existent luns in the driver rather than letting the
|
||||
hardware do it. (some HW behaves differently than others in this area.)
|
||||
* Changed Makefile to rely on "make dep" instead of explicit dependencies
|
||||
* ifdef'ed out fibre channel analyzer triggering debug code
|
||||
* fixed a jiffies wrapping issue
|
||||
|
||||
Ver 2.0.4 Aug 01, 2001
|
||||
* Incorporated fix for target device reset from Steeleye
|
||||
* Fixed passthrough ioctl so it doesn't hang.
|
||||
* Fixed hang in launch_FCworker_thread() that occurred on some machines.
|
||||
* Avoid problem when number of volumes in a single cabinet > 8
|
||||
|
||||
Ver 2.0.2 July 23, 2001
|
||||
Changed the semiphore changes so the driver would compile in 2.4.7.
|
||||
This version is for 2.4.7 and beyond.
|
||||
|
||||
Ver 2.0.1 May 7, 2001
|
||||
Merged version 1.3.6 fixes into version 2.0.0.
|
||||
|
||||
Ver 2.0.0 May 7, 2001
|
||||
Fixed problem so spinlock is being initialized to UNLOCKED.
|
||||
Fixed updated driver so it compiles in the 2.4 tree.
|
||||
|
||||
Ver 1.3.6 Feb 27, 2001
|
||||
Added Target_Device_Reset function for SCSI error handling
|
||||
Fixed problem with not reseting addressing mode after implicit logout
|
||||
|
||||
|
||||
Ver 1.3.4 Sep 7, 2000
|
||||
Added Modinfo information
|
||||
Fixed problem with statically linking the driver
|
||||
|
||||
Ver 1.3.3, Aug 23, 2000
|
||||
Fixed device/function number in ioctl
|
||||
|
||||
Ver 1.3.2, July 27, 2000
|
||||
Add include for Alpha compile on 2.2.14 kernel (cpq*i2c.c)
|
||||
Change logic for different FCP-RSP sense_buffer location for HSG80 target
|
||||
And search for Agilent Tachyon XL2 HBAs (not finished! - in test)
|
||||
|
||||
Tested with
|
||||
(storage):
|
||||
Compaq RA-4x000, RAID firmware ver 2.40 - 2.54
|
||||
Seagate FC drives model ST39102FC, rev 0006
|
||||
Hitachi DK31CJ-72FC rev J8A8
|
||||
IBM DDYF-T18350R rev F60K
|
||||
Compaq FC-SCSI bridge w/ DLT 35/70 Gb DLT (tape)
|
||||
(servers):
|
||||
Compaq PL-1850R
|
||||
Compaq PL-6500 Xeon (400MHz)
|
||||
Compaq PL-8500 (500MHz, 66MHz, 64bit PCI)
|
||||
Compaq Alpha DS20 (RH 6.1)
|
||||
(hubs):
|
||||
Vixel Rapport 1000 (7-port "dumb")
|
||||
Gadzoox Gibralter (12-port "dumb")
|
||||
Gadzoox Capellix 2000, 3000
|
||||
(switches):
|
||||
Brocade 2010, 2400, 2800, rev 2.0.3a (& later)
|
||||
Gadzoox 3210 (Fabric blade beta)
|
||||
Vixel 7100 (Fabric beta firmare - known hot plug issues)
|
||||
using "qa_test" (esp. io_test script) suite modified from Unix tests.
|
||||
|
||||
Installation:
|
||||
make menuconfig
|
||||
(select SCSI low-level, Compaq FC HBA)
|
||||
make modules
|
||||
make modules_install
|
||||
|
||||
e.g. insmod -f cpqfc
|
||||
|
||||
Due to Fabric/switch delays, driver requires 4 seconds
|
||||
to initialize. If adapters are found, there will be a entries at
|
||||
/proc/scsi/cpqfcTS/*
|
||||
|
||||
sample contents of startup messages
|
||||
|
||||
*************************
|
||||
scsi_register allocating 3596 bytes for CPQFCHBA
|
||||
ioremap'd Membase: c887e600
|
||||
HBA Tachyon RevId 1.2
|
||||
Allocating 119808 for 576 Exchanges @ c0dc0000
|
||||
Allocating 112904 for LinkQ @ c0c20000 (576 elements)
|
||||
Allocating 110600 for TachSEST for 512 Exchanges
|
||||
cpqfcTS: writing IMQ BASE 7C0000h PI 7C4000h
|
||||
cpqfcTS: SEST c0e40000(virt): Wrote base E40000h @ c887e740
|
||||
cpqfcTS: New FC port 0000E8h WWN: 500507650642499D SCSI Chan/Trgt 0/0
|
||||
cpqfcTS: New FC port 0000EFh WWN: 50000E100000D5A6 SCSI Chan/Trgt 0/1
|
||||
cpqfcTS: New FC port 0000E4h WWN: 21000020370097BB SCSI Chan/Trgt 0/2
|
||||
cpqfcTS: New FC port 0000E2h WWN: 2100002037009946 SCSI Chan/Trgt 0/3
|
||||
cpqfcTS: New FC port 0000E1h WWN: 21000020370098FE SCSI Chan/Trgt 0/4
|
||||
cpqfcTS: New FC port 0000E0h WWN: 21000020370097B2 SCSI Chan/Trgt 0/5
|
||||
cpqfcTS: New FC port 0000DCh WWN: 2100002037006CC1 SCSI Chan/Trgt 0/6
|
||||
cpqfcTS: New FC port 0000DAh WWN: 21000020370059F6 SCSI Chan/Trgt 0/7
|
||||
cpqfcTS: New FC port 00000Fh WWN: 500805F1FADB0E20 SCSI Chan/Trgt 0/8
|
||||
cpqfcTS: New FC port 000008h WWN: 500805F1FADB0EBA SCSI Chan/Trgt 0/9
|
||||
cpqfcTS: New FC port 000004h WWN: 500805F1FADB1EB9 SCSI Chan/Trgt 0/10
|
||||
cpqfcTS: New FC port 000002h WWN: 500805F1FADB1ADE SCSI Chan/Trgt 0/11
|
||||
cpqfcTS: New FC port 000001h WWN: 500805F1FADBA2CA SCSI Chan/Trgt 0/12
|
||||
scsi4 : Compaq FibreChannel HBA Tachyon TS HPFC-5166A/1.2: WWN 500508B200193F50
|
||||
on PCI bus 0 device 0xa0fc irq 5 IObaseL 0x3400, MEMBASE 0xc6ef8600
|
||||
PCI bus width 32 bits, bus speed 33 MHz
|
||||
FCP-SCSI Driver v1.3.0
|
||||
GBIC detected: Short-wave. LPSM 0h Monitor
|
||||
scsi : 5 hosts.
|
||||
Vendor: IBM Model: DDYF-T18350R Rev: F60K
|
||||
Type: Direct-Access ANSI SCSI revision: 03
|
||||
Detected scsi disk sdb at scsi4, channel 0, id 0, lun 0
|
||||
Vendor: HITACHI Model: DK31CJ-72FC Rev: J8A8
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdc at scsi4, channel 0, id 1, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdd at scsi4, channel 0, id 2, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sde at scsi4, channel 0, id 3, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdf at scsi4, channel 0, id 4, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdg at scsi4, channel 0, id 5, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdh at scsi4, channel 0, id 6, lun 0
|
||||
Vendor: SEAGATE Model: ST39102FC Rev: 0006
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdi at scsi4, channel 0, id 7, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.48
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdj at scsi4, channel 0, id 8, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.48
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdk at scsi4, channel 0, id 8, lun 1
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.40
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdl at scsi4, channel 0, id 9, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.40
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdm at scsi4, channel 0, id 9, lun 1
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdn at scsi4, channel 0, id 10, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdo at scsi4, channel 0, id 11, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdp at scsi4, channel 0, id 11, lun 1
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdq at scsi4, channel 0, id 12, lun 0
|
||||
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54
|
||||
Type: Direct-Access ANSI SCSI revision: 02
|
||||
Detected scsi disk sdr at scsi4, channel 0, id 12, lun 1
|
||||
resize_dma_pool: unknown device type 12
|
||||
resize_dma_pool: unknown device type 12
|
||||
SCSI device sdb: hdwr sector= 512 bytes. Sectors= 35843670 [17501 MB] [17.5 GB]
|
||||
sdb: sdb1
|
||||
SCSI device sdc: hdwr sector= 512 bytes. Sectors= 144410880 [70513 MB] [70.5 GB]
|
||||
sdc: sdc1
|
||||
SCSI device sdd: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sdd: sdd1
|
||||
SCSI device sde: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sde: sde1
|
||||
SCSI device sdf: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sdf: sdf1
|
||||
SCSI device sdg: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sdg: sdg1
|
||||
SCSI device sdh: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sdh: sdh1
|
||||
SCSI device sdi: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
|
||||
sdi: sdi1
|
||||
SCSI device sdj: hdwr sector= 512 bytes. Sectors= 2056160 [1003 MB] [1.0 GB]
|
||||
sdj: sdj1
|
||||
SCSI device sdk: hdwr sector= 512 bytes. Sectors= 2052736 [1002 MB] [1.0 GB]
|
||||
sdk: sdk1
|
||||
SCSI device sdl: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB]
|
||||
sdl: sdl1
|
||||
SCSI device sdm: hdwr sector= 512 bytes. Sectors= 8380320 [4091 MB] [4.1 GB]
|
||||
sdm: sdm1
|
||||
SCSI device sdn: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB]
|
||||
sdn: sdn1
|
||||
SCSI device sdo: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB]
|
||||
sdo: sdo1
|
||||
SCSI device sdp: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB]
|
||||
sdp: sdp1
|
||||
SCSI device sdq: hdwr sector= 512 bytes. Sectors= 2056160 [1003 MB] [1.0 GB]
|
||||
sdq: sdq1
|
||||
SCSI device sdr: hdwr sector= 512 bytes. Sectors= 2052736 [1002 MB] [1.0 GB]
|
||||
sdr: sdr1
|
||||
|
||||
*************************
|
||||
|
||||
If a GBIC of type Short-wave, Long-wave, or Copper is detected, it will
|
||||
print out; otherwise, "none" is displayed. If the cabling is correct
|
||||
and a loop circuit is completed, you should see "Monitor"; otherwise,
|
||||
"LoopFail" (on open circuit) or some LPSM number/state with bit 3 set.
|
||||
|
||||
|
||||
ERRATA:
|
||||
1. Normally, Linux Scsi queries FC devices with INQUIRY strings. All LUNs
|
||||
found according to INQUIRY should get READ commands at sector 0 to find
|
||||
partition table, etc. Older kernels only query the first 4 devices. Some
|
||||
Linux kernels only look for one LUN per target (i.e. FC device).
|
||||
|
||||
2. Physically removing a device, or a malfunctioning system which hides a
|
||||
device, leads to a 30-second timeout and subsequent _abort call.
|
||||
In some process contexts, this will hang the kernel (crashing the system).
|
||||
Single bit errors in frames and virtually all hot plugging events are
|
||||
gracefully handled with internal driver timer and Abort processing.
|
||||
|
||||
3. Some SCSI drives with error conditions will not handle the 7 second timeout
|
||||
in this software driver, leading to infinite retries on timed out SCSI commands.
|
||||
The 7 secs balances the need to quickly recover from lost frames (esp. on sequence
|
||||
initiatives) and time needed by older/slower/error-state drives in responding.
|
||||
This can be easily changed in "Exchanges[].timeOut".
|
||||
|
||||
4. Due to the nature of FC soft addressing, there is no assurance that the
|
||||
same LUNs (drives) will have the same path (e.g. /dev/sdb1) from one boot to
|
||||
next. Dynamic soft address changes (i.e. 24-bit FC port_id) are
|
||||
supported during run time (e.g. due to hot plug event) by the use of WWN to
|
||||
SCSI Nexus (channel/target/LUN) mapping.
|
||||
|
||||
5. Compaq RA4x00 firmware version 2.54 and later supports SSP (Selective
|
||||
Storage Presentation), which maps LUNs to a WWN. If RA4x00 firmware prior
|
||||
2.54 (e.g. older controller) is used, or the FC HBA is replaced (another WWN
|
||||
is used), logical volumes on the RA4x00 will no longer be visible.
|
||||
|
||||
|
||||
Send questions/comments to:
|
||||
Amy Vanzant-Hodge (fibrechannel@compaq.com)
|
||||
|
102
Documentation/scsi/dc395x.txt
Arquivo normal
102
Documentation/scsi/dc395x.txt
Arquivo normal
@@ -0,0 +1,102 @@
|
||||
README file for the dc395x SCSI driver
|
||||
==========================================
|
||||
|
||||
Status
|
||||
------
|
||||
The driver has been tested with CD-R and CD-R/W drives. These should
|
||||
be safe to use. Testing with hard disks has not been done to any
|
||||
great degree and caution should be exercised if you want to attempt
|
||||
to use this driver with hard disks.
|
||||
|
||||
This is a 2.5 only driver. For a 2.4 driver please see the original
|
||||
driver (which this driver started from) at
|
||||
http://www.garloff.de/kurt/linux/dc395/
|
||||
|
||||
Problems, questions and patches should be submitted to the mailing
|
||||
list. Details on the list, including archives, are available at
|
||||
http://lists.twibble.org/mailman/listinfo/dc395x/
|
||||
|
||||
Parameters
|
||||
----------
|
||||
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 overriden by command line parameters (module or kernel
|
||||
parameters).
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- safe
|
||||
Default: 0, Acceptable values: 0 or 1
|
||||
|
||||
If safe is set to 1 then the adapter will use conservative
|
||||
("safe") default settings. This sets:
|
||||
|
||||
shortcut for dc395x=7,4,9,15,2,10
|
||||
|
||||
- adapter_id
|
||||
Default: 7, Acceptable values: 0 to 15
|
||||
|
||||
Sets the host adapter SCSI ID.
|
||||
|
||||
- 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
|
||||
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
|
||||
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.
|
||||
4 0x10 16 Immediate return on BIOS seek command. (Not used)
|
||||
(*)5 0x20 32 Check for LUNs >= 1.
|
||||
|
||||
- tags
|
||||
Default: 3, Acceptable values: 0-5
|
||||
|
||||
The number of tags is 1<<x, if x has been specified
|
||||
|
||||
- reset_delay
|
||||
Default: 1, Acceptable values: 0-180
|
||||
|
||||
The seconds to not accept commands after a SCSI Reset
|
||||
|
||||
|
||||
For the built in driver the parameters should be prefixed with
|
||||
dc395x. (eg "dc395x.safe=1")
|
||||
|
||||
|
||||
Copyright
|
||||
---------
|
||||
The driver is free software. It is protected by the GNU General Public
|
||||
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.
|
||||
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.
|
||||
We refuse to take any responsibility for that. The driver is provided as-is
|
||||
and YOU USE IT AT YOUR OWN RESPONSIBILITY.
|
83
Documentation/scsi/dpti.txt
Arquivo normal
83
Documentation/scsi/dpti.txt
Arquivo normal
@@ -0,0 +1,83 @@
|
||||
/* 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 condtions
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
43
Documentation/scsi/dtc3x80.txt
Arquivo normal
43
Documentation/scsi/dtc3x80.txt
Arquivo normal
@@ -0,0 +1,43 @@
|
||||
README file for the Linux DTC3180/3280 scsi driver.
|
||||
by Ray Van Tassle (rayvt@comm.mot.com) March 1996
|
||||
Based on the generic & core NCR5380 code by Drew Eckhard
|
||||
|
||||
SCSI device driver for the DTC 3180/3280.
|
||||
Data Technology Corp---a division of Qume.
|
||||
|
||||
The 3280 has a standard floppy interface.
|
||||
|
||||
The 3180 does not. Otherwise, they are identical.
|
||||
|
||||
The DTC3x80 does not support DMA but it does have Pseudo-DMA which is
|
||||
supported by the driver.
|
||||
|
||||
It's DTC406 scsi chip is supposedly compatible with the NCR 53C400.
|
||||
It is memory mapped, uses an IRQ, but no dma or io-port. There is
|
||||
internal DMA, between SCSI bus and an on-chip 128-byte buffer. Double
|
||||
buffering is done automagically by the chip. Data is transferred
|
||||
between the on-chip buffer and CPU/RAM via memory moves.
|
||||
|
||||
The driver detects the possible memory addresses (jumper selectable):
|
||||
CC00, DC00, C800, and D800
|
||||
The possible IRQ's (jumper selectable) are:
|
||||
IRQ 10, 11, 12, 15
|
||||
Parity is supported by the chip, but not by this driver.
|
||||
Information can be obtained from /proc/scsi/dtc3c80/N.
|
||||
|
||||
Note on interrupts:
|
||||
|
||||
The documentation says that it can be set to interrupt whenever the
|
||||
on-chip buffer needs CPU attention. I couldn't get this to work. So
|
||||
the driver polls for data-ready in the pseudo-DMA transfer routine.
|
||||
The interrupt support routines in the NCR3280.c core modules handle
|
||||
scsi disconnect/reconnect, and this (mostly) works. However..... I
|
||||
have tested it with 4 totally different hard drives (both SCSI-1 and
|
||||
SCSI-2), and one CDROM drive. Interrupts works great for all but one
|
||||
specific hard drive. For this one, the driver will eventually hang in
|
||||
the transfer state. I have tested with: "dd bs=4k count=2k
|
||||
of=/dev/null if=/dev/sdb". It reads ok for a while, then hangs.
|
||||
After beating my head against this for a couple of weeks, getting
|
||||
nowhere, I give up. So.....This driver does NOT use interrupts, even
|
||||
if you have the card jumpered to an IRQ. Probably nobody will ever
|
||||
care.
|
63
Documentation/scsi/g_NCR5380.txt
Arquivo normal
63
Documentation/scsi/g_NCR5380.txt
Arquivo normal
@@ -0,0 +1,63 @@
|
||||
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 both NCR5380 and NCR53c400 cards in port or memory
|
||||
mapped modes. Currently this driver can only support one of those mapping
|
||||
modes at a time but it does support both of these chips at the same time.
|
||||
The next release of this driver will support port & memory mapped cards at
|
||||
the same time. It should be able to handle multiple different cards in the
|
||||
same machine.
|
||||
|
||||
The drivers/scsi/Makefile has an override in it for the most common
|
||||
NCR53c400 card, the Trantor T130B in its default configuration:
|
||||
Port: 0x350
|
||||
IRQ : 5
|
||||
|
||||
The NCR53c400 does not support DMA but it does have Pseudo-DMA which is
|
||||
supported by the driver.
|
||||
|
||||
If the default configuration does not work for you, you can use the kernel
|
||||
command lines (eg using the lilo append command):
|
||||
ncr5380=port,irq,dma
|
||||
ncr53c400=port,irq
|
||||
or
|
||||
ncr5380=base,irq,dma
|
||||
ncr53c400=base,irq
|
||||
|
||||
The driver does not probe for any addresses or ports other than those in
|
||||
the OVERRIDE or given to the kernel as above.
|
||||
|
||||
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.
|
||||
|
||||
When NCR53c400 support is compiled in, BIOS parameters will be returned by
|
||||
the driver (the raw 5380 driver does not and I don't plan to fiddle with
|
||||
it!).
|
||||
|
||||
This driver works as a module.
|
||||
When included as a module, parameters can be passed on the insmod/modprobe
|
||||
command line:
|
||||
ncr_irq=xx the interrupt
|
||||
ncr_addr=xx the port or base address (for port or memory
|
||||
mapped, resp.)
|
||||
ncr_dma=xx the DMA
|
||||
ncr_5380=1 to set up for a NCR5380 board
|
||||
ncr_53c400=1 to set up for a NCR53C400 board
|
||||
e.g.
|
||||
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
|
||||
for a port mapped NCR5380 board or
|
||||
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
|
||||
for a memory mapped NCR53C400 board with interrupts disabled.
|
||||
|
||||
(255 should be specified for no or DMA interrupt, 254 to autoprobe for an
|
||||
IRQ line if overridden on the command line.)
|
||||
|
||||
|
||||
Kevin Lentin
|
||||
K.Lentin@cs.monash.edu.au
|
1402
Documentation/scsi/ibmmca.txt
Arquivo normal
1402
Documentation/scsi/ibmmca.txt
Arquivo normal
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
202
Documentation/scsi/in2000.txt
Arquivo normal
202
Documentation/scsi/in2000.txt
Arquivo normal
@@ -0,0 +1,202 @@
|
||||
|
||||
UPDATE NEWS: version 1.33 - 26 Aug 98
|
||||
|
||||
Interrupt management in this driver has become, over
|
||||
time, increasingly odd and difficult to explain - this
|
||||
has been mostly due to my own mental inadequacies. In
|
||||
recent kernels, it has failed to function at all when
|
||||
compiled for SMP. I've fixed that problem, and after
|
||||
taking a fresh look at interrupts in general, greatly
|
||||
reduced the number of places where they're fiddled
|
||||
with. Done some heavy testing and it looks very good.
|
||||
The driver now makes use of the __initfunc() and
|
||||
__initdata macros to save about 4k of kernel memory.
|
||||
Once again, the same code works for both 2.0.xx and
|
||||
2.1.xx kernels.
|
||||
|
||||
UPDATE NEWS: version 1.32 - 28 Mar 98
|
||||
|
||||
Removed the check for legal IN2000 hardware versions:
|
||||
It appears that the driver works fine with serial
|
||||
EPROMs (the 8-pin chip that defines hardware rev) as
|
||||
old as 2.1, so we'll assume that all cards are OK.
|
||||
|
||||
UPDATE NEWS: version 1.31 - 6 Jul 97
|
||||
|
||||
Fixed a bug that caused incorrect SCSI status bytes to be
|
||||
returned from commands sent to LUN's greater than 0. This
|
||||
means that CDROM changers work now! Fixed a bug in the
|
||||
handling of command-line arguments when loaded as a module.
|
||||
Also put all the header data in in2000.h where it belongs.
|
||||
There are no longer any differences between this driver in
|
||||
the 2.1.xx source tree and the 2.0.xx tree, as of 2.0.31
|
||||
and 2.1.45 (or is it .46?) - this makes things much easier
|
||||
for me...
|
||||
|
||||
UPDATE NEWS: version 1.30 - 14 Oct 96
|
||||
|
||||
Fixed a bug in the code that sets the transfer direction
|
||||
bit (DESTID_DPD in the WD_DESTINATION_ID register). There
|
||||
are quite a few SCSI commands that do a write-to-device;
|
||||
now we deal with all of them correctly. Thanks to Joerg
|
||||
Dorchain for catching this one.
|
||||
|
||||
UPDATE NEWS: version 1.29 - 24 Sep 96
|
||||
|
||||
The memory-mapped hardware on the card is now accessed via
|
||||
the 'readb()' and 'readl()' macros - required by the new
|
||||
memory management scheme in the 2.1.x kernel series.
|
||||
As suggested by Andries Brouwer, 'bios_param()' no longer
|
||||
forces an artificial 1023 track limit on drives. Also
|
||||
removed some kludge-code left over from struggles with
|
||||
older (buggy) compilers.
|
||||
|
||||
UPDATE NEWS: version 1.28 - 07 May 96
|
||||
|
||||
Tightened up the "interrupts enabled/disabled" discipline
|
||||
in 'in2000_queuecommand()' and maybe 1 or 2 other places.
|
||||
I _think_ it may have been a little too lax, causing an
|
||||
occasional crash during full moon. A fully functional
|
||||
/proc interface is now in place - if you want to play
|
||||
with it, start by doing 'cat /proc/scsi/in2000/0'. You
|
||||
can also use it to change a few run-time parameters on
|
||||
the fly, but it's mostly for debugging. The curious
|
||||
should take a good look at 'in2000_proc_info()' in the
|
||||
in2000.c file to get an understanding of what it's all
|
||||
about; I figure that people who are really into it will
|
||||
want to add features suited to their own needs...
|
||||
Also, sync is now DISABLED by default.
|
||||
|
||||
UPDATE NEWS: version 1.27 - 10 Apr 96
|
||||
|
||||
Fixed a well-hidden bug in the adaptive-disconnect code
|
||||
that would show up every now and then during extreme
|
||||
heavy loads involving 2 or more simultaneously active
|
||||
devices. Thanks to Joe Mack for keeping my nose to the
|
||||
grindstone on this one.
|
||||
|
||||
UPDATE NEWS: version 1.26 - 07 Mar 96
|
||||
|
||||
1.25 had a nasty bug that bit people with swap partitions
|
||||
and tape drives. Also, in my attempt to guess my way
|
||||
through Intel assembly language, I made an error in the
|
||||
inline code for IO writes. Made a few other changes and
|
||||
repairs - this version (fingers crossed) should work well.
|
||||
|
||||
UPDATE NEWS: version 1.25 - 05 Mar 96
|
||||
|
||||
Kernel 1.3.70 interrupt mods added; old kernels still OK.
|
||||
Big help from Bill Earnest and David Willmore on speed
|
||||
testing and optimizing: I think there's a real improvement
|
||||
in this area.
|
||||
New! User-friendly command-line interface for LILO and
|
||||
module loading - the old method is gone, so you'll need
|
||||
to read the comments for 'setup_strings' near the top
|
||||
of in2000.c. For people with CDROM's or other devices
|
||||
that have a tough time with sync negotiation, you can
|
||||
now selectively disable sync on individual devices -
|
||||
search for the 'nosync' keyword in the command-line
|
||||
comments. Some of you disable the BIOS on the card, which
|
||||
caused the auto-detect function to fail; there is now a
|
||||
command-line option to force detection of a ROM-less card.
|
||||
|
||||
UPDATE NEWS: version 1.24a - 24 Feb 96
|
||||
|
||||
There was a bug in the synchronous transfer code. Only
|
||||
a few people downloaded before I caught it - could have
|
||||
been worse.
|
||||
|
||||
UPDATE NEWS: version 1.24 - 23 Feb 96
|
||||
|
||||
Lots of good changes. Advice from Bill Earnest resulted
|
||||
in much better detection of cards, more efficient usage
|
||||
of the fifo, and (hopefully) faster data transfers. The
|
||||
jury is still out on speed - I hope it's improved some.
|
||||
One nifty new feature is a cool way of doing disconnect/
|
||||
reselect. The driver defaults to what I'm calling
|
||||
'adaptive disconnect' - meaning that each command is
|
||||
evaluated individually as to whether or not it should be
|
||||
run with the option to disconnect/reselect (if the device
|
||||
chooses), or as a "SCSI-bus-hog". When several devices
|
||||
are operating simultaneously, disconnects are usually an
|
||||
advantage. In a single device system, or if only 1 device
|
||||
is being accessed, transfers usually go faster if disconnects
|
||||
are not allowed.
|
||||
|
||||
|
||||
|
||||
The default arguments (you get these when you don't give an 'in2000'
|
||||
command-line argument, or you give a blank argument) will cause
|
||||
the driver to do adaptive disconnect, synchronous transfers, and a
|
||||
minimum of debug messages. If you want to fool with the options,
|
||||
search for 'setup_strings' near the top of the in2000.c file and
|
||||
check the 'hostdata->args' section in in2000.h - but be warned! Not
|
||||
everything is working yet (some things will never work, probably).
|
||||
I believe that disabling disconnects (DIS_NEVER) will allow you
|
||||
to choose a LEVEL2 value higher than 'L2_BASIC', but I haven't
|
||||
spent a lot of time testing this. You might try 'ENABLE_CLUSTERING'
|
||||
to see what happens: my tests showed little difference either way.
|
||||
There's also a define called 'DEFAULT_SX_PER'; this sets the data
|
||||
transfer speed for the asynchronous mode. I've put it at 500 ns
|
||||
despite the fact that the card could handle settings of 376 or
|
||||
252, because higher speeds may be a problem with poor quality
|
||||
cables or improper termination; 500 ns is a compromise. You can
|
||||
choose your own default through the command-line with the
|
||||
'period' keyword.
|
||||
|
||||
|
||||
------------------------------------------------
|
||||
*********** DIP switch settings **************
|
||||
------------------------------------------------
|
||||
|
||||
sw1-1 sw1-2 BIOS address (hex)
|
||||
-----------------------------------------
|
||||
off off C8000 - CBFF0
|
||||
on off D8000 - DBFF0
|
||||
off on D0000 - D3FF0
|
||||
on on BIOS disabled
|
||||
|
||||
sw1-3 sw1-4 IO port address (hex)
|
||||
------------------------------------
|
||||
off off 220 - 22F
|
||||
on off 200 - 20F
|
||||
off on 110 - 11F
|
||||
on on 100 - 10F
|
||||
|
||||
sw1-5 sw1-6 sw1-7 Interrupt
|
||||
------------------------------
|
||||
off off off 15
|
||||
off on off 14
|
||||
off off on 11
|
||||
off on on 10
|
||||
on - - disabled
|
||||
|
||||
sw1-8 function depends on BIOS version. In earlier versions this
|
||||
controlled synchronous data transfer support for MSDOS:
|
||||
off = disabled
|
||||
on = enabled
|
||||
In later ROMs (starting with 01.3 in April 1994) sw1-8 controls
|
||||
the "greater than 2 disk drive" feature that first appeared in
|
||||
MSDOS 5.0 (ignored by Linux):
|
||||
off = 2 drives maximum
|
||||
on = 7 drives maximum
|
||||
|
||||
sw1-9 Floppy controller
|
||||
--------------------------
|
||||
off disabled
|
||||
on enabled
|
||||
|
||||
------------------------------------------------
|
||||
|
||||
I should mention that Drew Eckhardt's 'Generic NCR5380' sources
|
||||
were my main inspiration, with lots of reference to the IN2000
|
||||
driver currently distributed in the kernel source. I also owe
|
||||
much to a driver written by Hamish Macdonald for Linux-m68k(!).
|
||||
And to Eric Wright for being an ALPHA guinea pig. And to Bill
|
||||
Earnest for 2 tons of great input and information. And to David
|
||||
Willmore for extensive 'bonnie' testing. And to Joe Mack for
|
||||
continual testing and feedback.
|
||||
|
||||
|
||||
John Shifflett jshiffle@netcom.com
|
||||
|
70
Documentation/scsi/megaraid.txt
Arquivo normal
70
Documentation/scsi/megaraid.txt
Arquivo normal
@@ -0,0 +1,70 @@
|
||||
Notes on Management Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Overview:
|
||||
--------
|
||||
|
||||
Different classes of controllers from LSI Logic, accept and respond to the
|
||||
user applications in a similar way. They understand the same firmware control
|
||||
commands. Furthermore, the applications also can treat different classes of
|
||||
the controllers uniformly. Hence it is logical to have a single module that
|
||||
interefaces with the applications on one side and all the low level drivers
|
||||
on the other.
|
||||
|
||||
The advantages, though obvious, are listed for completeness:
|
||||
|
||||
i. Avoid duplicate code from the low level drivers.
|
||||
ii. Unburden the low level drivers from having to export the
|
||||
character node device and related handling.
|
||||
iii. Implement any policy mechanisms in one place.
|
||||
iv. Applications have to interface with only module instead of
|
||||
multiple low level drivers.
|
||||
|
||||
Currently this module (called Common Management Module) is used only to issue
|
||||
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:
|
||||
-------
|
||||
|
||||
"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
|
||||
|
||||
"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
|
||||
module acts as a registry for low level hba drivers. The low level drivers
|
||||
(currently only megaraid) register each controller with the common module.
|
||||
|
||||
The applications interface with the common module via the character device
|
||||
node exported by the module.
|
||||
|
||||
The lower level drivers now understand only a new improved ioctl packet called
|
||||
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
|
||||
will be retired.
|
||||
|
||||
Common module dedicates one uioc_t packet to each controller registered. This
|
||||
can easily be more than one. But since megaraid is the only low level driver
|
||||
today, and it can handle only one ioctl, there is no reason to have more. But
|
||||
as new controller classes get added, this will be tuned appropriately.
|
40
Documentation/scsi/ncr53c7xx.txt
Arquivo normal
40
Documentation/scsi/ncr53c7xx.txt
Arquivo normal
@@ -0,0 +1,40 @@
|
||||
README for WarpEngine/A4000T/A4091 SCSI kernels.
|
||||
|
||||
Use the following options to disable options in the SCSI driver.
|
||||
|
||||
Using amiboot for example.....
|
||||
|
||||
To disable Synchronous Negotiation....
|
||||
|
||||
amiboot -k kernel 53c7xx=nosync:0
|
||||
|
||||
To disable Disconnection....
|
||||
|
||||
amiboot -k kernel 53c7xx=nodisconnect:0
|
||||
|
||||
To disable certain SCSI devices...
|
||||
|
||||
amiboot -k kernel 53c7xx=validids:0x3F
|
||||
|
||||
this allows only device ID's 0,1,2,3,4 and 5 for linux to handle.
|
||||
(this is a bitmasked field - i.e. each bit represents a SCSI ID)
|
||||
|
||||
These commands work on a per controller basis and use the option 'next' to
|
||||
move to the next controller in the system.
|
||||
|
||||
e.g.
|
||||
amiboot -k kernel 53c7xx=nodisconnect:0,next,nosync:0
|
||||
|
||||
this uses No Disconnection on the first controller and Asynchronous
|
||||
SCSI on the second controller.
|
||||
|
||||
Known Issues:
|
||||
|
||||
Two devices are known not to function with the default settings of using
|
||||
synchronous SCSI. These are the Archive Viper 150 Tape Drive and the
|
||||
SyQuest SQ555 removeable hard drive. When using these devices on a controller
|
||||
use the 'nosync:0' option.
|
||||
|
||||
Please try these options and post any problems/successes to me.
|
||||
|
||||
Alan Hourihane <alanh@fairlite.demon.co.uk>
|
1854
Documentation/scsi/ncr53c8xx.txt
Arquivo normal
1854
Documentation/scsi/ncr53c8xx.txt
Arquivo normal
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
219
Documentation/scsi/osst.txt
Arquivo normal
219
Documentation/scsi/osst.txt
Arquivo normal
@@ -0,0 +1,219 @@
|
||||
README file for the osst driver
|
||||
===============================
|
||||
(w) Kurt Garloff <garloff@suse.de> 12/2000
|
||||
|
||||
This file describes the osst driver as of version 0.8.x/0.9.x, the released
|
||||
version of the osst driver.
|
||||
It is intended to help advanced users to understand the role of osst and to
|
||||
get them started using (and maybe debugging) it.
|
||||
It won't address issues like "How do I compile a kernel?" or "How do I load
|
||||
a module?", as these are too basic.
|
||||
Once the OnStream got merged into the official kernel, the distro makers
|
||||
will provide the OnStream support for those who are not familiar with
|
||||
hacking their kernels.
|
||||
|
||||
|
||||
Purpose
|
||||
-------
|
||||
The osst driver was developed, because the standard SCSI tape driver in
|
||||
Linux, st, does not support the OnStream SC-x0 SCSI tape. The st is not to
|
||||
blame for that, as the OnStream tape drives do not support the standard SCSI
|
||||
command set for Serial Access Storage Devices (SASDs), which basically
|
||||
corresponds to the QIC-157 spec.
|
||||
Nevertheless, the OnStream tapes are nice pieces of hardware and therefore
|
||||
the osst driver has been written to make these tape devs supported by Linux.
|
||||
The driver is free software. It's released under the GNU GPL and planned to
|
||||
be integrated into the mainstream kernel.
|
||||
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
The osst is a new high-level SCSI driver, just like st, sr, sd and sg. It
|
||||
can be compiled into the kernel or loaded as a module.
|
||||
As it represents a new device, it got assigned a new device node: /dev/osstX
|
||||
are character devices with major no 206 and minor numbers like the /dev/stX
|
||||
devices. If those are not present, you may create them by calling
|
||||
Makedevs.sh as root (see below).
|
||||
The driver started being a copy of st and as such, the osst devices'
|
||||
behavior looks very much the same as st to the userspace applications.
|
||||
|
||||
|
||||
History
|
||||
-------
|
||||
In the first place, osst shared it's identity very much with st. That meant
|
||||
that it used the same kernel structures and the same device node as st.
|
||||
So you could only have either of them being present in the kernel. This has
|
||||
been fixed by registering an own device, now.
|
||||
st and osst can coexist, each only accessing the devices it can support by
|
||||
themselves.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
osst got integrated into the linux kernel. Select it during kernel
|
||||
configuration as module or compile statically into the kernel.
|
||||
Compile your kernel and install the modules.
|
||||
|
||||
Now, your osst driver is inside the kernel or available as a module,
|
||||
depending on your choice during kernel config. You may still need to create
|
||||
the device nodes by calling the Makedevs.sh script (see below) manually,
|
||||
unless you use a devfs kernel, where this won't be needed.
|
||||
|
||||
To load your module, you may use the command
|
||||
modprobe osst
|
||||
as root. dmesg should show you, whether your OnStream tapes have been
|
||||
recognized.
|
||||
|
||||
If you want to have the module autoloaded on access to /dev/osst, you may
|
||||
add something like
|
||||
alias char-major-206 osst
|
||||
to your /etc/modprobe.conf (before 2.6: modules.conf).
|
||||
|
||||
You may find it convenient to create a symbolic link
|
||||
ln -s nosst0 /dev/tape
|
||||
to make programs assuming a default name of /dev/tape more convenient to
|
||||
use.
|
||||
|
||||
The device nodes for osst have to be created. Use the Makedevs.sh script
|
||||
attached to this file.
|
||||
|
||||
|
||||
Using it
|
||||
--------
|
||||
You may use the OnStream tape driver with your standard backup software,
|
||||
which may be tar, cpio, amanda, arkeia, BRU, Lone Tar, ...
|
||||
by specifying /dev/(n)osst0 as the tape device to use or using the above
|
||||
symlink trick. The IOCTLs to control tape operation are also mostly
|
||||
supported and you may try the mt (or mt_st) program to jump between
|
||||
filemarks, eject the tape, ...
|
||||
|
||||
There's one limitation: You need to use a block size of 32kB.
|
||||
|
||||
(This limitation is worked on and will be fixed in version 0.8.8 of
|
||||
this driver.)
|
||||
|
||||
If you just want to get started with standard software, here is an example
|
||||
for creating and restoring a full backup:
|
||||
# Backup
|
||||
tar cvf - / --exclude /proc | buffer -s 32k -m 24M -B -t -o /dev/nosst0
|
||||
# Restore
|
||||
buffer -s 32k -m 8M -B -t -i /dev/osst0 | tar xvf - -C /
|
||||
|
||||
The buffer command has been used to buffer the data before it goes to the
|
||||
tape (or the file system) in order to smooth out the data stream and prevent
|
||||
the tape from needing to stop and rewind. The OnStream does have an internal
|
||||
buffer and a variable speed which help this, but especially on writing, the
|
||||
buffering still proves useful in most cases. It also pads the data to
|
||||
guarantees the block size of 32k. (Otherwise you may pass the -b64 option to
|
||||
tar.)
|
||||
Expect something like 1.8MB/s for the SC-x0 drives and 0.9MB/s for the DI-30.
|
||||
The USB drive will give you about 0.7MB/s.
|
||||
On a fast machine, you may profit from software data compression (z flag for
|
||||
tar).
|
||||
|
||||
|
||||
USB and IDE
|
||||
-----------
|
||||
Via the SCSI emulation layers usb-storage and ide-scsi, you can also use the
|
||||
osst driver to drive the USB-30 and the DI-30 drives. (Unfortunately, there
|
||||
is no such layer for the parallel port, otherwise the DP-30 would work as
|
||||
well.) For the USB support, you need the latest 2.4.0-test kernels and the
|
||||
latest usb-storage driver from
|
||||
http://www.linux-usb.org/
|
||||
http://sourceforge.net/cvs/?group_id=3581
|
||||
|
||||
Note that the ide-tape driver as of 1.16f uses a slightly outdated on-tape
|
||||
format and therefore is not completely interoperable with osst tapes.
|
||||
|
||||
The ADR-x0 line is fully SCSI-2 compliant and is supported by st, not osst.
|
||||
The on-tape format is supposed to be compatible with the one used by osst.
|
||||
|
||||
|
||||
Feedback and updates
|
||||
--------------------
|
||||
The driver development is coordinated through a mailing list
|
||||
<osst@linux1.onstream.nl>
|
||||
a CVS repository and some web pages.
|
||||
The tester's pages which contain recent news and updated drivers to download
|
||||
can be found on
|
||||
http://linux1.onstream.nl/test/
|
||||
|
||||
If you find any problems, please have a look at the tester's page in order
|
||||
to see whether the problem is already known and solved. Otherwise, please
|
||||
report it to the mailing list. Your feedback is welcome. (This holds also
|
||||
for reports of successful usage, of course.)
|
||||
In case of trouble, please do always provide the following info:
|
||||
* driver and kernel version used (see syslog)
|
||||
* driver messages (syslog)
|
||||
* SCSI config and OnStream Firmware (/proc/scsi/scsi)
|
||||
* description of error. Is it reproducible?
|
||||
* software and commands used
|
||||
|
||||
You may subscribe to the mailing list, BTW, it's a majordomo list.
|
||||
|
||||
|
||||
Status
|
||||
------
|
||||
0.8.0 was the first widespread BETA release. Since then a lot of reports
|
||||
have been sent, but mostly reported success or only minor trouble.
|
||||
All the issues have been addressed.
|
||||
Check the web pages for more info about the current developments.
|
||||
0.9.x is the tree for the 2.3/2.4 kernel.
|
||||
|
||||
|
||||
Acknowledgments
|
||||
----------------
|
||||
The driver has been started by making a copy of Kai Makisara's st driver.
|
||||
Most of the development has been done by Willem Riede. The presence of the
|
||||
userspace program osg (onstreamsg) from Terry Hardie has been rather
|
||||
helpful. The same holds for Gadi Oxman's ide-tape support for the DI-30.
|
||||
I did add some patches to those drivers as well and coordinated things a
|
||||
little bit.
|
||||
Note that most of them did mostly spend their spare time for the creation of
|
||||
this driver.
|
||||
The people from OnStream, especially Jack Bombeeck did support this project
|
||||
and always tried to answer HW or FW related questions. Furthermore, he
|
||||
pushed the FW developers to do the right things.
|
||||
SuSE did support this project by allowing me to work on it during my working
|
||||
time for them and by integrating the driver into their distro.
|
||||
|
||||
More people did help by sending useful comments. Sorry to those who have
|
||||
been forgotten. Thanks to all the GNU/FSF and Linux developers who made this
|
||||
platform such an interesting, nice and stable platform.
|
||||
Thanks go to those who tested the drivers and did send useful reports. Your
|
||||
help is needed!
|
||||
|
||||
|
||||
Makedevs.sh
|
||||
-----------
|
||||
#!/bin/sh
|
||||
# Script to create OnStream SC-x0 device nodes (major 206)
|
||||
# Usage: Makedevs.sh [nos [path to dev]]
|
||||
# $Id: README.osst.kernel,v 1.4 2000/12/20 14:13:15 garloff Exp $
|
||||
major=206
|
||||
nrs=4
|
||||
dir=/dev
|
||||
test -z "$1" || nrs=$1
|
||||
test -z "$2" || dir=$2
|
||||
declare -i nr
|
||||
nr=0
|
||||
test -d $dir || mkdir -p $dir
|
||||
while test $nr -lt $nrs; do
|
||||
mknod $dir/osst$nr c $major $nr
|
||||
chown 0.disk $dir/osst$nr; chmod 660 $dir/osst$nr;
|
||||
mknod $dir/nosst$nr c $major $[nr+128]
|
||||
chown 0.disk $dir/nosst$nr; chmod 660 $dir/nosst$nr;
|
||||
mknod $dir/osst${nr}l c $major $[nr+32]
|
||||
chown 0.disk $dir/osst${nr}l; chmod 660 $dir/osst${nr}l;
|
||||
mknod $dir/nosst${nr}l c $major $[nr+160]
|
||||
chown 0.disk $dir/nosst${nr}l; chmod 660 $dir/nosst${nr}l;
|
||||
mknod $dir/osst${nr}m c $major $[nr+64]
|
||||
chown 0.disk $dir/osst${nr}m; chmod 660 $dir/osst${nr}m;
|
||||
mknod $dir/nosst${nr}m c $major $[nr+192]
|
||||
chown 0.disk $dir/nosst${nr}m; chmod 660 $dir/nosst${nr}m;
|
||||
mknod $dir/osst${nr}a c $major $[nr+96]
|
||||
chown 0.disk $dir/osst${nr}a; chmod 660 $dir/osst${nr}a;
|
||||
mknod $dir/nosst${nr}a c $major $[nr+224]
|
||||
chown 0.disk $dir/nosst${nr}a; chmod 660 $dir/nosst${nr}a;
|
||||
let nr+=1
|
||||
done
|
16
Documentation/scsi/ppa.txt
Arquivo normal
16
Documentation/scsi/ppa.txt
Arquivo normal
@@ -0,0 +1,16 @@
|
||||
-------- Terse where to get ZIP Drive help info --------
|
||||
|
||||
General Iomega ZIP drive page for Linux:
|
||||
http://www.torque.net/~campbell/
|
||||
|
||||
Driver achive for old drivers:
|
||||
http://www.torque.net/~campbell/ppa/
|
||||
|
||||
Linux Parport page (parallel port)
|
||||
http://www.torque.net/parport/
|
||||
|
||||
Email list for Linux Parport
|
||||
linux-parport@torque.net
|
||||
|
||||
Email for problems with ZIP or ZIP Plus drivers
|
||||
campbell@torque.net
|
457
Documentation/scsi/qla2xxx.revision.notes
Arquivo normal
457
Documentation/scsi/qla2xxx.revision.notes
Arquivo normal
@@ -0,0 +1,457 @@
|
||||
/*
|
||||
* QLogic ISP2200 and ISP2300 Linux Driver Revision List File.
|
||||
*
|
||||
********************************************************************
|
||||
*
|
||||
* Revision History
|
||||
*
|
||||
* Rev 8.00.00b8 December 5, 2003 AV
|
||||
* - Instruct mid-layer to perform initial scan.
|
||||
*
|
||||
* Rev 8.00.00b7 December 5, 2003 AV
|
||||
* - Resync with Linux Kernel 2.6.0-test11.
|
||||
* - Add basic NVRAM parser (extras/qla_nvr).
|
||||
*
|
||||
* Rev 8.00.00b7-pre11 December 3, 2003 AV
|
||||
* - Sanitize the scsi_qla_host structure:
|
||||
* - Purge unused elements.
|
||||
* - Reorganize high-priority members (cache coherency).
|
||||
* - Add support for NVRAM access via a sysfs binary attribute:
|
||||
* - Consolidate semaphore locking access.
|
||||
* - Fix more PCI posting issues.
|
||||
* - Add extras directory for dump/NVRAM tools.
|
||||
* - Remove unused qla_vendor.c file.
|
||||
*
|
||||
* Rev 8.00.00b7-pre11 November 26, 2003 DG/AV
|
||||
* - Merge several patches from Christoph Hellwig [hch@lst.de]:
|
||||
* - in Linux 2.6 both pci and the scsi layer use the generic
|
||||
* dma direction bits, use them directly instead of the scsi
|
||||
* and pci variants and the (noop) conversion routines.
|
||||
* - Fix _IOXX_BAD() usage for external IOCTL interface.
|
||||
* - Use atomic construct for HA loop_state member.
|
||||
* - Add generic model description text for HBA types.
|
||||
*
|
||||
* Rev 8.00.00b7-pre5 November 17, 2003 AV
|
||||
* - Merge several patches from Christoph Hellwig [hch@lst.de]:
|
||||
* - patch to split the driver into a common qla2xxx.ko and a
|
||||
* qla2?00.ko for each HBA type - the latter modules are
|
||||
* only very small wrappers, mostly for the firmware
|
||||
* images, all the meat is in the common qla2xxx.ko.
|
||||
* - make the failover code optional.
|
||||
* - kill useless lock_kernel in dpc thread startup.
|
||||
* - no need for modversions hacks in 2.6 (or 2.4).
|
||||
* - kill qla2x00_register_with_Linux.
|
||||
* - simplify EH code, cmd or it's hostdata can't be NULL, no
|
||||
* need to search whether the host it's ours, the midlayer
|
||||
* makes sure it won't call into a driver for some else
|
||||
* host.
|
||||
* - Merge several patches from Jes Sorensen
|
||||
* [jes@wildopensource.com]:
|
||||
* - Call qla2x00_config_dma_addressing() before performing
|
||||
* any consistent allocations. This is required since the
|
||||
* dma mask settings will affect the memory
|
||||
* pci_alloc_consistent() will return.
|
||||
* - Call pci_set_consistent_dma_mask() to allow for 64 bit
|
||||
* consistent allocations, required on some platforms such
|
||||
* as the SN2.
|
||||
* - Wait 20 usecs (not sure how long is really necessary,
|
||||
* but this seems safe) after setting CSR_ISP_SOFT_RESET in
|
||||
* the ctrl_status register as the card doesn't respond to
|
||||
* PCI reads while in reset state. This causes a machine
|
||||
* check on some architectures.
|
||||
* - Flush PCI writes before calling udelay() to ensure the
|
||||
* write is not sitting idle in-flight for a while before
|
||||
* hitting the hardware.
|
||||
* - Include linux/vmalloc.h in qla_os.c since it uses
|
||||
* vmalloc().
|
||||
* - Use auto-negotiate link speed when using default
|
||||
* parameters rather than NVRAM settings. Disable NVRAM
|
||||
* reading on SN2 since it's not possible to execute the
|
||||
* HBA's BIOS on an SN2. I suggest doing something similar
|
||||
* for all architectures that do not provide x86 BIOS
|
||||
* emulation.
|
||||
* - Clean-up slab-cache allocations:
|
||||
* - locking.
|
||||
* - mempool allocations in case of low-memory situations.
|
||||
* - Fallback to GA_NXT scan if GID_PT call returns more than
|
||||
* MAX_FIBRE_DEVICES.
|
||||
* - Preserve iterating port ID across GA_NXT calls in
|
||||
* qla2x00_find_all_fabric_devs().
|
||||
* - Pre-calculate ASCII firmware dump length as to not incur the
|
||||
* cost-to-calculate at each invocation of a read().
|
||||
*
|
||||
* Rev 8.00.00b6 November 4, 2003 AV
|
||||
* - Add new 2300 TPX firmware (3.02.18).
|
||||
*
|
||||
* Rev 8.00.00b6-pre25 October 20, 2003 RA/AV
|
||||
* - Resync with Linux Kernel 2.6.0-test9.
|
||||
* - Rework firmware dump process:
|
||||
* - Use binary attribute within sysfs tree.
|
||||
* - Add user-space tool (gdump.sh) to retrieve formatted
|
||||
* buffer.
|
||||
* - Add ISP2100 support.
|
||||
* - Use a slab cache for SRB allocations to reduce memory
|
||||
* pressure.
|
||||
* - Initial conversion of driver logging methods to a new
|
||||
* qla_printk() function which uses dev_printk (Daniel
|
||||
* Stekloff, IBM).
|
||||
* - Further reduce stack usage in qla2x00_configure_local_loop()
|
||||
* and qla2x00_find_all_fabric_devs().
|
||||
* - Separate port state used for routing of I/O's from port
|
||||
* mgmt-login retry etc.
|
||||
*
|
||||
* Rev 8.00.00b6-pre19 October 13, 2003 AV
|
||||
* - Resync with Linux Kernel 2.6.0-test7-bk5.
|
||||
* - Add intelligent RSCN event handling:
|
||||
* - reduce scan time during 'port' RSCN events by only
|
||||
* querying specified port ids.
|
||||
* - Available on ISP23xx cards only.
|
||||
* - Increase maximum number of recognizable targets from 256
|
||||
* to 512.
|
||||
* - Backend changes were previously added to support TPX
|
||||
* (2K logins) firmware. Mid-layer can now scan for targets
|
||||
* (H, B, T, L) where 512 < T >= 0.
|
||||
* - Remove IP support from driver.
|
||||
* - Switch firmware types from IP->TP for ISP22xx and
|
||||
* IPX->TPX for ISP23xx cards.
|
||||
* - Remove files qla_ip.[ch].
|
||||
* - Remove type designations from firmware filenames.
|
||||
*
|
||||
* Rev 8.00.00b6-pre11 September 15, 2003 DG/AV
|
||||
* - Resync with 6.06.00.
|
||||
* - Resync with Linux Kernel 2.6.0-test5-bk3.
|
||||
* - Add new 2300 IPX firmware (3.02.15).
|
||||
*
|
||||
* Rev 8.00.00b5 July 31, 2003 AV
|
||||
* - Always create an fc_lun_t entry for lun 0 - as the mid-
|
||||
* layer requires access to this lun for discovery to occur.
|
||||
* - General sanitizing:
|
||||
* - Add generic firmware option definitions.
|
||||
* - Generalize retrieval/update of firmware options.
|
||||
* - Fix compile errors which occur with extended debug.
|
||||
* - Handle failure cases for scsi_add_host() and
|
||||
* down_interruptible().
|
||||
* - Host template updates:
|
||||
* - Use standard bios_param callback function.
|
||||
* - Disable clustering.
|
||||
* - Remove unchecked_is_dma entry.
|
||||
*
|
||||
* Rev 8.00.00b5-pre5 July 29, 2003 DG/AV
|
||||
* - Resync with 6.06.00b13.
|
||||
* - Resync with Linux Kernel 2.6.0-test2.
|
||||
* - Pass the complete loop_id, not the masked (0xff) value
|
||||
* while issuing mailbox commands (qla_mbx.c/qla_fo.c/
|
||||
* qla_iocb.c/qla_init.c).
|
||||
* - Properly handle zero-length return status for an RLC CDB.
|
||||
* - Create an fclun_t structure for 'disconnected' luns,
|
||||
* peripheral-qualifier of 001b.
|
||||
* - Remove unused LIP-sequence register access during AE 8010.
|
||||
* - Generalize qla2x00_mark_device_lost() to handle forced
|
||||
* login request -- modify all direct/indirect invocations
|
||||
* with proper flag.
|
||||
* - Save RSCN notification (AE 8015h) data in a proper and
|
||||
* consistent format (domain, area, al_pa).
|
||||
* - General sanitizing:
|
||||
* - scsi_qla_host structure member reordering for cache-line
|
||||
* coherency.
|
||||
* - Remove unused SCSI opcodes, endian-swap definitions.
|
||||
* - Remove CMD_* pre-processor defines.
|
||||
* - Remove unused SCSIFCHOTSWAP/GAMAP/MULTIHOST codes.
|
||||
* - Backout patch which added a per-scsi_qla_host scsi host
|
||||
* spinlock, since mid-layer already defines one.
|
||||
* - Add new 2300 IPX firmware (3.02.15).
|
||||
*
|
||||
* Rev 8.00.00b4 July 14, 2003 RA/DG/AV
|
||||
* - Resync with 6.06.00b12.
|
||||
* - Resync with Linux Kernel 2.6.0-test1.
|
||||
* - Remove IOCB throttling code -- originally #if'd.
|
||||
* - Remove apidev_*() routines since proc_mknod() has been
|
||||
* removed -- need alternate IOCTL interface.
|
||||
* - Merge several performance/fix patches from Arjan van de
|
||||
* Ven:
|
||||
* - Undefined operation >> 32.
|
||||
* - No need to acquire mid-layer lock during command
|
||||
* callback.
|
||||
* - Use a per-HBA mid-layer lock.
|
||||
* - Use a non-locked cycle for setting the count of the
|
||||
* newly allocated sp (qla2x00_get_new_sp()).
|
||||
* - Modify semantic behavior of qla2x00_queuecommand():
|
||||
* - Reduce cacheline bouncing by having I/Os submitted
|
||||
* by the IRQ handler.
|
||||
* - Remove extraneous calls to qla2x00_next() during I/O
|
||||
* queuing.
|
||||
* - Use list_splice_init() during qla2x00_done() handling
|
||||
* of commands to reduce list_lock contention.
|
||||
* - RIO mode support for ISP2200:
|
||||
* - Implementation differs slightly from original patch.
|
||||
* - Do not use bottom-half handler (tasklet/work queue)
|
||||
* for qla2x00_done() processing.
|
||||
*
|
||||
* Rev 8.00.00b4-pre22 July 12, 2003 AV
|
||||
* - Check for 'Process Response Queue' requests early during
|
||||
* the Host Status check.
|
||||
* - General sanitizing:
|
||||
* - srb_t structure rewrite, removal of unused members.
|
||||
* - Remove unused fcdev array, fabricid, and PORT_*
|
||||
* definitions.
|
||||
* - Remove unused config_reg_t PCI definitions.
|
||||
* - Add new 2200 IP firmware (2.02.06).
|
||||
* - Add new 2300 IPX firmware (3.02.14).
|
||||
*
|
||||
* Rev 8.00.00b4-pre19 June 30, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.73-bk8.
|
||||
* - Rework IOCB command queuing methods:
|
||||
* - Upper-layer driver *MUST* properly set the direction
|
||||
* bit of SCSI commands.
|
||||
* - Generalize 32bit/64bit queuing path functions.
|
||||
* - Remove costly page-boundary cross check when using
|
||||
* 64bit address capable IOCBs.
|
||||
*
|
||||
* Rev 8.00.00b4-pre15 June 19, 2003 AV
|
||||
* - Resync with 6.06.00b11.
|
||||
* - Continue fcport list consolidation work:
|
||||
* - Updated IOCTL implementations to use new fcports
|
||||
* list.
|
||||
* - Modified product ID check to not verify ISP chip
|
||||
* revision -- ISP2312 v3 (qla2x00_chip_diag()).
|
||||
* - Add new 2300 IPX firmware (3.02.13):
|
||||
*
|
||||
* Rev 8.00.00b4-pre13 June 19, 2003 AV
|
||||
* - Fix build process for qla2100 driver -- no support
|
||||
* for IP.
|
||||
* - SCSI host template modifications:
|
||||
* - Set sg_tablesize based on the derived DMA mask.
|
||||
* - Increase max_sectors since only limit within RISC
|
||||
* is transfer of (((2^32) - 1) >> 9) sectors.
|
||||
*
|
||||
* Rev 8.00.00b4-pre12 June 18, 2003 RA, DG, RL, AV
|
||||
* - Resync with 6.06.00b10.
|
||||
* - Resync with Linux Kernel 2.5.72.
|
||||
* - Initial fcport list consolidation work:
|
||||
* - fcports/fcinitiators/fcdev/fc_ip --> ha->fcports
|
||||
* list.
|
||||
*
|
||||
* Rev 8.00.00b4-pre7 June 05, 2003 AV
|
||||
* - Properly release PCI resouces in init-failure case.
|
||||
* - Reconcile disparite function return code definitions.
|
||||
*
|
||||
* Rev 8.00.00b4-pre4 June 03, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.70-bk8:
|
||||
* - SHT proc_info() changes.
|
||||
* - Restructure SNS Generic Services routines:
|
||||
* - Add qla_gs.c file to driver distribution.
|
||||
* - Configure PCI latency timer for ISP23xx.
|
||||
*
|
||||
* Rev 8.00.00b4-pre3 June 02, 2003 RA, DG, RL, AV
|
||||
* - Resync with 6.06.00b5.
|
||||
* - Rework (again) PCI I/O space configuration
|
||||
* (Anton Blanchard):
|
||||
* - Use pci_set_mwi() routine;
|
||||
* - Remove uneeded qla2x00_set_cache_line() function.
|
||||
* - Remove extraneous modification of PCI_COMMAND word.
|
||||
*
|
||||
* Rev 8.00.00b3 May 29, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.70.
|
||||
* - Move RISC paused check from ISR fast-path.
|
||||
*
|
||||
* Rev 8.00.00b3-pre8 May 26, 2003 AV
|
||||
* - Add new 2300 IPX firmware (3.02.12):
|
||||
* - Rework PCI I/O space configuration.
|
||||
*
|
||||
* Rev 8.00.00b3-pre6 May 22, 2003 RA, DG, RL, AV
|
||||
* - Resync with 6.06.00b3.
|
||||
*
|
||||
* Rev 8.00.00b3-pre4 May 21 2003 AV
|
||||
* - Add new 2300 IPX firmware (3.02.11):
|
||||
* - Remove 2300 TPX firmware from distribution.
|
||||
*
|
||||
* Rev 8.00.00b3-pre3 May 21 2003 AV
|
||||
* - Properly setup PCI configuation space during
|
||||
* initialization:
|
||||
* - Properly configure Memory-Mapped I/O during early
|
||||
* configuration stage.
|
||||
* - Rework IP functionality to support 2k logins.
|
||||
* - Add new 2300 IPX firmware (3.02.11):
|
||||
* - Remove 2300 TPX firmware from distribution.
|
||||
*
|
||||
* Rev 8.00.00b3-pre2 May ??, 2003 RA, DG, RL, AV
|
||||
* - Resync with 6.06.00b1.
|
||||
*
|
||||
* Rev 8.00.00b3-pre1 May ??, 2003 RA, DG, RL, AV
|
||||
* - Resync with 6.05.00.
|
||||
*
|
||||
* Rev 8.00.00b2 May 19, 2003 AV
|
||||
* - Simplify dma_addr_t handling during command queuing given
|
||||
* new block-layer defined restrictions:
|
||||
* - Physical addresses not spanning 4GB boundaries.
|
||||
* - Firmware versions: 2100 TP (1.19.24), 2200 IP (2.02.05),
|
||||
* 2300 TPX (3.02.10).
|
||||
*
|
||||
* Rev 8.00.00b2-pre1 May 13, 2003 AV
|
||||
* - Add support for new 'Hotplug initialization' model.
|
||||
* - Simplify host template by removing unused callbacks.
|
||||
* - Use scsicam facilities to determine geometry.
|
||||
* - Fix compilation issues for non-ISP23xx builds:
|
||||
* - Correct register references in qla_dbg.c.
|
||||
* - Correct Makefile build process.
|
||||
*
|
||||
* Rev 8.00.00b1 May 05, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.69.
|
||||
* - Firmware versions: 2100 TP (1.19.24), 2200 TP (2.02.05),
|
||||
* 2300 TPX (3.02.10).
|
||||
*
|
||||
* Rev 8.00.00b1-pre45 April ??, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.68-bk11:
|
||||
* - Fix improper return-code assignment during fabric
|
||||
* discovery.
|
||||
* - Remove additional extraneous #defines from
|
||||
* qla_settings.h.
|
||||
* - USE_PORTNAME -- FO will always use portname.
|
||||
* - Default queue depth size set to 64.
|
||||
*
|
||||
* Rev 8.00.00b1-pre42 April ??, 2003 AV
|
||||
* - Convert bottom-half tasklet to a work_queue.
|
||||
* - Initial basic coding of dynamic queue depth handling
|
||||
* during QUEUE FULL statuses.
|
||||
* - Fix mailbox interface problem with
|
||||
* qla2x00_get_retry_cnt().
|
||||
*
|
||||
* Rev 8.00.00b1-pre41 April ??, 2003 AV
|
||||
* - Convert build defines qla2[1|2|3]00 macros to
|
||||
* qla2[1|2|3]xx due to module name stringification clashes.
|
||||
* - Add additional ISP2322 checks during board configuration.
|
||||
*
|
||||
* Rev 8.00.00b1-pre40 April ??, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.68-bk8:
|
||||
* - Updated IRQ handler interface.
|
||||
* - Add ISP dump code (stub) in case of SYSTEM_ERROR on
|
||||
* ISP2100.
|
||||
* - Add new 2200 IP firmware (2.02.05).
|
||||
*
|
||||
* Rev 8.00.00b1-pre39 April ??, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.68.
|
||||
* - Add simple build.sh script to aid in external compilation.
|
||||
* - Clean-break with Kernel 2.4 compatibility.
|
||||
* - Rework DPC routine -- completion routines for signaling.
|
||||
* - Re-add HBAAPI character device node for IOCTL support.
|
||||
* - Remove residual QLA2X_PERFORMANCE defines.
|
||||
* - Allocate SP pool via __get_free_pages() rather than
|
||||
* individual kmalloc()'s.
|
||||
* - Inform SCSI mid-layer of 16-byte CDB support
|
||||
* (host->max_cmd_len):
|
||||
* - Remove unecessary 'more_cdb' handling code from
|
||||
* qla_iocb.c and qla_xioct.c.
|
||||
* - Reduce duplicate code in fabric scanning logic (MS IOCB
|
||||
* preparation).
|
||||
* - Add ISP dump code in case of SYSTEM_ERROR.
|
||||
* - Remove 2300 VIX firmware from distribution:
|
||||
* - Add initial code for IPX support.
|
||||
* - Add new 2300 TPX firmware (3.02.10).
|
||||
*
|
||||
* Rev 8.00.00b1-pre34 April ??, 2003 AV
|
||||
* - Resync with Linux Kernel 2.5.67.
|
||||
* - Use domain/area/al_pa fields when displaying PortID
|
||||
* values -- addresses endianess issues.
|
||||
* - Rework large case statement to check 'common' CDB commands
|
||||
* early in qla2x00_get_cmd_direction().
|
||||
*
|
||||
* Rev 8.00.00b1-pre31 April ??, 2003 AV
|
||||
* - Update makefile to support PPC64 build.
|
||||
* - Retool NVRAM configuration routine and structures:
|
||||
* - Consoldate ISP21xx/ISP22xx/ISP23xx configuration
|
||||
* (struct nvram_t).
|
||||
* - Remove big/little endian support structures in favor of
|
||||
* simplified bit-operations within byte fields.
|
||||
* - Fix long-standing 'static' buffer sharing problem in
|
||||
* qla2x00_configure_fabric().
|
||||
*
|
||||
* Rev 8.00.00b1-pre30 April ??, 2003 AV
|
||||
* - Complete implementation of GID_PT scan.
|
||||
* - Use consistent MS IOCB invocation method to query SNS:
|
||||
* - Add RNN_ID and RSNN_NN registrations in a fabric.
|
||||
* - Remove unused Mailbox Command 6Eh (Send SNS) support
|
||||
* structures.
|
||||
* - Use 64bit safe IOCBs while issuing INQUIRY and RLC during
|
||||
* topology scan.
|
||||
* - Until reimplementation of fcdev_t/fcport list
|
||||
* consolidation, valid loop_id ranges are still limited from
|
||||
* 0x00 through 0xFF -- enforce this within the code.
|
||||
*
|
||||
* Rev 8.00.00b1-pre27 March ??, 2003 AV
|
||||
* - Resync with 6.05.00b9.
|
||||
* - Retool HBA PCI configuration -- qla2x00_pci_config().
|
||||
* - Remove inconsistent use of delay routines (UDELAY/SYS*).
|
||||
* - Continue to teardown/clean/add comments and debug
|
||||
* routines.
|
||||
* - Properly swap bytes of the device's nodename in
|
||||
* qla2x00_configure_local_loop().
|
||||
*
|
||||
* Rev 8.00.00b1-pre25 March ??, 2003 AV
|
||||
* - Resync with 6.05.00b8.
|
||||
*
|
||||
* Rev 8.00.00b1-pre23 March ??, 2003 AV
|
||||
* - Remove (#define) IOCB usage throttling.
|
||||
* - Abstract interrupt polling with qla2x00_poll().
|
||||
* - Modify lun scanning logic:
|
||||
* - If the device does not support the SCSI Report Luns
|
||||
* command, the driver will now only scan from 0 to the
|
||||
* max#-luns as defined in the NVRAM (BIOS), rather than
|
||||
* blindly scanning from 0 to 255 -- which could result in
|
||||
* an increase in startup time when running against slow
|
||||
* (JBOD) devices.
|
||||
* - Rework reset logic in qla2x00_reset_chip() (spec).
|
||||
*
|
||||
* Rev 8.00.00b1-pre22 March ??, 2003 AV
|
||||
* - Resync with 6.05.00b7.
|
||||
* - Cleanup (rewrite) ISR handler.
|
||||
* - Rename kmem_zalloc --> qla2x00_kmem_zalloc():
|
||||
* - This function will eventually be removed.
|
||||
* - Add new 2300 VIX firmware (3.02.09):
|
||||
* - Support for Tape, Fabric, 2K logins, IP, and VI.
|
||||
*
|
||||
* Rev 8.00.00b1-pre18 March ??, 2003 AV
|
||||
* - Support 232x type ISPs.
|
||||
* - Support single firmware for each ISP type:
|
||||
* - Restructure brd_info/fw_info methods.
|
||||
* - Streamline firmware load process.
|
||||
* - Properly query firmware for version information.
|
||||
* - Remove extraneous scsi_qla_host members:
|
||||
* - device_id ==> pdev->device
|
||||
* - Fix fc4 features (RFF_ID) registration.
|
||||
* - Convert kmem_zalloc --> qla2x00_kmem_zalloc().
|
||||
* - Remove unused/extraneous #defines (USE_PORTNAME).
|
||||
*
|
||||
* Rev 8.00.00b1-pre14 March ??, 2003 AV
|
||||
* - Resync with 6.05.00b6.
|
||||
* - Initial source-code restructuring effort.
|
||||
* - Build procedure.
|
||||
* - Source file layout -- intuitive component layout.
|
||||
* - Remove unused #defines (*PERFORMANCE, WORD_FW_LOAD, etc).
|
||||
* - Add support for 2K logins (TPX -- firmware).
|
||||
* - Add module parameter ql2xsuspendcount.
|
||||
* - Add new 2200 IP/TP firmware (2.02.04).
|
||||
*
|
||||
* Rev 8.00.00b1-pre9 March ??, 2003 RL/DG/RA/AV
|
||||
* - Use kernel struct list_head for fcport and fclun lists.
|
||||
* - Remove extraneous (L|M)S_64BITS() and QL21_64*() defines.
|
||||
*
|
||||
* Rev 8.00.00b1-pre8 February 28, 2003 RL/DG/RA/AV
|
||||
* - Resync with 6.05.00b3.
|
||||
*
|
||||
* Rev 8.00.00b1-pre7 February 23, 2003 RL/DG/RA/AV
|
||||
* - Add alternate fabric scanning logic (GID_PT/GNN_ID/GPN_ID).
|
||||
* - Remove use of deprecated function check_region().
|
||||
* - Add new 2300 IP/TP firmware (3.02.08).
|
||||
*
|
||||
* Rev 8.00.00b1-pre5 January 28, 2003 RL/DG/RA/AV
|
||||
* - Resync with 6.05.00b3.
|
||||
* - Consolidate device_reg structure definitions for ISP types.
|
||||
* - Add support for new queue-depth selection.
|
||||
* - Add new 2300 IP/TP firmware (3.02.07).
|
||||
*
|
||||
* Rev 8.00.00b1-pre1 January 17, 2003 AV
|
||||
* - Initial branch from 6.04.00b8 driver.
|
||||
* - Remove VMWARE specific code.
|
||||
* - Add support for pci_driver interface.
|
||||
*
|
||||
********************************************************************/
|
79
Documentation/scsi/qlogicfas.txt
Arquivo normal
79
Documentation/scsi/qlogicfas.txt
Arquivo normal
@@ -0,0 +1,79 @@
|
||||
|
||||
This driver supports the Qlogic FASXXX family of chips. This driver
|
||||
only works with the ISA, VLB, and PCMCIA versions of the Qlogic
|
||||
FastSCSI! cards as well as any other card based on the FASXX chip
|
||||
(including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards).
|
||||
|
||||
This driver does NOT support the PCI version. Support for these PCI
|
||||
Qlogic boards:
|
||||
|
||||
* IQ-PCI
|
||||
* IQ-PCI-10
|
||||
* IQ-PCI-D
|
||||
|
||||
is provided by the qlogicisp.c driver. Check README.qlogicisp for
|
||||
details.
|
||||
|
||||
Nor does it support the PCI-Basic, which is supported by the
|
||||
'am53c974' driver.
|
||||
|
||||
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
|
||||
QL41DOS.SYS and QL40ENBL.SYS. These are a minimum, but loading the
|
||||
rest of the modules won't interfere with the operation. The next
|
||||
thing to do is load the kernel without resetting the hardware, which
|
||||
can be a simple ctrl-alt-delete with a boot floppy, or by using
|
||||
loadlin with the kernel image accessible from DOS. If you are using
|
||||
the Linux PCMCIA driver, you will have to adjust it or otherwise stop
|
||||
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
|
||||
|
||||
The top of the qlogic.c file has a number of defines that controls
|
||||
configuration. As shipped, it provides a balance between speed and
|
||||
function. If there are any problems, try setting SLOW_CABLE to 1, and
|
||||
then try changing USE_IRQ and TURBO_PDMA to zero. If you are familiar
|
||||
with SCSI, there are other settings which can tune the bus.
|
||||
|
||||
It may be a good idea to enable RESET_AT_START, especially if the
|
||||
devices may not have been just powered up, or if you are restarting
|
||||
after a crash, since they may be busy trying to complete the last
|
||||
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
|
||||
|
||||
Make sure it works properly under DOS. You should also do an initial FDISK
|
||||
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
|
||||
|
||||
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
|
||||
large executable or archive). It should be at least 5 megabytes, but
|
||||
you can do multiple tests on smaller files. Then do a COMP to verify
|
||||
that the file copied properly. (Turn off all caching when doing these
|
||||
tests, otherwise you will test your RAM and not the files). Then do
|
||||
10 COMPs, comparing the same file on the SCSI hard drive, i.e. "COMP
|
||||
realbig.doc realbig.doc". Then do it after the computer gets warm.
|
||||
|
||||
I noticed my system which seems to work 100% would fail this test if
|
||||
the computer was left on for a few hours. It was worse with longer
|
||||
cables, and more devices on the SCSI bus. What seems to happen is
|
||||
that it gets a false ACK causing an extra byte to be inserted into the
|
||||
stream (and this is not detected). This can be caused by bad
|
||||
termination (the ACK can be reflected), or by noise when the chips
|
||||
work less well because of the heat, or when cables get too long for
|
||||
the speed.
|
||||
|
||||
Remember, if it doesn't work under DOS, it probably won't work under
|
||||
Linux.
|
30
Documentation/scsi/qlogicisp.txt
Arquivo normal
30
Documentation/scsi/qlogicisp.txt
Arquivo normal
@@ -0,0 +1,30 @@
|
||||
Notes for the QLogic ISP1020 PCI SCSI Driver:
|
||||
|
||||
This driver works well in practice, but does not support disconnect/
|
||||
reconnect, which makes using it with tape drives impractical.
|
||||
|
||||
It should work for most host adaptors with the ISP1020 chip. The
|
||||
QLogic Corporation produces several PCI SCSI adapters which should
|
||||
work:
|
||||
|
||||
* IQ-PCI
|
||||
* IQ-PCI-10
|
||||
* IQ-PCI-D
|
||||
|
||||
This driver may work with boards containing the ISP1020A or ISP1040A
|
||||
chips, but that has not been tested.
|
||||
|
||||
This driver will NOT work with:
|
||||
|
||||
* ISA or VL Bus Qlogic cards (they use the 'qlogicfas' driver)
|
||||
* PCI-basic (it uses the 'am53c974' driver)
|
||||
|
||||
Much thanks to QLogic's tech support for providing the latest ISP1020
|
||||
firmware, and for taking the time to review my code.
|
||||
|
||||
Erik Moe
|
||||
ehm@cris.com
|
||||
|
||||
Revised:
|
||||
Michael A. Griffith
|
||||
grif@cs.ucr.edu
|
101
Documentation/scsi/scsi-generic.txt
Arquivo normal
101
Documentation/scsi/scsi-generic.txt
Arquivo normal
@@ -0,0 +1,101 @@
|
||||
Notes on Linux SCSI Generic (sg) driver
|
||||
---------------------------------------
|
||||
20020126
|
||||
Introduction
|
||||
============
|
||||
The SCSI Generic driver (sg) is one of the four "high level" SCSI device
|
||||
drivers along with sd, st and sr (disk, tape and CDROM respectively). Sg
|
||||
is more generalized (but lower level) than its siblings and tends to be
|
||||
used on SCSI devices that don't fit into the already serviced categories.
|
||||
Thus sg is used for scanners, CD writers and reading audio CDs digitally
|
||||
amongst other things.
|
||||
|
||||
Rather than document the driver's interface here, version information
|
||||
is provided plus pointers (i.e. URLs) where to find documentation
|
||||
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) .
|
||||
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.
|
||||
- sg version 3 found in the lk 2.4 series (and the lk 2.5 series).
|
||||
It adds the sg_io_hdr interface structure.
|
||||
|
||||
|
||||
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
|
||||
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://www.torque.net/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://www.torque.net/sg/p/scsi-generic.txt . A larger version
|
||||
is at: http://www.torque.net/sg/p/scsi-generic_long.txt .
|
||||
|
||||
The original documentation for the sg driver (prior to lk 2.2.6) can be
|
||||
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
|
||||
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
|
||||
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
|
||||
and earlier
|
||||
Both packages will work in the lk 2.4 series however sg3_utils offers more
|
||||
capabilities. They can be found at: http://www.torque.net/sg and
|
||||
freshmeat.net
|
||||
|
||||
Another approach is to look at the applications that use the sg driver.
|
||||
These include cdrecord, cdparanoia, SANE and cdrdao.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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 .
|
||||
|
||||
|
||||
Douglas Gilbert
|
||||
26th January 2002
|
||||
dgilbert@interlog.com
|
44
Documentation/scsi/scsi.txt
Arquivo normal
44
Documentation/scsi/scsi.txt
Arquivo normal
@@ -0,0 +1,44 @@
|
||||
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://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
|
||||
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
|
||||
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
|
||||
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
|
||||
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,
|
||||
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
|
||||
built into the kernel.
|
||||
|
||||
|
||||
** There is a variant of the st driver for controlling OnStream tape
|
||||
devices. Its module name is osst.o .
|
||||
|
1546
Documentation/scsi/scsi_mid_low_api.txt
Arquivo normal
1546
Documentation/scsi/scsi_mid_low_api.txt
Arquivo normal
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
499
Documentation/scsi/st.txt
Arquivo normal
499
Documentation/scsi/st.txt
Arquivo normal
@@ -0,0 +1,499 @@
|
||||
This file contains brief information about the SCSI tape driver.
|
||||
The driver is currently maintained by Kai M<>kisara (email
|
||||
Kai.Makisara@kolumbus.fi)
|
||||
|
||||
Last modified: Mon Mar 7 21:14:44 2005 by kai.makisara
|
||||
|
||||
|
||||
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
|
||||
one of the following three methods:
|
||||
|
||||
1. Each user can specify the tape parameters he/she wants to use
|
||||
directly with ioctls. This is administratively a very simple and
|
||||
flexible method and applicable to single-user workstations. However,
|
||||
in a multiuser environment the next user finds the tape parameters in
|
||||
state the previous user left them.
|
||||
|
||||
2. The system manager (root) can define default values for some tape
|
||||
parameters, like block size and density using the MTSETDRVBUFFER ioctl.
|
||||
These parameters can be programmed to come into effect either when a
|
||||
new tape is loaded into the drive or if writing begins at the
|
||||
beginning of the tape. The second method is applicable if the tape
|
||||
drive performs auto-detection of the tape format well (like some
|
||||
QIC-drives). The result is that any tape can be read, writing can be
|
||||
continued using existing format, and the default format is used if
|
||||
the tape is rewritten from the beginning (or a new tape is written
|
||||
for the first time). The first method is applicable if the drive
|
||||
does not perform auto-detection well enough and there is a single
|
||||
"sensible" mode for the device. An example is a DAT drive that is
|
||||
used only in variable block mode (I don't know if this is sensible
|
||||
or not :-).
|
||||
|
||||
The user can override the parameters defined by the system
|
||||
manager. The changes persist until the defaults again come into
|
||||
effect.
|
||||
|
||||
3. By default, up to four modes can be defined and selected using the minor
|
||||
number (bits 5 and 6). The number of modes can be changed by changing
|
||||
ST_NBR_MODE_BITS in st.h. Mode 0 corresponds to the defaults discussed
|
||||
above. Additional modes are dormant until they are defined by the
|
||||
system manager (root). When specification of a new mode is started,
|
||||
the configuration of mode 0 is used to provide a starting point for
|
||||
definition of the new mode.
|
||||
|
||||
Using the modes allows the system manager to give the users choices
|
||||
over some of the buffering parameters not directly accessible to the
|
||||
users (buffered and asynchronous writes). The modes also allow choices
|
||||
between formats in multi-tape operations (the explicitly overridden
|
||||
parameters are reset when a new tape is loaded).
|
||||
|
||||
If more than one mode is used, all modes should contain definitions
|
||||
for the same set of parameters.
|
||||
|
||||
Many Unices contain internal tables that associate different modes to
|
||||
supported devices. The Linux SCSI tape driver does not contain such
|
||||
tables (and will not do that in future). Instead of that, a utility
|
||||
program can be made that fetches the inquiry data sent by the device,
|
||||
scans its database, and sets up the modes using the ioctls. Another
|
||||
alternative is to make a small script that uses mt to set the defaults
|
||||
tailored to the system.
|
||||
|
||||
The driver supports fixed and variable block size (within buffer
|
||||
limits). Both the auto-rewind (minor equals device number) and
|
||||
non-rewind devices (minor is 128 + device number) are implemented.
|
||||
|
||||
In variable block mode, the byte count in write() determines the size
|
||||
of the physical block on tape. When reading, the drive reads the next
|
||||
tape block and returns to the user the data if the read() byte count
|
||||
is at least the block size. Otherwise, error ENOMEM is returned.
|
||||
|
||||
In fixed block mode, the data transfer between the drive and the
|
||||
driver is in multiples of the block size. The write() byte count must
|
||||
be a multiple of the block size. This is not required when reading but
|
||||
may be advisable for portability.
|
||||
|
||||
Support is provided for changing the tape partition and partitioning
|
||||
of the tape with one or two partitions. By default support for
|
||||
partitioned tape is disabled for each driver and it can be enabled
|
||||
with the ioctl MTSETDRVBUFFER.
|
||||
|
||||
By default the driver writes one filemark when the device is closed after
|
||||
writing and the last operation has been a write. Two filemarks can be
|
||||
optionally written. In both cases end of data is signified by
|
||||
returning zero bytes for two consecutive reads.
|
||||
|
||||
If rewind, offline, bsf, or seek is done and previous tape operation was
|
||||
write, a filemark is written before moving tape.
|
||||
|
||||
The compile options are defined in the file linux/drivers/scsi/st_options.h.
|
||||
|
||||
4. If the open option O_NONBLOCK is used, open succeeds even if the
|
||||
drive is not ready. If O_NONBLOCK is not used, the driver waits for
|
||||
the drive to become ready. If this does not happen in ST_BLOCK_SECONDS
|
||||
seconds, open fails with the errno value EIO. With O_NONBLOCK the
|
||||
device can be opened for writing even if there is a write protected
|
||||
tape in the drive (commands trying to write something return error if
|
||||
attempted).
|
||||
|
||||
|
||||
MINOR NUMBERS
|
||||
|
||||
The tape driver currently supports 128 drives by default. This number
|
||||
can be increased by editing st.h and recompiling the driver if
|
||||
necessary. The upper limit is 2^17 drives if 4 modes for each drive
|
||||
are used.
|
||||
|
||||
The minor numbers consist of the following bit fields:
|
||||
|
||||
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
|
||||
backward compatible with the numbering used when the minor number was
|
||||
only 8 bits wide.
|
||||
|
||||
|
||||
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
|
||||
and non-rewind entries for each mode. The names are stxy and nstxy, where x
|
||||
is the tape number and y a character corresponding to the mode (none, l, m,
|
||||
a). For example, the directories for the first tape device are (assuming four
|
||||
modes): st0 nst0 st0l nst0l st0m nst0m st0a nst0a.
|
||||
|
||||
Each directory contains the entries: default_blksize default_compression
|
||||
default_density defined dev device driver. The file 'defined' contains 1
|
||||
if the mode is defined and zero if not defined. The files 'default_*' contain
|
||||
the defaults set by the user. The value -1 means the default is not set. The
|
||||
file 'dev' contains the device numbers corresponding to this device. The links
|
||||
'device' and 'driver' point to the SCSI device and driver entries.
|
||||
|
||||
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).
|
||||
|
||||
|
||||
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
|
||||
file being read is closed. The BSD semantics leaves the tape where it
|
||||
currently is whereas the SYS V semantics moves the tape past the next
|
||||
filemark unless the filemark has just been crossed.
|
||||
|
||||
The default is BSD semantics.
|
||||
|
||||
|
||||
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
|
||||
- one or more pages can't be locked into memory (should not happen in
|
||||
any reasonable situation)
|
||||
|
||||
The size of the driver buffers is always at least one tape block. In fixed
|
||||
block mode, the minimum buffer size is defined (in 1024 byte units) by
|
||||
ST_FIXED_BUFFER_BLOCKS. With small block size this allows buffering of
|
||||
several blocks and using one SCSI read or write to transfer all of the
|
||||
blocks. Buffering of data across write calls in fixed block mode is
|
||||
allowed if ST_BUFFER_WRITES is non-zero and direct i/o is not used.
|
||||
Buffer allocation uses chunks of memory having sizes 2^n * (page
|
||||
size). Because of this the actual buffer size may be larger than the
|
||||
minimum allowable buffer size.
|
||||
|
||||
NOTE that if direct i/o is used, the small writes are not buffered. This may
|
||||
cause a surprise when moving from 2.4. There small writes (e.g., tar without
|
||||
-b option) may have had good throughput but this is not true any more with
|
||||
2.6. Direct i/o can be turned off to solve this problem but a better solution
|
||||
is to use bigger write() byte counts (e.g., tar -b 64).
|
||||
|
||||
Asynchronous writing. Writing the buffer contents to the tape is
|
||||
started and the write call returns immediately. The status is checked
|
||||
at the next tape operation. Asynchronous writes are not done with
|
||||
direct i/o and not in fixed block mode.
|
||||
|
||||
Buffered writes and asynchronous writes may in some rare cases cause
|
||||
problems in multivolume operations if there is not enough space on the
|
||||
tape after the early-warning mark to flush the driver buffer.
|
||||
|
||||
Read ahead for fixed block mode (ST_READ_AHEAD). Filling the buffer is
|
||||
attempted even if the user does not want to get all of the data at
|
||||
this read command. Should be disabled for those drives that don't like
|
||||
a filemark to truncate a read request or that don't like backspacing.
|
||||
|
||||
Scatter/gather buffers (buffers that consist of chunks non-contiguous
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
|
||||
|
||||
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
|
||||
returns -1 and errno is set to ENOSPC. To enable writing a trailer,
|
||||
the next write is allowed to proceed and, if successful, the number of
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
is to use the same keyword used when loading as module but prepended
|
||||
with 'st.'. For instance, to set the maximum number of scatter/gather
|
||||
segments, the parameter 'st.max_sg_segs=xx' should be used (xx is the
|
||||
number of scatter/gather segments).
|
||||
|
||||
For compatibility, the old syntax from early 2.5 and 2.4 kernel
|
||||
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:
|
||||
|
||||
st=buffer_kbs:64,write_threhold_kbs:60
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
to find an mt that supports all of the Linux SCSI tape ioctls and
|
||||
opens the device for writing if the tape contents will be modified
|
||||
(look for a package mt-st* from the Linux ftp sites; the GNU mt does
|
||||
not open for writing for, e.g., erase).
|
||||
|
||||
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
|
||||
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.
|
||||
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)
|
||||
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
|
||||
variable block mode (if applicable).
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
partitions (the argument gives in megabytes the size of
|
||||
partition 1 that is physically the first partition of the
|
||||
tape). The drive has to support partitions with size specified
|
||||
by the initiator. Inactive unless MT_ST_CAN_PARTITIONS set.
|
||||
MTSETDRVBUFFER
|
||||
Is used for several purposes. The command is obtained from count
|
||||
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
|
||||
The drive buffer option is set to the argument. Zero means
|
||||
no buffering.
|
||||
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
|
||||
be used for repositioning the tape (global)
|
||||
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
|
||||
tapes (global)
|
||||
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 sematics (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_DEBUGGING debugging (global; debugging must be
|
||||
compiled into the driver)
|
||||
MT_ST_SETBOOLEANS
|
||||
MT_ST_CLEARBOOLEANS
|
||||
Sets or clears the option bits.
|
||||
MT_ST_WRITE_THRESHOLD
|
||||
Sets the write threshold for this device to kilobytes
|
||||
specified by the lowest bits.
|
||||
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
|
||||
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
|
||||
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
|
||||
non-zero number, and this number is not 0xff, the number is
|
||||
used as the compression algorithm. The value
|
||||
MT_ST_CLEAR_DEFAULT can be used to clear the compression
|
||||
default.
|
||||
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
|
||||
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
|
||||
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
|
||||
is found from the extended sense data. Many drives set one or
|
||||
more bits in the extended sense data when the drive needs
|
||||
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),
|
||||
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
|
||||
the pattern is non-zero, the pattern must match the masked
|
||||
sense data byte.
|
||||
|
||||
(The cleaning bit is set if the additional sense code and
|
||||
qualifier 00h 17h are seen regardless of the setting of
|
||||
MT_ST_SET_CLN.)
|
||||
|
||||
The following ioctl uses the structure mtpos:
|
||||
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.
|
||||
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.
|
||||
The number of recovered errors since the previous status call
|
||||
is stored in the lower word of the field mt_erreg.
|
||||
The current block size and the density code are stored in the field
|
||||
mt_dsreg (shifts for the subfields are MT_ST_BLKSIZE_SHIFT and
|
||||
MT_ST_DENSITY_SHIFT).
|
||||
The GMT_xxx status bits reflect the drive status. GMT_DR_OPEN
|
||||
is set if there is no tape in the drive. GMT_EOD means either
|
||||
end of recorded data or end of tape. GMT_EOT means end of tape.
|
||||
|
||||
|
||||
MISCELLANEOUS COMPILE OPTIONS
|
||||
|
||||
The recovered write errors are considered fatal if ST_RECOVERED_WRITE_FATAL
|
||||
is defined.
|
||||
|
||||
The maximum number of tape devices is determined by the define
|
||||
ST_MAX_TAPES. If more tapes are detected at driver initialization, the
|
||||
maximum is adjusted accordingly.
|
||||
|
||||
Immediate return from tape positioning SCSI commands can be enabled by
|
||||
defining ST_NOWAIT. If this is defined, the user should take care that
|
||||
the next tape operation is not started before the previous one has
|
||||
finished. The drives and SCSI adapters should handle this condition
|
||||
gracefully, but some drive/adapter combinations are known to hang the
|
||||
SCSI bus in this case.
|
||||
|
||||
The MTEOM command is by default implemented as spacing over 32767
|
||||
filemarks. With this method the file number in the status is
|
||||
correct. The user can request using direct spacing to EOD by setting
|
||||
ST_FAST_EOM 1 (or using the MT_ST_OPTIONS ioctl). In this case the file
|
||||
number will be invalid.
|
||||
|
||||
When using read ahead or buffered writes the position within the file
|
||||
may not be correct after the file is closed (correct position may
|
||||
require backspacing over more than one record). The correct position
|
||||
within file can be obtained if ST_IN_FILE_POS is defined at compile
|
||||
time or the MT_ST_CAN_BSR bit is set for the drive with an ioctl.
|
||||
(The driver always backs over a filemark crossed by read ahead if the
|
||||
user does not request data that far.)
|
||||
|
||||
|
||||
DEBUGGING HINTS
|
||||
|
||||
To enable debugging messages, edit st.c and #define DEBUG 1. As seen
|
||||
above, debugging can be switched off with an ioctl if debugging is
|
||||
compiled into the driver. The debugging output is not voluminous.
|
||||
|
||||
If the tape seems to hang, I would be very interested to hear where
|
||||
the driver is waiting. With the command 'ps -l' you can see the state
|
||||
of the process using the tape. If the state is D, the process is
|
||||
waiting for something. The field WCHAN tells where the driver is
|
||||
waiting. If you have the current System.map in the correct place (in
|
||||
/boot for the procps I use) or have updated /etc/psdatabase (for kmem
|
||||
ps), ps writes the function name in the WCHAN field. If not, you have
|
||||
to look up the function from System.map.
|
||||
|
||||
Note also that the timeouts are very long compared to most other
|
||||
drivers. This means that the Linux driver may appear hung although the
|
||||
real reason is that the tape firmware has got confused.
|
23
Documentation/scsi/sym53c500_cs.txt
Arquivo normal
23
Documentation/scsi/sym53c500_cs.txt
Arquivo normal
@@ -0,0 +1,23 @@
|
||||
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:
|
||||
|
||||
(1) extensive kernel changes between 2.4 and 2.6.
|
||||
(2) deprecated PCMCIA support outside the kernel.
|
||||
|
||||
All the USE_BIOS code has been ripped out. It was never used, and could
|
||||
not have worked anyway. The USE_DMA code is likewise gone. Many thanks
|
||||
to YOKOTA Hiroshi (nsp_cs driver) and David Hinds (qlogic_cs driver) for
|
||||
the code fragments I shamelessly adapted for this work. Thanks also to
|
||||
Christoph Hellwig for his patient tutelage while I stumbled about.
|
||||
|
||||
The Symbios Logic 53c500 chip was used in the "newer" (circa 1997) version
|
||||
of the New Media Bus Toaster PCMCIA SCSI controller. Presumably there are
|
||||
other products using this chip, but I've never laid eyes (much less hands)
|
||||
on one.
|
||||
|
||||
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)
|
1059
Documentation/scsi/sym53c8xx_2.txt
Arquivo normal
1059
Documentation/scsi/sym53c8xx_2.txt
Arquivo normal
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
449
Documentation/scsi/tmscsim.txt
Arquivo normal
449
Documentation/scsi/tmscsim.txt
Arquivo normal
@@ -0,0 +1,449 @@
|
||||
The tmscsim driver
|
||||
==================
|
||||
|
||||
1. Purpose and history
|
||||
2. Installation
|
||||
3. Features
|
||||
4. Configuration via /proc/scsi/tmscsim/?
|
||||
5. Configuration via boot/module params
|
||||
6. Potential improvements
|
||||
7. Bug reports, debugging and updates
|
||||
8. Acknowledgements
|
||||
9. Copyright
|
||||
|
||||
|
||||
1. Purpose and history
|
||||
----------------------
|
||||
The tmscsim driver supports PCI SCSI Host Adapters based on the AM53C974
|
||||
chip. AM53C974 based SCSI adapters include:
|
||||
Tekram DC390, DC390T
|
||||
Dawicontrol 2974
|
||||
QLogic Fast! PCI Basic
|
||||
some on-board adapters
|
||||
(This is most probably not a complete list)
|
||||
|
||||
It has originally written by C.L. Huang from the Tekram corp. to support the
|
||||
Tekram DC390(T) adapter. This is where the name comes from: tm = Tekram
|
||||
scsi = SCSI driver, m = AMD (?) as opposed to w for the DC390W/U/F
|
||||
(NCR53c8X5, X=2/7) driver. Yes, there was also a driver for the latter,
|
||||
tmscsiw, which supported DC390W/U/F adapters. It's not maintained any more,
|
||||
as the ncr53c8xx is perfectly supporting these adpaters since some time.
|
||||
|
||||
The driver first appeared in April 1996, exclusively supported the DC390
|
||||
and has been enhanced since then in various steps. In May 1998 support for
|
||||
general AM53C974 based adapters and some possibilities to configure it were
|
||||
added. The non-DC390 support works by assuming some values for the data
|
||||
normally taken from the DC390 EEPROM. See below (chapter 5) for details.
|
||||
|
||||
When using the DC390, the configuration is still be done using the DC390
|
||||
BIOS setup. The DC390 EEPROM is read and used by the driver, any boot or
|
||||
module parameters (chapter 5) are ignored! However, you can change settings
|
||||
dynamically, as described in chapter 4.
|
||||
|
||||
For a more detailed description of the driver's history, see the first lines
|
||||
of tmscsim.c.
|
||||
The numbering scheme isn't consistent. The first versions went from 1.00 to
|
||||
1.12, then 1.20a to 1.20t. Finally I decided to use the ncr53c8xx scheme. So
|
||||
the next revisions will be 2.0a to 2.0X (stable), 2.1a to 2.1X (experimental),
|
||||
2.2a to 2.2X (stable, again) etc. (X = anything between a and z.) If I send
|
||||
fixes to people for testing, I create intermediate versions with a digit
|
||||
appended, e.g. 2.0c3.
|
||||
|
||||
|
||||
2. Installation
|
||||
---------------
|
||||
If you got any recent kernel with this driver and document included in
|
||||
linux/drivers/scsi, you basically have to do nothing special to use this
|
||||
driver. Of course you have to choose to compile SCSI support and DC390(T)
|
||||
support into your kernel or as module when configuring your kernel for
|
||||
compiling.
|
||||
NEW: You may as well compile this module outside your kernel, using the
|
||||
supplied Makefile.
|
||||
|
||||
If you got an old kernel (pre 2.1.127, pre 2.0.37p1) with an old version of
|
||||
this driver: Get dc390-21125-20b.diff.gz or dc390-2036p21-20b1.diff.gz from
|
||||
my web page and apply the patch. Apply further patches to upgrade to the
|
||||
latest version of the driver.
|
||||
|
||||
If you want to do it manually, you should copy the files (dc390.h,
|
||||
tmscsim.h, tmscsim.c, scsiiom.c and README.tmscsim) from this directory to
|
||||
linux/drivers/scsi. You have to recompile your kernel/module of course.
|
||||
|
||||
You should apply the three patches included in dc390-120-kernel.diff
|
||||
(Applying them: cd /usr/src; patch -p0 <~/dc390-120-kernel.diff)
|
||||
The patches are against 2.1.125, so you might have to manually resolve
|
||||
rejections when applying to another kernel version.
|
||||
|
||||
The patches will update the kernel startup code to allow boot parameters to
|
||||
be passed to the driver, update the Documentation and finally offer you the
|
||||
possibility to omit the non-DC390 parts of the driver.
|
||||
(By selecting "Omit support for non DC390" you basically disable the
|
||||
emulation of a DC390 EEPROM for non DC390 adapters. This saves a few bytes
|
||||
of memory.)
|
||||
|
||||
If you got a very old kernel without the tmscsim driver (pre 2.0.31)
|
||||
I recommend upgrading your kernel. However, if you don't want to, please
|
||||
contact me to get the appropriate patches.
|
||||
|
||||
|
||||
Upgrading a SCSI driver is always a delicate thing to do. The 2.0 driver has
|
||||
proven stable on many systems, but it's still a good idea to take some
|
||||
precautions. In an ideal world you would have a full backup of your disks.
|
||||
The world isn't ideal and most people don't have full backups (me neither).
|
||||
So take at least the following measures:
|
||||
* make your kernel remount the FS read-only on detecting an error:
|
||||
tune2fs -e remount-ro /dev/sd??
|
||||
* have copies of your SCSI disk's partition tables on some safe location:
|
||||
dd if=/dev/sda of=/mnt/floppy/sda bs=512 count=1
|
||||
or just print it with:
|
||||
fdisk -l | lpr
|
||||
* make sure you are able to boot Linux (e.g. from floppy disk using InitRD)
|
||||
if your SCSI disk gets corrupted. You can use
|
||||
ftp://student.physik.uni-dortmund.de/pub/linux/kernel/bootdisk.gz
|
||||
|
||||
One more warning: I used to overclock my PCI bus to 41.67 MHz. My Tekram
|
||||
DC390F (Sym53c875) accepted this as well as my Millenium. But the Am53C974
|
||||
produced errors and started to corrupt my disks. So don't do that! A 37.50
|
||||
MHz PCI bus works for me, though, but I don't recommend using higher clocks
|
||||
than the 33.33 MHz being in the PCI spec.
|
||||
|
||||
If you want to share the IRQ with another device and the driver refuses to
|
||||
do so, you might succeed with changing the DC390_IRQ type in tmscsim.c to
|
||||
SA_SHIRQ | SA_INTERRUPT.
|
||||
|
||||
|
||||
3.Features
|
||||
----------
|
||||
- SCSI
|
||||
* Tagged command queueing
|
||||
* Sync speed up to 10 MHz
|
||||
* Disconnection
|
||||
* Multiple LUNs
|
||||
|
||||
- General / Linux interface
|
||||
* Support for up to 4 AM53C974 adapters.
|
||||
* DC390 EEPROM usage or boot/module params
|
||||
* Information via cat /proc/scsi/tmscsim/?
|
||||
* Dynamically configurable by writing to /proc/scsi/tmscsim/?
|
||||
* Dynamic allocation of resources
|
||||
* SMP support: Locking on io_request lock (Linux 2.1/2.2) or adapter
|
||||
specific locks (Linux 2.5?)
|
||||
* Uniform source code for Linux-2.x.y
|
||||
* Support for dyn. addition/removal of devices via add/remove-single-device
|
||||
(Try: echo "scsi add-single-device C B T U" >/proc/scsi/scsi
|
||||
C = Controller, B = Bus, T = Target SCSI ID, U = Unit SCSI LUN.)
|
||||
Use with care!
|
||||
* Try to use the partition table for the determination of the mapping
|
||||
|
||||
|
||||
4. Configuration via /proc/scsi/tmscsim/?
|
||||
-----------------------------------------
|
||||
First of all look at the output of /proc/scsi/tmscsim/? by typing
|
||||
cat /proc/scsi/tmscsim/?
|
||||
The "?" should be replaced by the SCSI host number. (The shell might do this
|
||||
for you.)
|
||||
You will see some info regarding the adapter and, at the end, a listing of
|
||||
the attached devices and their settings.
|
||||
|
||||
Here's an example:
|
||||
garloff@kurt:/home/garloff > cat /proc/scsi/tmscsim/0
|
||||
Tekram DC390/AM53C974 PCI SCSI Host Adapter, Driver Version 2.0e7 2000-11-28
|
||||
SCSI Host Nr 1, AM53C974 Adapter Nr 0
|
||||
IOPortBase 0xb000, IRQ 10
|
||||
MaxID 8, MaxLUN 8, AdapterID 6, SelTimeout 250 ms, DelayReset 1 s
|
||||
TagMaxNum 16, Status 0x00, ACBFlag 0x00, GlitchEater 24 ns
|
||||
Statistics: Cmnds 1470165, Cmnds not sent directly 0, Out of SRB conds 0
|
||||
Lost arbitrations 587, Sel. connected 0, Connected: No
|
||||
Nr of attached devices: 4, Nr of DCBs: 4
|
||||
Map of attached LUNs: 01 00 00 03 01 00 00 00
|
||||
Idx ID LUN Prty Sync DsCn SndS TagQ NegoPeriod SyncSpeed SyncOffs MaxCmd
|
||||
00 00 00 Yes Yes Yes Yes Yes 100 ns 10.0 M 15 16
|
||||
01 03 00 Yes Yes Yes Yes No 100 ns 10.0 M 15 01
|
||||
02 03 01 Yes Yes Yes Yes No 100 ns 10.0 M 15 01
|
||||
03 04 00 Yes Yes Yes Yes No 100 ns 10.0 M 15 01
|
||||
|
||||
Note that the settings MaxID and MaxLUN are not zero- but one-based, which
|
||||
means that a setting MaxLUN=4, will result in the support of LUNs 0..3. This
|
||||
is somehow inconvenient, but the way the mid-level SCSI code expects it to be.
|
||||
|
||||
ACB and DCB are acronyms for Adapter Control Block and Device Control Block.
|
||||
These are data structures of the driver containing information about the
|
||||
adapter and the connected SCSI devices respectively.
|
||||
|
||||
Idx is the device index (just a consecutive number for the driver), ID and
|
||||
LUN are the SCSI ID and LUN, Prty means Parity checking, Sync synchronous
|
||||
negotiation, DsCn Disconnection, SndS Send Start command on startup (not
|
||||
used by the driver) and TagQ Tagged Command Queueing. NegoPeriod and
|
||||
SyncSpeed are somehow redundant, because they are reciprocal values
|
||||
(1 / 112 ns = 8.9 MHz). At least in theory. The driver is able to adjust the
|
||||
NegoPeriod more accurate (4ns) than the SyncSpeed (1 / 25ns). I don't know
|
||||
if certain devices will have problems with this discrepancy. Max. speed is
|
||||
10 MHz corresp. to a min. NegoPeriod of 100 ns.
|
||||
(The driver allows slightly higher speeds if the devices (Ultra SCSI) accept
|
||||
it, but that's out of adapter spec, on your own risk and unlikely to improve
|
||||
performance. You're likely to crash your disks.)
|
||||
SyncOffs is the offset used for synchronous negotiations; max. is 15.
|
||||
The last values are only shown, if Sync is enabled. (NegoPeriod is still
|
||||
displayed in brackets to show the values which will be used after enabling
|
||||
Sync.)
|
||||
MaxCmd ist the number of commands (=tags) which can be processed at the same
|
||||
time by the device.
|
||||
|
||||
If you want to change a setting, you can do that by writing to
|
||||
/proc/scsi/tmscsim/?. Basically you have to imitate the output of driver.
|
||||
(Don't use the brackets for NegoPeriod on Sync disabled devices.)
|
||||
You don't have to care about capitalisation. The driver will accept space,
|
||||
tab, comma, = and : as separators.
|
||||
|
||||
There are three kinds of changes:
|
||||
|
||||
(1) Change driver settings:
|
||||
You type the names of the parameters and the params following it.
|
||||
Example:
|
||||
echo "MaxLUN=8 seltimeout 200" >/proc/scsi/tmscsim/0
|
||||
|
||||
Note that you can only change MaxID, MaxLUN, AdapterID, SelTimeOut,
|
||||
TagMaxNum, ACBFlag, GlitchEater and DelayReset. Don't change ACBFlag
|
||||
unless you want to see what happens, if the driver hangs.
|
||||
|
||||
(2) Change device settings: You write a config line to the driver. The Nr
|
||||
must match the ID and LUN given. If you give "-" as parameter, it is
|
||||
ignored and the corresponding setting won't be changed.
|
||||
You can use "y" or "n" instead of "Yes" and "No" if you want to.
|
||||
You don't need to specify a full line. The driver automatically performs
|
||||
an INQUIRY on the device if necessary to check if it is capable to operate
|
||||
with the given settings (Sync, TagQ).
|
||||
Examples:
|
||||
echo "0 0 0 y y y - y - 10 " >/proc/scsi/tmscsim/0
|
||||
echo "3 5 0 y n y " >/proc/scsi/tmscsim/0
|
||||
|
||||
To give a short explanation of the first example:
|
||||
The first three numbers, "0 0 0" (Device index 0, SCSI ID 0, SCSI LUN 0),
|
||||
select the device to which the following parameters apply. Note that it
|
||||
would be sufficient to use the index or both SCSI ID and LUN, but I chose
|
||||
to require all three to have a syntax similar to the output.
|
||||
The following "y y y - y" enables Parity checking, enables Synchronous
|
||||
transfers, Disconnection, leaves Send Start (not used) untouched and
|
||||
enables Tagged Command Queueing for the selected device. The "-" skips
|
||||
the Negotiation Period setting but the "10" sets the max sync. speed to
|
||||
10 MHz. It's useless to specify both NegoPeriod and SyncSpeed as
|
||||
discussed above. The values used in this example will result in maximum
|
||||
performance.
|
||||
|
||||
(3) Special commands: You can force a SCSI bus reset, an INQUIRY command, the
|
||||
removal or the addition of a device's DCB and a SCSI register dump.
|
||||
This is only used for debugging when you meet problems. The parameter of
|
||||
the INQUIRY and REMOVE commands is the device index as shown by the
|
||||
output of /proc/scsi/tmscsim/? in the device listing in the first column
|
||||
(Idx). ADD takes the SCSI ID and LUN.
|
||||
Examples:
|
||||
echo "reset" >/proc/scsi/tmscsim/0
|
||||
echo "inquiry 1" >/proc/scsi/tmscsim/0
|
||||
echo "remove 2" >/proc/scsi/tmscsim/1
|
||||
echo "add 2 3" >/proc/scsi/tmscsim/?
|
||||
echo "dump" >/proc/scsi/tmscsim/0
|
||||
|
||||
Note that you will meet problems when you REMOVE a device's DCB with the
|
||||
remove command if it contains partitions which are mounted. Only use it
|
||||
after unmounting its partitions, telling the SCSI mid-level code to
|
||||
remove it (scsi remove-single-device) and you really need a few bytes of
|
||||
memory.
|
||||
The ADD command allows you to configure a device before you tell the
|
||||
mid-level code to try detection.
|
||||
|
||||
|
||||
I'd suggest reviewing the output of /proc/scsi/tmscsim/? after changing
|
||||
settings to see if everything changed as requested.
|
||||
|
||||
|
||||
5. Configuration via boot/module parameters
|
||||
-------------------------------------------
|
||||
With the DC390, the driver reads its EEPROM settings and tries to use them.
|
||||
But you may want to override the settings prior to being able to change the
|
||||
driver configuration via /proc/scsi/tmscsim/?.
|
||||
If you do have another AM53C974 based adapter, that's even the only
|
||||
possibility to adjust settings before you are able to write to the
|
||||
/proc/scsi/tmscsim/? pseudo-file, e.g. if you want to use another
|
||||
adapter ID than 7.
|
||||
(BTW, the log message "DC390: No EEPROM found!" is normal without a DC390.)
|
||||
For this purpose, you can pass options to the driver before it is initialised
|
||||
by using kernel or module parameters. See lilo(8) or modprobe(1) manual
|
||||
pages on how to pass params to the kernel or a module.
|
||||
[NOTE: Formerly, it was not possible to override the EEPROM supplied
|
||||
settings of the DC390 with cmd line parameters. This has changed since
|
||||
2.0e7]
|
||||
|
||||
The syntax of the params is much shorter than the syntax of the /proc/...
|
||||
interface. This makes it a little bit more difficult to use. However, long
|
||||
parameter lines have the risk to be misinterpreted and the length of kernel
|
||||
parameters is limited.
|
||||
|
||||
As the support for non-DC390 adapters works by simulating the values of the
|
||||
DC390 EEPROM, the settings are given in a DC390 BIOS' way.
|
||||
|
||||
Here's the syntax:
|
||||
tmscsim=AdaptID,SpdIdx,DevMode,AdaptMode,TaggedCmnds,DelayReset
|
||||
|
||||
Each of the parameters is a number, containing the described information:
|
||||
|
||||
* AdaptID: The SCSI ID of the host adapter. Must be in the range 0..7
|
||||
Default is 7.
|
||||
|
||||
* SpdIdx: The index of the maximum speed as in the DC390 BIOS. The values
|
||||
0..7 mean 10, 8.0, 6.7, 5.7, 5.0, 4.0, 3.1 and 2 MHz resp. Default is
|
||||
0 (10.0 MHz).
|
||||
|
||||
* DevMode is a bit mapped value describing the per-device features. It
|
||||
applies to all devices. (Sync, Disc and TagQ will only apply, if the
|
||||
device supports it.) The meaning of the bits (* = default):
|
||||
|
||||
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
|
||||
|
||||
As usual, the desired value is obtained by adding the wanted values. If
|
||||
you want to enable all values, e.g., you would use 31(0x1f). Default is 31.
|
||||
|
||||
* AdaptMode is a bit mapped value describing the enabled adapter features.
|
||||
|
||||
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.
|
||||
4 0x10 16 Immediate return on BIOS seek command. (Not used)
|
||||
(*)5 0x20 32 Check for LUNs >= 1.
|
||||
|
||||
The default for LUN Check depends on CONFIG_SCSI_MULTI_LUN.
|
||||
|
||||
* TaggedCmnds is a number indicating the maximum number of Tagged Commands.
|
||||
It is the binary logarithm - 1 of the actual number. Max is 4 (32).
|
||||
Value Number of Tagged Commands
|
||||
0 2
|
||||
1 4
|
||||
2 8
|
||||
*3 16
|
||||
4 32
|
||||
|
||||
* DelayReset is the time in seconds (minus 0.5s), the adapter waits, after a
|
||||
bus reset. Default is 1 (corresp. to 1.5s).
|
||||
|
||||
Example:
|
||||
modprobe tmscsim tmscsim=6,2,31
|
||||
would set the adapter ID to 6, max. speed to 6.7 MHz, enable all device
|
||||
features and leave the adapter features, the number of Tagged Commands
|
||||
and the Delay after a reset to the defaults.
|
||||
|
||||
As you can see, you don't need to specify all of the six params.
|
||||
If you want values to be ignored (i.e. the EEprom settings or the defaults
|
||||
will be used), you may pass -2 (not 0!) at the corresponding position.
|
||||
|
||||
The defaults (7,0,31,15,3,1) are aggressive to allow good performance. You
|
||||
can use tmscsim=7,0,31,63,4,0 for maximum performance, if your SCSI chain
|
||||
allows it. If you meet problems, you can use tmscsim=-1 which is a shortcut
|
||||
for tmscsim=7,4,9,15,2,10.
|
||||
|
||||
|
||||
6. Potential improvements
|
||||
-------------------------
|
||||
Most of the intended work on the driver has been done. Here are a few ideas
|
||||
to further improve its usability:
|
||||
|
||||
* Cleanly separate per-Target and per-LUN properties (DCB)
|
||||
* More intelligent abort() routine
|
||||
* Use new_eh code (Linux-2.1+)
|
||||
* Have the mid-level (ML) code (and not the driver) handle more of the
|
||||
various conditions.
|
||||
* Command queueing in the driver: Eliminate Query list and use ML instead.
|
||||
* More user friendly boot/module param syntax
|
||||
|
||||
Further investigation on these problems:
|
||||
|
||||
* Driver hangs with sync readcdda (xcdroast) (most probably VIA PCI error)
|
||||
|
||||
Known problems:
|
||||
Please see http://www.garloff.de/kurt/linux/dc390/problems.html
|
||||
|
||||
* Changing the parameters of multi-lun by the tmscsim/? interface will
|
||||
cause problems, cause these settings are mostly per Target and not per LUN
|
||||
and should be updated accordingly. To be fixed for 2.0d24.
|
||||
* CDRs (eg Yam CRW4416) not recognized, because some buggy devices don't
|
||||
recover from a SCSI reset in time. Use a higher delay or don't issue
|
||||
a SCSI bus reset on driver initialization. See problems page.
|
||||
For the CRW4416S, this seems to be solved with firmware 1.0g (reported by
|
||||
Jean-Yves Barbier).
|
||||
* TEAC CD-532S not being recognized. (Works with 1.11).
|
||||
* Scanners (eg. Astra UMAX 1220S) don't work: Disable Sync Negotiation.
|
||||
If this does not help, try echo "INQUIRY t" >/proc/scsi/tmscsim/? (t
|
||||
replaced by the dev index of your scanner). You may try to reset your SCSI
|
||||
bus afterwards (echo "RESET" >/proc/scsi/tmscsim/?).
|
||||
The problem seems to be solved as of 2.0d18, thanks to Andreas Rick.
|
||||
* If there is a valid partition table, the driver will use it for determing
|
||||
the mapping. If there's none, a reasonable mapping (Symbios-like) will be
|
||||
assumed. Other operating systems may not like this mapping, though
|
||||
it's consistent with the BIOS' behaviour. Old DC390 drivers ignored the
|
||||
partition table and used a H/S = 64/32 or 255/63 translation. So if you
|
||||
want to be compatible to those, use this old mapping when creating
|
||||
partition tables. Even worse, on bootup the DC390 might complain if other
|
||||
mappings are found, so auto rebooting may fail.
|
||||
* In some situations, the driver will get stuck in an abort loop. This is a
|
||||
bad interaction between the Mid-Layer of Linux' SCSI code and the driver.
|
||||
Try to disable DsCn, if you meet this problem. Please contact me for
|
||||
further debugging.
|
||||
|
||||
|
||||
7. Bug reports, debugging and updates
|
||||
-------------------------------------
|
||||
Whenever you have problems with the driver, you are invited to ask the
|
||||
author for help. However, I'd suggest reading the docs and trying to solve
|
||||
the problem yourself, first.
|
||||
If you find something, which you believe to be a bug, please report it to me.
|
||||
Please append the output of /proc/scsi/scsi, /proc/scsi/tmscsim/? and
|
||||
maybe the DC390 log messages to the report.
|
||||
|
||||
Bug reports should be send to me (Kurt Garloff <dc390@garloff.de>) as well
|
||||
as to the linux-scsi list (<linux-scsi@vger.kernel.org>), as sometimes bugs
|
||||
are caused by the SCSI mid-level code.
|
||||
|
||||
I will ask you for some more details and probably I will also ask you to
|
||||
enable some of the DEBUG options in the driver (tmscsim.c:DC390_DEBUGXXX
|
||||
defines). The driver will produce some data for the syslog facility then.
|
||||
Beware: If your syslog gets written to a SCSI disk connected to your
|
||||
AM53C974, the logging might produce log output again, and you might end
|
||||
having your box spending most of its time doing the logging.
|
||||
|
||||
The latest version of the driver can be found at:
|
||||
http://www.garloff.de/kurt/linux/dc390/
|
||||
ftp://ftp.suse.com/pub/people/garloff/linux/dc390/
|
||||
|
||||
|
||||
8. Acknowledgements
|
||||
-------------------
|
||||
Thanks to Linus Torvalds, Alan Cox, the FSF people, the XFree86 team and
|
||||
all the others for the wonderful OS and software.
|
||||
Thanks to C.L. Huang and Philip Giang (Tekram) for the initial driver
|
||||
release and support.
|
||||
Thanks to Doug Ledford, G<>rard Roudier for support with SCSI coding.
|
||||
Thanks to a lot of people (espec. Chiaki Ishikawa, Andreas Haumer, Hubert
|
||||
Tonneau) for intensively testing the driver (and even risking data loss
|
||||
doing this during early revisions).
|
||||
Recently, SuSE GmbH, Nuernberg, FRG, has been paying me for the driver
|
||||
development and maintenance. Special thanks!
|
||||
|
||||
|
||||
9. Copyright
|
||||
------------
|
||||
This driver is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
If you want to use any later version of the GNU GPL, you will probably
|
||||
be allowed to, but you have to ask me and Tekram <erich@tekram.com.tw>
|
||||
before.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
Written by Kurt Garloff <kurt@garloff.de> 1998/06/11
|
||||
Last updated 2000/11/28, driver revision 2.0e7
|
||||
$Id: README.tmscsim,v 2.25.2.7 2000/12/20 01:07:12 garloff Exp $
|
Referência em uma nova issue
Block a user