Archive-name: linux/howto/scsi/part2
Version: 2.08
Last-modified: 13 Apr 95
---This is part 2/2---
The code in seagate.c looks like this now :
cli();
DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
(reselect ? CMD_ATTN : 0);
sti();
Changing this to
cli();
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
(reselect ? CMD_ATTN : 0);
DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
sti()
may fix your problem.
Defines :
FAST or FAST32 will use blind transfers where possible
ARBITRATE will cause the host adapter to arbitrate for the
bus for better SCSI-II compatability, rather than just
waiting for BUS FREE and then doing its thing. Should
let us do one command per Lun when I integrate my
reorganization changes into the distribution sources.
SLOW_HANDSHAKE will allow compatability with broken devices that don't
handshake fast enough (ie, some CD ROM's) for the Seagate
code.
SLOW_RATE=x, x some number will let you specify a default
transfer rate if handshaking isn't working correctly.
Section 3.13 : PAS16 SCSI
Supported and Unsupported Configurations :
Ports : 0x388, 0x384, 0x38x, 0x288
IRQs : 10, 12, 14, 15
IMPORTANT : IRQ MUST be different from the IRQ used for the sound
portion of the board.
DMA is not used for the SCSI portion of the board
IO : port mapped
Autoprobe : does not require BIOS
Autoprobe Override :
Compile time : Define PAS16_OVERRIDE to be an array of port, irq
tupples. Ie
#define PAS16_OVERRIDE {{0x388, 10}}
for a board at port 0x388, IRQ 10.
kernel command line :
pas16=port,irq
Defines :
AUTOSENSE - if defined, REQUEST SENSE will be performed automatically
for commands that return with a CHECK CONDITION status.
PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X performance
increase compared to polled I/O.
PARITY - enable parity checking. Not supported
SCSI2 - enable support for SCSI-II tagged queueing. Untested
UNSAFE - leave interrupts enabled during pseudo-DMA transfers. You
only really want to use this if you're having a problem with
dropped characters during high speed communications, and even
then, you're going to be better off twiddling with transfersize.
USLEEP - enable support for devices that don't disconnect. Untested.
Common problems :
1. Command timeouts, aborts, etc.
You should install the NCR5380 patches that I posted to the net
some time ago, which should be integrated into some future alpha
release. These patches fix a race condition in earlier NCR5380
driver cores, as well as fixing support for multiple devices on
NCR5380 based boards.
If that fails, you should disable the PSEUDO_DMA option by
changing the #define PSEUDO_DMA line in drivers/scsi/pas16.c to #undef
PSEUDO_DMA.
Note that the later should be considered a last resort, because
there will be a severe performance degradation.
Section 3.14 : Trantor T128/T128F/T228
Supported and Unsupported Configurations :
Base addresses : 0xcc000, 00xc8000, 0xdc000, 0xd8000
IRQs : none, 3, 5, 7 (all boards)
10, 12, 14, 15 (T128F only)
DMA is not used.
IO : memory mapped
Autoprobe : works for all supported configurations, requires
installed BIOS.
Autoprobe Override :
Compile time : Define T128_OVERRIDE to be an array of address, irq
tupples. Ie
#define T128_OVERRIDE {{0xcc000, 5}}
for a board at address 0xcc000, IRQ 5.
The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
kernel command line : t128=address,irq
-1 may be used for no irq, -2 for irq autoprobe.
Defines :
AUTOSENSE - if defined, REQUEST SENSE will be performed automatically
for commands that return with a CHECK CONDITION status.
PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X performance
increase compared to polled I/O.
PARITY - enable parity checking. Not supported
SCSI2 - enable support for SCSI-II tagged queueing. Untested
UNSAFE - leave interrupts enabled during pseudo-DMA transfers. You
only really want to use this if you're having a problem with
dropped characters during high speed communications, and even
then, you're going to be better off twiddling with transfersize.
USLEEP - enable support for devices that don't disconnect. Untested.
Common Problems :
1. Command timeouts, aborts, etc.
You should install the NCR5380 patches that I posted to the net
some time ago, which should be integrated into some future alpha
release. These patches fix a race condition in earlier NCR5380
driver cores, as well as fixing support for multiple devices on
NCR5380 based boards.
If that fails, you should disable the PSEUDO_DMA option by
changing the #define PSEUDO_DMA line in drivers/scsi/pas16.c to #undef
PSEUDO_DMA.
Note that the later should be considered a last resort, because
there will be a severe performance degradation.
Section 3.15 : Ultrastor 14f (ISA), 24f (EISA), 34f (VLB)
Ports : 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
IRQs : 10, 11, 14, 15
DMA channels : 5, 6, 7
IO : port mapped, bus master
Autoprobe : does not work for boards at port 0x310, BIOS not required.
Autoprobe override : compile time only, define PORT_OVERRIDE
Common Problems :
1. The address 0x310 is not supported by the autoprobe code, and may
cause conflicts if networking is enabled.
Please use a different address.
2. Using an Ultrastor at address 0x330 may cause the system to hang
when the sound drivers are autoprobing.
Please use a different address.
3. Various other drivers do unsafe probes at various addresses, if you
are having problems with detection or the system is{*filter*} at
boot time, please try a different address.
0x340 is recommended as an address that is known to work.
4. Linux detects no SCSI devices, but detects your SCSI hard disk
on an Ultrastor SCSI board as a normal hard disk, and the
hard disk driver refuses to support it. Note that when this
occurs, you will probably also get a message
hd.c: ST-506 interface disk with more than 16 heads detected,
probably due to non-standard sector translation. Giving up.
(disk %d: cyl=%d, sect=63, head=64)
If this is the case, you are running the Ultrastor board in
WD1003 emulation mode. You have
1. Switch the ultrastor into native mode. This is the
recommended action, since the SCSI driver can be
significantly faster than the IDE driver, especially with
the clustered read/write patches installed. Some users have
sustained in excess of 2M/sec through the file system using
these patches.
Note that this will be necessary if you wish to use any non-
hard disk, or more than two hard disk devices on the Ultrastor.
2. Use the kernel command line switch
hd=cylinders,heads,sectors
to override the default setting to bootstrap yourself,
keeping number of cylinders <= 2048, number of heads <= 16,
and number of sectors <= 255 such that cylinders * heads * sectors
is the same for both mappings.
You'll also have to manually specify the disk geometry when
running fdisk under Linux. Failure to do so will result in
incorrect partition entries being written, which will work
correctly with Linux but fail under MSDOS which looks at
the cylinder/head/sector entries in the table.
Once Linux is up, you can avoid the inconvience of having
to boot by hand by recompiling the kernel with an appropriately
defined HD_TYPE macro in include/linux/config.h.
Section 3.16 : Western Digital 7000
Supported Configurations :
BIOS Addresses : 0xce000
Ports : 0x350
IRQs : 15
DMA Channels : 6
IO : port mapped, bus master
Autoprobe : requires installed BIOS
Common Problems :
1. There are several revisisions of the chip and firmware. Supposedly,
revision 3 boards do not work, revision 5 boards do,
chips with no suffix do not work, chips with an 'A' suffix do.
2. The board supports a few BIOS addresses which aren't on the list
of supported addresses. If you run into this situation,
please use one of the supported addresses and submit a bug
report as outlined in Section 2, "Bug Reports"
Section 4 : Disks
This section gives information that is specific to disk drives.
Section 4.1 : Supported and Unsupported Hardware
All direct access SCSI devices with a block size of 256, 512, or
1024 bytes should work. Other block sizes will not work (Note
that this can often be fixed by changing the block and/or
sector sizes using the MODE SELECT SCSI command)
Sector size refers to the number of data bytes allocated per sector
on a device, ie CDROMs use a 2048 byte sector size.
Block size refers to the size of the logical blocks used to interface
with the device. Although this is usually identical to sector size,
some devices map multiple smaller physical sectors (ie, 256 bytes
in the case of 55M Syquest drives) to larger logical blocks or
vice versa (ie, 512 byte blocks on SUN compatable CDROM drives).
Removeable media devices, including Bernoulis, flopticals, and MO drives
work.
In theory, drives up to a terrabyte in size should work. There is
definately no problem with tiny 9G drives.
Section 4.2 : Common Problems
Section 4.2.1 : Cylinder > 1024 message.
When partitioning, you get a warning message about "cylinder > 1024"
or you are unable to boot from a partition including a logical
cylinder past logical cylinder 1024.
This is a BIOS limitation.
See Section 4.4 Disk Geometry and Partitioning for an explanation.
Section 4.2.2 : You are unable to partition "/dev/hd*"
/dev/hd* aren't SCSI devices, /dev/sd* are.
See Section 4.3, Device files, and Section 4.4, Disk
Geometry and
...
read more »