It is currently Mon, 27 Jun 2022 13:11:55 GMT



 
Author Message
 Linux SCSI HOWTO (part 1/2)
Archive-name: linux/howto/scsi/part1
Version: 2.08
Last-modified: 13 Apr 95

Archive-name: linux/howto/scsi
Last-modified: 20 Mar 1995
Version: 2.15

Copyright 1994, Drew Eckhardt

Noncommercial redistributions  of a verbatim copy in any medium physical or
electronic are permitted without express permission of the author.  
Translations are similarly permitted without express permission if they
includes a notice on who translated it.

Commercial redistribution is allowed and encouraged, provided that the
author is notified of any such distributions and given opportunity to
to provide a more up-to-date version.  

Short quotes may be used without prior consent by the author. Derivative work
and partial distributions of the SCSI-HOWTO must include either a verbatim
copy of this file or make a verbatim copy of this file available. If the
latter is the case, a pointer to the verbatim copy must be stated at a
clearly visible place.

In short, we wish to promote dissemination of this information through as
many channels as possible. However, we do wish to retain copyright on the
HOWTO documents, to be notified of any plans to redistribute the HOWTOs
to insure that outdated versions don't spread too far, and for ALL
the information provided in the HOWTOS to be disseminated. If you have
questions on the Linux documentation project, please contact Matt Welsh,
the Linux HOWTO coordinator, at m...@sunsite.unc.edu.  Questions regarding
this document itself should be addressed to Drew Eckhardt, d...@Colorado.EDU.

IMPORTANT :

BUG REPORTS WHICH FAIL TO FOLLOW THE PROCEDURE OUTLINED IN SECTION 2 WILL
BE IGNORED.  

This HOWTO covers the Linux SCSI subsystem, as implemented in Linux
kernel revision 1.1.74 and newer alpha code.  Earlier revisions of the
SCSI code are _unsupported_, and may differ significantly in terms of the
drivers implemented, performance, and options available.

For additional information, you may wish to join the SCSI channel of the
Linux activists list - mail to linux-activists-requ...@joker.cs.hut.fi,
with the line

X-MN-Admin: join SCSI

in the header, as well as the Linux SCSI list by mailing
majord...@vger.rutgers.edu with the line

subscribe linux-scsi

in the text.

I'm aware that this document isn't the most user-friendly,
and that there may be inaccuracies and oversights.  If
you have constructive comments on how to rectify the situation
you're free to mail me about it.

Table of contents
Section 1                       Common Problems
    Section 1.1                 General Flakiness
    Section 1.2                 The kernel command line
    Section 1.3                 A SCSI device shows up at all possible IDs
    Section 1.4                 A SCSI device shows up at all possible LUNs
    Section 1.5                 You get sense errors when you know the
                                    devices are error free
    Section 1.6                 A kernel configured with networking does
                                    not work.
    Section 1.7                 Device detected, but unable to access.
    Section 1.8                 Sometimes the scsi subsystem locks up
                                    completely.
    Section 1.9                 Configuring and building the kernel
    Section 1.10                LUNS other than 0 don't work

Section 2                       Reporting Bugs
    Section 2.1                 Capturing messages
    Section 2.2                 Locating the source of a panic()

Section 3                       Hosts
    Section 3.1                 Supported and Unsupported Hardware
    Section 3.1.1               Multiple host adapters
    Section 3.2                 Common Problems
    Section 3.3                 Adaptec 152x, 151x, Sound Blaster 16 SCSI,
                                    SCSI Pro, Gigabyte, and other AIC
                                    6260/6360 based products (Standard)
    Section 3.4                 Adaptec 154x, AMI FastDisk VLB,
                                    Buslogic, DTC 329x (Standard)  
    Section 3.5                 Adaptec 174x (Standard)
    Section 3.6                 Adaptec 274x, 284x, 2940 (Standard)
    Section 3.7                 Allways IN2000 (ALPHA)
    Section 3.8                 EATA: DPT Smartcache, Smartcache Plus,
                                    Smartcache III (Standard)
    Section 3.9                 Future Domain 16x0 with TMC-1800, TMC-18C30,
                                    TMC-18C50, or TMC-36C70 chip (Standard)
    Section 3.10                Generic NCR5380 / T130B (Standard)
    Section 3.11                NCR53c8xx (Standard)
    Section 3.12                Seagate ST0x/Future Domain TMC-8xx/TMC-9xx
                                    (Standard)
    Section 3.13                PAS16 (Standard)
    Section 3.14                Trantor T128/T128F/T228 (Standard)
    Section 3.15                Ultrastor 14f, 24f,  34f (Standard)
    Section 3.16                Western Digital 7000 (Standard)

Section 4                       Disks
    Section 4.1                 Supported and Unsupported Hardware
    Section 4.2                 Common Problems
    Section 4.3                 Device Files
    Section 4.4                 Partitioning
    Section 4.5                 Disk Geometry

Section 5                       CD ROMs
    Section 5.1                 Supported and Unsupported Hardware
    Section 5.2                 Common Problems
    Section 5.3                 Device Files

Section 6                       Tapes
    Section 6.1                 Supported and Unsupported Hardware
    Section 6.2                 Common Problems
    Section 6.3                 Device Files

Section 7                       Generic
    Section 7.1                 Supported and Unsupported Hardware
    Section 7.2                 Common Problems
    Section 7.3                 Device Files

Section 8                       Buyers' Guide
    Section 8.1                 Transfer types
    Section 8.2                 Scatter/gather
    Section 8.3                 Mailbox vs. non-mailbox
    Section 8.4                 Bus types
    Section 8.5                 Multiple devices
    Section 8.6                 SCSI-I, SCSI-II, FAST and WIDE options, etc.
    Section 8.7                 Driver feature comparison
    Section 8.8                 Board comparison
    Section 8.9                 Summary

Section 1 : Common Problems

This section lists some of the common problems that people
have.  If there is not anything here that answers your questions, you
should also consult the sections for your host adapter and the devices
in that are giving you problems.

Section 1.1 : General Flakiness
        If you experience random errors, the most likely causes are
        cabling and termination problems.

        Some products, such as those built arround the newer NCR
        chips, feature digital filtering and active signal negation,
        and aren't very sensitive to cabling problems.

        Others, such as the Adaptec 154xC, 154xCF, and 274x, are _extremely_
        sensitive and may fail with cables that work with other systems.

        I reiterate : some host adapters are _extremely_ sensitive to
        cabling and termination problems and therefore, cabling and
        termination should be the first things checked when there are
        problems.

        To minimize your problems, you should use cables which

        1.  Claim SCSI-II compliance
        2.  Have a characteristic impedance of 132 ohms
        3.  All come from the same source to avoid impedance mismatches
        4.  Come from a reputable vendor such as Amphenol

        Termination power should be provided by _all_ devices on
        the SCSI bus, through a diode to prevent current backflow,
        so that sufficient power is available at the ends of the cable
        where it is needed.  To prevent damage if the bus is shorted,
        TERMPWR should be driven through a fuse or other current
        limiting device.

        If multiple devices, external cables, or FAST SCSI 2 are used,
        active or forced perfect termination should be used on both ends
        of the SCSI bus.

        See the Comp.Periphs.Scsi FAQ (available on tsx-11 in
        pub/linux/ALPHA/scsi) for more information about active
        termination.

Section 1.2 : The kernel command line

        Other parts of the documentation refer to a "kernel command line".  

        The kernel command line is a set of options you may specify
        from either the LILO : prompt after an immage name, or in the
        append field in your LILO configuration file (LILO .14
        and newer use /etc/lilo.conf, older versions use /etc/lilo/config).

        Boot your system with LILO, and hit one of the alt, control, or
        shift keys when it first comes up to get a prompt.  LILO
        should respond with

            :

        At this prompt, you can select a kernel image to boot, or list
        them with ?.  Ie

            :?

            ramdisk floppy harddisk

        To boot that kernel with the command line options you have
        selected, simply enter the name followed by a white space delimited
        list of options, terminating with a return.  

        Options take the form of

            variable=valuelist

        Where valuelist may be a single value or comma delimited list
        of values with no whitespace.  With the exception of root device,
        individual values are numbers, and may be specified in either
        decimal or hexadecimal.

        Ie, to boot linux with an Adaptec 1520 clone not recognized
        at bootup, you might type

        Ie, to boot linux with an Adaptec 1520 clone not recognized
        at bootup, you might type

            :floppy aha152x=0x340,11,7,1

        If you don't care to type all of this at boot time, it is also
        possible to use the LILO configuration file "append" option
        with LILO .13 and newer.

        Ie,
            append="aha152x=0x340,11,7,1"

Section 1.3 :  A SCSI device shows up at all possible IDs

        If this is the case, you have strapped the device at the same
        address as the controller (typically 7, although some boards
        use other addresses, with 6 being used by some Future Domain
        boards).

        Please change the jumper settings.

Section 1.4 :  A SCSI device shows up at all possible LUNs

        The device has buggy firmware.  

        As an interim sollution, you should try using the kernel
        command line option

            max_scsi_luns=1

        If that works, there is a list of buggy devices
        in the kernel sources in drivers/scsi/scsi.c in the variable
        blacklist.  Add your device to this list and mail the patch
        to Linus.

Section 1.5 :  You get sense errors when you know the devices are error free

        Sometimes this is caused by bad cables or impropper termination.

        See Section 1.1 : General Flakiness

Section 1.6 :  A kernel configured with networking does not work.

        The auto-probe routines for many of the network drivers
        are not passive, and will interfere with operation with some
        of the SCSI drivers.

Section 1.7 :  Device detected, but unable to access.

        A SCSI device is detected by the kernel, but you are unable to
        access it - ie mkfs /dev/sdc, tar xvf /dev/rst2, etc fails.

        You don't have a special file in /dev for the device.

        Unix devices are identified as either block or character (block
        devices go through the buffer cache,
...

read more »



 Wed, 15 Oct 1997 03:00:00 GMT   
 Linux SCSI HOWTO (part 1/2)
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 »



 Wed, 15 Oct 1997 03:00:00 GMT   
 
   [ 2 post ] 

Similar Threads

1. Linux SCSI HOWTO (part 1/3)

2. Linux SCSI HOWTO (part 1/3)

3. Linux SCSI HOWTO (part 1/3)

4. Linux SCSI HOWTO (part 2/3)

5. Linux SCSI HOWTO (part 1/3)

6. Linux SCSI HOWTO (part 1/2)

7. Linux SCSI HOWTO (part 2/2)

8. Linux SCSI HOWTO (part 1/2)

9. Linux SCSI HOWTO (part 1/3)

10. Linux SCSI HOWTO (part 1/3)


 
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software