Re: What SCSI should I buy?
On Mon, Mar 16, 1998 at 08:21:07AM +0100, Nico De Ranter wrote:
>
> Thanks to everybody who replied. I believe every SCSI-adaptor is
> succesfully used by at least one person :-). Advansys seems to be
> the best choice (or buslogic, but that wasn't one my friends initial
> shopping list). Although I'm worried about one thing: my friend noted
> that on the box of the Advansys U-version (he didn't give me any
> id of the board sorry) Linux-support was mentioned but on the UW-version
> there was nothing about Linux. Does anybody know Advansys' policy? I mean
> are they commited to providing Linux support for all their SCSI-adaptors?
If you look in the kernel source code, you'll see this:
/*
Documentation for the AdvanSys Driver
A. Adapters Supported by this Driver
B. Linux v1.2.X - Directions for Adding the AdvanSys Driver
C. Linux v1.3.1 - v1.3.57 - Directions for Adding the AdvanSys Driver
D. Linux v1.3.58 and Newer - Upgrading the AdvanSys Driver
E. Source Comments
F. Driver Compile Time Options and Debugging
G. Driver LILO Option
H. Release History
I. Known Problems or Issues
J. Credits
K. AdvanSys Contact Information
A. Adapters Supported by this Driver
AdvanSys (Advanced System Products, Inc.) manufactures the following
Bus-Mastering SCSI-2 Host Adapters for the ISA, EISA, VL, and PCI
buses. This Linux driver supports all of these adapters.
The CDB counts below indicate the number of SCSI CDB (Command
Descriptor Block) requests that can be stored in the RISC chip
cache and board LRAM. A CDB is a single SCSI command. The driver
detect routine will display the number of CDBs available for each
adapter detected. The number of CDBs used by the driver can be
lowered in the BIOS by changing the 'Host Queue Size' adapter setting.
Connectivity Products:
ABP510/5150 - Bus-Master ISA (240 CDB) (Footnote 1)
ABP5140 - Bus-Master ISA PnP (16 CDB) (Footnote 1, 3)
ABP5142 - Bus-Master ISA PnP with floppy (16 CDB) (Footnote 4)
ABP920 - Bus-Master PCI (16 CDB)
ABP930 - Bus-Master PCI (16 CDB) (Footnote 5)
ABP930U - Bus-Master PCI Ultra (16 CDB)
ABP960 - Bus-Master PCI MAC/PC (16 CDB) (Footnote 2)
ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
Single Channel Products:
ABP542 - Bus-Master ISA with floppy (240 CDB)
ABP742 - Bus-Master EISA (240 CDB)
ABP842 - Bus-Master VL (240 CDB)
ABP940 - Bus-Master PCI (240 CDB)
ABP940U - Bus-Master PCI Ultra (240 CDB)
ABP970 - Bus-Master PCI MAC/PC (240 CDB)
ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
Dual Channel Products:
ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
Footnotes:
1. This board has been shipped by HP with the 4020i CD-R drive.
The board has no BIOS so it cannot control a boot device, but
it can control any secondary SCSI device.
2. This board has been sold by Iomega as a Jaz Jet PCI adapter.
3. This board has been sold by SIIG as the i540 SpeedMaster.
4. This board has been sold by SIIG as the i542 SpeedMaster.
5. This board has been sold by SIIG as the Fast SCSI Pro PCI.
B. Linux v1.2.X - Directions for Adding the AdvanSys Driver
These directions apply to v1.2.13. For versions that follow v1.2.13.
but precede v1.3.57 some of the changes for Linux v1.3.X listed
below may need to be modified or included. A patch is available
for v1.2.13 from the AdvanSys WWW and FTP sites.
There are two source files: advansys.h and advansys.c. Copy
both of these files to the directory /usr/src/linux/drivers/scsi.
1. Add the following line to /usr/src/linux/arch/i386/config.in
after "comment 'SCSI low-level drivers'":
bool 'AdvanSys SCSI support' CONFIG_SCSI_ADVANSYS y
2. Add the following lines to /usr/src/linux/drivers/scsi/hosts.c
after "#include "hosts.h"":
#ifdef CONFIG_SCSI_ADVANSYS
#include "advansys.h"
#endif
and after "static Scsi_Host_Template builtin_scsi_hosts[] =":
#ifdef CONFIG_SCSI_ADVANSYS
ADVANSYS,
#endif
3. Add the following lines to /usr/src/linux/drivers/scsi/Makefile:
ifdef CONFIG_SCSI_ADVANSYS
SCSI_SRCS := $(SCSI_SRCS) advansys.c
SCSI_OBJS := $(SCSI_OBJS) advansys.o
else
SCSI_MODULE_OBJS := $(SCSI_MODULE_OBJS) advansys.o
endif
4. (Optional) If you would like to enable the LILO command line
and /etc/lilo.conf 'advansys' option, make the following changes.
This option can be used to disable I/O port scanning or to limit
I/O port scanning to specific addresses. Refer to the 'Driver
LILO Option' section below. Add the following lines to
/usr/src/linux/init/main.c in the prototype section:
extern void advansys_setup(char *str, int *ints);
and add the following lines to the bootsetups[] array.
#ifdef CONFIG_SCSI_ADVANSYS
{ "advansys=", advansys_setup },
#endif
5. If you have the HP 4020i CD-R driver and Linux v1.2.X you should
add a fix to the CD-ROM target driver. This fix will allow
you to mount CDs with the iso9660 file system. Linux v1.3.X
already has this fix. In the file /usr/src/linux/drivers/scsi/sr.c
and function get_sectorsize() after the line:
if(scsi_CDs[i].sector_size == 0) scsi_CDs[i].sector_size = 2048;
add the following line:
if(scsi_CDs[i].sector_size == 2340) scsi_CDs[i].sector_size = 2048;
6. In the directory /usr/src/linux run 'make config' to configure
the AdvanSys driver, then run 'make vmlinux' or 'make zlilo' to
make the kernel. If the AdvanSys driver is not configured, then
a loadable module can be built by running 'make modules' and
'make modules_install'. Use 'insmod' and 'rmmod' to install
and remove advansys.o.
C. Linux v1.3.1 - v1.3.57 - Directions for Adding the AdvanSys Driver
These directions apply to v1.3.57. For versions that precede v1.3.57
some of these changes may need to be modified or eliminated. A patch
is available for v1.3.57 from the AdvanSys WWW and FTP sites.
Beginning with v1.3.58 this driver is included with the Linux
distribution eliminating the need for making any changes.
There are two source files: advansys.h and advansys.c. Copy
both of these files to the directory /usr/src/linux/drivers/scsi.
1. Add the following line to /usr/src/linux/drivers/scsi/Config.in
after "comment 'SCSI low-level drivers'":
dep_tristate 'AdvanSys SCSI support' CONFIG_SCSI_ADVANSYS $CONFIG_SCSI
2. Add the following lines to /usr/src/linux/drivers/scsi/hosts.c
after "#include "hosts.h"":
#ifdef CONFIG_SCSI_ADVANSYS
#include "advansys.h"
#endif
and after "static Scsi_Host_Template builtin_scsi_hosts[] =":
#ifdef CONFIG_SCSI_ADVANSYS
ADVANSYS,
#endif
3. Add the following lines to /usr/src/linux/drivers/scsi/Makefile:
ifeq ($(CONFIG_SCSI_ADVANSYS),y)
L_OBJS += advansys.o
else
ifeq ($(CONFIG_SCSI_ADVANSYS),m)
M_OBJS += advansys.o
endif
endif
4. Add the following line to /usr/src/linux/include/linux/proc_fs.h
in the enum scsi_directory_inos array:
PROC_SCSI_ADVANSYS,
5. (Optional) If you would like to enable the LILO command line
and /etc/lilo.conf 'advansys' option, make the following changes.
This option can be used to disable I/O port scanning or to limit
I/O port scanning to specific addresses. Refer to the 'Driver
LILO Option' section below. Add the following lines to
/usr/src/linux/init/main.c in the prototype section:
extern void advansys_setup(char *str, int *ints);
and add the following lines to the bootsetups[] array.
#ifdef CONFIG_SCSI_ADVANSYS
{ "advansys=", advansys_setup },
#endif
6. In the directory /usr/src/linux run 'make config' to configure
the AdvanSys driver, then run 'make vmlinux' or 'make zlilo' to
make the kernel. If the AdvanSys driver is not configured, then
a loadable module can be built by running 'make modules' and
'make modules_install'. Use 'insmod' and 'rmmod' to install
and remove advansys.o.
D. Linux v1.3.58 and Newer - Upgrading the AdvanSys Driver
To upgrade the AdvanSys driver in a Linux v1.3.58 and newer
kernel, first check the version of the current driver. The
version is defined by the manifest constant ASC_VERSION at
the beginning of advansys.c. The new driver should have a
ASC_VERSION value greater than the current version. To install
the new driver rename advansys.c and advansys.h in the Linux
kernel source tree drivers/scsi directory to different names
or save them to a different directory in case you want to revert
to the old version of the driver. After the old driver is saved
copy the new advansys.c and advansys.h to drivers/scsi, rebuild
the kernel, and install the new kernel. No other changes are needed.
E. Source Comments
1. Use tab stops set to 4 for the source files. For vi use 'se tabstops=4'.
2. This driver should be maintained in multiple files. But to make
it easier to include with Linux and to follow Linux conventions,
the whole driver is maintained in the source files advansys.h and
advansys.c. In this file logical sections of the driver begin with
a comment that contains '---'. The following are the logical sections
of the driver below.
--- Linux Version
--- Linux Include Files
--- Driver Options
--- Asc Library Constants and Macros
--- Debugging Header
--- Driver Constants and Macros
--- Driver Structures
--- Driver Data
--- Driver Function Prototypes
--- Linux 'Scsi_Host_Template' and advansys_setup() Functions
--- Loadable Driver Support
--- Miscellaneous Driver Functions
--- Functions Required by the Asc Library
--- Tracing and Debugging Functions
--- Asc Library Functions
3. The string 'XXX' is used to flag code that needs to be re-written
or that contains a problem that needs to be addressed.
4. I have stripped comments from and reformatted the source for the
Asc Library which is included in this file. I haven't done this
to obfuscate the code. Actually I have done this to deobfuscate
the code. The Asc Library source can be found under the following
headings.
--- Asc Library Constants and Macros
--- Asc Library Functions
F. Driver Compile Time Options and Debugging
In this source file the following constants can be defined. They are
defined in the source below. Both of these options are enabled by
default.
1. ADVANSYS_DEBUG - enable for debugging and assertions
The amount of debugging output can be controlled with the global
variable 'asc_dbglvl'. The higher the number the more output. By
default the debug level is 0.
If the driver is loaded at boot time and the LILO Driver Option
is included in the system, the debug level can be changed by
specifying a 5th (ASC_NUM_BOARD_SUPPORTED + 1) I/O Port. The
first three hex digits of the pseudo I/O Port must be set to
'deb' and the fourth hex digit specifies the debug level: 0 - F.
The following command line will look for an adapter at 0x330
and set the debug level to 2.
linux advansys=0x330,0,0,0,0xdeb2
If the driver is built as a loadable module this variable can be
defined when the driver is loaded. The following insmod command
will set the debug level to one.
insmod advansys.o asc_dbglvl=1
Debugging Message Levels:
0: Errors Only
1: High-Level Tracing
2-N: Verbose Tracing
I don't know the approved way for turning on printk()s to the
console. Here's a program I use to do this. Debug output is
logged in /var/adm/messages.
main()
{
syscall(103, 7, 0, 0);
}
I found that increasing LOG_BUF_LEN to 40960 in kernel/printk.c
prevents most level 1 debug messages from being lost.
2. ADVANSYS_STATS - enable statistics
Statistics are maintained on a per adapter basis. Driver entry
point call counts and transfer size counts are maintained.
Statistics are only available for kernels greater than or equal
to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured.
AdvanSys SCSI adapter files have the following path name format:
/proc/scsi/advansys/[0-(ASC_NUM_BOARD_SUPPORTED-1)]
This information can be displayed with cat. For example:
cat /proc/scsi/advansys/0
When ADVANSYS_STATS is not defined the AdvanSys /proc files only
contain adapter and device configuration information.
G. Driver LILO Option
If init/main.c is modified as described in the 'Directions for Adding
the AdvanSys Driver to Linux' section (B.4.) above, the driver will
recognize the 'advansys' LILO command line and /etc/lilo.conf option.
This option can be used to either disable I/O port scanning or to limit
scanning to 1 - 4 I/O ports. Regardless of the option setting EISA and
PCI boards will still be searched for and detected. This option only
affects searching for ISA and VL boards.
Examples:
1. Eliminate I/O port scanning:
boot: linux advansys=
or
boot: linux advansys=0x0
2. Limit I/O port scanning to one I/O port:
boot: linux advansys=0x110
3. Limit I/O port scanning to four I/O ports:
boot: linux advansys=0x110,0x210,0x230,0x330
For a loadable module the same effect can be achieved by setting
the 'asc_iopflag' variable and 'asc_ioport' array when loading
the driver, e.g.
insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
If ADVANSYS_DEBUG is defined a 5th (ASC_NUM_BOARD_SUPPORTED + 1)
I/O Port may be added to specify the driver debug level. Refer to
the 'Driver Compile Time Options and Debugging' section above for
more information.
H. Release History
BETA-1.0 (12/23/95):
First Release
BETA-1.1 (12/28/95):
1. Prevent advansys_detect() from being called twice.
2. Add LILO 0xdeb[0-f] option to set 'asc_dbglvl'.
1.2 (1/12/96):
1. Prevent re-entrancy in the interrupt handler which
resulted in the driver hanging Linux.
2. Fix problem that prevented ABP-940 cards from being
recognized on some PCI motherboards.
3. Add support for the ABP-5140 PnP ISA card.
4. Fix check condition return status.
5. Add conditionally compiled code for Linux v1.3.X.
1.3 (2/23/96):
1. Fix problem in advansys_biosparam() that resulted in the
wrong drive geometry being returned for drives > 1GB with
extended translation enabled.
2. Add additional tracing during device initialization.
3. Change code that only applies to ISA PnP adapter.
4. Eliminate 'make dep' warning.
5. Try to fix problem with handling resets by increasing their
timeout value.
1.4 (5/8/96):
1. Change definitions to eliminate conflicts with other subsystems.
2. Add versioning code for the shared interrupt changes.
3. Eliminate problem in asc_rmqueue() with iterating after removing
a request.
4. Remove reset request loop problem from the "Known Problems or
Issues" section. This problem was isolated and fixed in the
mid-level SCSI driver.
1.5 (8/8/96):
1. Add support for ABP-940U (PCI Ultra) adapter.
2. Add support for IRQ sharing by setting the SA_SHIRQ flag for
request_irq and supplying a dev_id pointer to both request_irq()
and free_irq().
3. In AscSearchIOPortAddr11() restore a call to check_region() which
should be used before I/O port probing.
4. Fix bug in asc_prt_hex() which resulted in the displaying
the wrong data.
5. Incorporate miscellaneous Asc Library bug fixes and new microcode.
6. Change driver versioning to be specific to each Linux sub-level.
7. Change statistics gathering to be per adapter instead of global
to the driver.
8. Add more information and statistics to the adapter /proc file:
/proc/scsi/advansys[0...].
9. Remove 'cmd_per_lun' from the "Known Problems or Issues" list.
This problem has been addressed with the SCSI mid-level changes
made in v1.3.89. The advansys_select_queue_depths() function
was added for the v1.3.89 changes.
1.6 (9/10/96):
1. Incorporate miscellaneous Asc Library bug fixes and new microcode.
1.7 (9/25/96):
1. Enable clustering and optimize the setting of the maximum number
of scatter gather elements for any particular board. Clustering
increases CPU utilization, but results in a relatively larger
increase in I/O throughput.
2. Improve the performance of the request queuing functions by
adding a last pointer to the queue structure.
3. Correct problems with reset and abort request handling that
could have hung or crashed Linux.
4. Add more information to the adapter /proc file:
/proc/scsi/advansys[0...].
5. Remove the request timeout issue form the driver issues list.
6. Miscellaneous documentation additions and changes.
1.8 (10/4/96):
1. Make changes to handle the new v2.1.0 kernel memory mapping
in which a kernel virtual address may not be equivalent to its
bus or DMA memory address.
2. Change abort and reset request handling to make it yet even
more robust.
3. Try to mitigate request starvation by sending ordered requests
to heavily loaded, tag queuing enabled devices.
4. Maintain statistics on request response time.
5. Add request response time statistics and other information to
the adapter /proc file: /proc/scsi/advansys[0...].
1.9 (10/21/96):
1. Add conditionally compiled code (ASC_QUEUE_FLOW_CONTROL) to
make use of mid-level SCSI driver device queue depth flow
control mechanism. This will eliminate aborts caused by a
device being unable to keep up with requests and eliminate
repeat busy or QUEUE FULL status returned by a device.
2. Incorporate miscellaneous Asc Library bug fixes.
3. To allow the driver to work in kernels with broken module
support set 'cmd_per_lun' if the driver is compile as a
module. This change affects kernels v1.3.89 to present.
4. Remove PCI BIOS address from the driver banner. The PCI BIOS
is relocated by the motherboard BIOS and its new address can
not be determined by the driver.
5. Add mid-level SCSI queue depth information to the adapter
/proc file: /proc/scsi/advansys[0...].
2.0 (11/14/96):
1. Change allocation of global structures used for device
initialization to guarantee they are in DMA-able memory.
Previously when the driver was loaded as a module these
structures might not have been in DMA-able memory, causing
device initialization to fail.
I. Known Problems or Issues
1. Remove conditional constants (ASC_QUEUE_FLOW_CONTROL) around
the queue depth flow control code when mid-level SCSI changes
are included in Linux.
J. Credits
Nathan Hartwell <mage@cdc3.cdc.net> provided the directions and
basis for the Linux v1.3.X changes which were included in the
1.2 release.
Thomas E Zerucha <zerucha@shell.portal.com> pointed out a bug
in advansys_biosparam() which was fixed in the 1.3 release.
K. AdvanSys Contact Information
Mail: Advanced System Products, Inc.
1150 Ringwood Court
San Jose, CA 95131
Operator: 1-408-383-9400
FAX: 1-408-383-9612
Tech Support: 1-800-525-7440/1-408-467-2930
BBS: 1-408-383-9540 (14400,N,8,1)
Interactive FAX: 1-408-383-9753
Customer Direct Sales: 1-800-883-1099/1-408-383-5777
Tech Support E-Mail: support@advansys.com
FTP Site: ftp.advansys.com (login: anonymous)
Web Site: http://www.advansys.com
*/
--
E-mail the word "unsubscribe" to debian-user-request@lists.debian.org
TO UNSUBSCRIBE FROM THIS MAILING LIST. Trouble? E-mail to listmaster@lists.debian.org
Reply to: