Date: Mon, 25 Mar 2002 10:14:39 -0800
From: Rick Moen (rick@linuxmafia.com)
To: benfell@parts-unknown.org
Subject: Re: PCI SCSI
User-Agent: Mutt/1.3.27i
Hi there.
> I'm thinking of putting a SCSI controller on my system. I've heard
> you have particularly painful experience with this, which I'm sure I
> don't want to repeat. Any advice?
>
> Initially the controller will be for a scanner; I have, however,
> filled all available IDE slots, so I might well want to add disk
> drives on down the road.
So, a situation where you have an existing, full-bore ATA ("IDE") setup and are considering adding a little bit of SCSI support isn't really a happy situation: Because you're adding only slow, non-boot device support, you're tempted to go low end, because otherwise you don't perceive the value. And then you get complications:
Linux kernels (and distribution installers) tend to auto-detect SCSI host adapters (and option cards in general) by sensing their option ROM contents -- their BIOSes. A suitable insmod operation then occurs, using the I/O base address and IRQ picked up by probing the ROM. But low-end SCSI host adapters usually omit ROMs, because you only strictly need a ROM if you intend to support booting. If you look at the Boot Prompt HOWTO, you'll see lots of examples of arcane incantations that need to be passed to booting kernels to make them recognise low-end SCSI cards, advising the kernel explicitly to load the necessary driver, and spoon-feeding it the I/O base address and IRQ.
So, some options start to become apparent:
1. Get a low-end card. Advansys, Adaptec, and others make these. No ROMs. You'll have to do the kernel dance described here: http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO-6.html#ss6.2 If you're ever tempted in the future to put hard drives on the chain, you're SOL. But a modest number of scanners, CD-ROMs, CDRs, tape drives, and the like will probably work.
2. Get a good SCSI card used. Action Computer or Haltec in Sunnyvale would be good prospects. The good ol' Adaptec AHA-2940 series (PCI) and even the AHA-1542C/CF/CP models (ISA) would be excellent choices, as would cards based on the NCR/Symbios 53c800 series chipsets. Ditto the Mylex/BusLogic/BusTec BT-948 (narrow SCSI) and BT-958 (wide SCSI) chipsets.
Personally, I'd go with this option, because it minimises your hassle and maximises your freedom of movement. That is, any of those will easily support large numbers of fast SCSI devices on a single SCSI chain, along with slow devices if necessary. (Ideally, you'd group all slow devices such as CD-ROMs, scanners, and tape drives on a slow-device chain, and have hard drives on a fast-device one.) The ISA cards were relatively limited, e.g., I don't think they'd support more than four hard drives on a chain. The others weren't.
3. Buy a good SCSI card, new. Same as before, except more expensive, and I believe the ISA cards aren't made, any more.
Caveat: I don't run mixed ATA-SCSI systems, only all-SCSI. Therefore, there may be complications I'm unaware of. In particular, your use of bootable ATA devices may make it necessary to disable the SCSI host adapter's boot ROMs. I'm not sure whether this makes them difficult for Linux to auto-probe. (I have no relevant experience.)
Because a good-quality SCSI host adapter is capable of supporting up to either seven or fifteen other SCSI devices (without contention or ATA-style chewing up of IRQs), you maximise its value by using it to support as much of your system's hardware complement as possible. Thus, it seems easier to justify its cost when it drives the hard disks as well, not just your scanner ( / CDR / tape drive).
If you've already bought into ATA, then SCSI doesn't seem like a good value. To many. My answer to them is "pity you bought into ATA. Don't Do That, Then."
Date: Mon, 25 Mar 2002 11:54:58 -0800
From: Rick Moen (rick@linuxmafia.com)
To: benfell@parts-unknown.org
Subject: Re: PCI SCSI
User-Agent: Mutt/1.3.27i
So, in case it wasn't obvious, I offer the following taxonomy of SCSI host adapters:
lowest-end: These are cards that omit option ROMs (BIOSes), and so cannot extend your motherboard BIOS's Int13h boot routines to enable booting from attached SCSI devices. They also have no DMA chip, and so must do programmed I/O ("PIO"), whereby everything they do is minutely supervised by the system's CPU, with consequent loading of the CPU.
Typical of these are the throwaway Advansys and Adaptec models bundled with SCSI scanners.
low-end: These are cards that do DMA, but omit ROM BIOSes. Such cards will never go very fast, but won't injure overall system performance -- if you can make your kernel find and support them at all, which is non-trivial.
your basic SCSI card: Does busmastering DMA, has an option ROM (that can be disabled if it doesn't need to boot SCSI hard drives or CD-ROMs). Preferably PCI, instead of ISA (bandwidth). The old, simple ones were "narrow SCSI" (one byte wide) only with any of several maximum SCSI bus speeds ranging from 10MB/sec (so-called "Ultra SCSI") to maybe 40MB/sec.
A few years ago, though, all SCSI hard drives went to "wide SCSI" (two bytes wide), while all other SCSI device types remained narrow. At this point, SCSI connections became complex, because you had to accomodate both narrow and wide devices, and terminating the SCSI chain on both ends became complex, because you had to terminate both the "low" and "high" halves of the two-byte chain.
Consequently, specifying maximum SCSI transfer rates also became tricky, because 10MHz transfer speeds imply "10MB/sec" only on the narrow bus, and in contrast 20MB/sec on the wide bus (two bytes per cycle).
Because "Ultra" turned out to be a trademark, 10MHz was dubbed generically FastSCSI. 20MHz is Fast20, 40MHz is Fast40, etc. Effective bandwidth maximums are the "Fastxx" figure times bus width in bytes. Thus, a wide-SCSI hard disk on a Fast40 adapter could have a bandwidth ceiling of 40 x 2 = 80MB/sec, if both ends support that speed.
To make matters worse, regular "single-ended" SCSI (as opposed to high-voltage differential, which is specialised and peculiar) started to suffer increasingly severe limits on total SCSI-chain length, as speeds increased:
5 MHz 6 meters (e.g., 68k-type Macintoshes)
Fast 3 meters (and approaching that limit was not recommended)
Fast20 1.5 meters
Fast40 0.7 meters (and it didn't really work properly)Now, 1.5 meters is absurdly short for total length of a SCSI chain, especially when you consider that the spec also includes a minimum spacing between devices (.3 meters). Thus, you couldn't have more than 5 devices and stay within spec.
Something had to give. So, we got a new class of SCSI devices called "low-voltage differential" (LVD), for which the SCSI-length limits are effectively eliminated. Both the drive and the host adapter must support LVD. Cabling is unchanged.
modern SCSI card. Supports LVD with backwards compatility to regular old single-ended (sometimes written "SE") SCSI. Typically maxes out at either Fast40 or Fast80. Includes wide and narrow connectors, and supports 15 devices on the chain. Sometimes includes two separate sets of SCSI circuits, supporting two chains.
I hope this clarifies matters further. You can read up on further
gory details here: