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:
Linus Torvalds
2005-04-16 15:20:36 -07:00
commit 1da177e4c3
17291 arquivos alterados com 6718755 adições e 0 exclusões

70
Documentation/scsi/00-INDEX Arquivo normal
Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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.

Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff

Ver arquivo

@@ -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.

Ver arquivo

@@ -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.

Ver arquivo

@@ -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).

Ver arquivo

@@ -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.

Ver arquivo

@@ -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.

Ver arquivo

@@ -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

Ver arquivo

@@ -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
Ver arquivo

@@ -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.

Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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.
*/

Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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
Ver arquivo

@@ -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.

Ver arquivo

@@ -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

Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff

202
Documentation/scsi/in2000.txt Arquivo normal
Ver arquivo

@@ -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

Ver arquivo

@@ -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.

Ver arquivo

@@ -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

Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff

219
Documentation/scsi/osst.txt Arquivo normal
Ver arquivo

@@ -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
Ver arquivo

@@ -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

Ver arquivo

@@ -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.
*
********************************************************************/

Ver arquivo

@@ -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.

Ver arquivo

@@ -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

Ver arquivo

@@ -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
Ver arquivo

@@ -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 .

Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff

499
Documentation/scsi/st.txt Arquivo normal
Ver arquivo

@@ -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.

Ver arquivo

@@ -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)

Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff

449
Documentation/scsi/tmscsim.txt Arquivo normal
Ver arquivo

@@ -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 $