ARO-1130CA Raid Card Support?

Doug Ledford dledford at redhat.com
Tue Dec 22 19:11:17 PST 1998


> On Tue, 22 Dec 1998 garver at vulcan.valkyrie.net wrote:
> 
> > On Tue, Dec 22, 1998 at 10:58:31PM +1100, Grahame Jordan wrote:
> > > Hi!
> > >
> > > I have been looking high and low for some references to support for
> > > ARO-1130CA RAID card on Linux.
> > >
> > > Adaptec say that there is some liason with the Linux community(who??)
> > > re: the utilities for this card but did not say if it actually works or
> > > not.
> > >
> > > I would guess that the card should actually be transparent to the OS,
> > > therfore it just may work after configuration.  Or is this wishful
> > > thinking?
> >
> > I have been here also, and the news is bad.  I too thought the
> > OS shouldn't care about the card.  But the way the the linux driver
> > is currently implemented, it uploads squencer code into the card
> > when the kernel starts.  This squencer code replaces the Adaptec
> > code on the card.  I think the advantage with this is that
> > the linux aic7xxx driver writers (i.e. Doug Ledford) don't have to
> > reverse engineer how to communicate with the card.  Adaptec
> > was not always friendly with linux developers.

Not exactly.  The card itself is basically a RISC CPU with some built in
SCSI features for twiddling bits on the SCSI bus and wires.  It won't do
anything useful without a sequencer.  In the old days of the Adaptec
hardware (1542, 1742 cards) there were specific registers (called
mailboxes) that a person would signal to the cards that a command was
ready in, the card would then execute the command (it required a
specific format), then signal the driver when it was done.  This was all
done in firmware, but most of the cards didn't have anything as exotic
and general purpose as the aic7xxx sequencer.  To my knowledge, you
could not, for instance, program the firmware on a 1542 to do things
like raw data aquisition to a roll-over based buffer with no host
intervention (I could be wrong on this though).  With the aic7xxx cards,
you could do this.  Now, the aic7xxx sequencer has a program downloaded
to it at boot by the Adaptec BIOS and we could use that.  But, what
about the AHA-2902 and AHA-2910 cards that don't have a BIOS on the
card?  Since no BIOS would get run, no sequencer would get downloaded,
and the cards would only be so much scrap fiberglass and solder.  So, we
have to be able to download a sequencer to these cards.  Furthermore,
what about the difference between a 2940 with BIOS v1.14 and v1.34? 
These two cards have different sequencers in their BIOS, should we build
compatibility with both of these sequencers into the driver?  Then there
is the fact that we would have to reverse engineer that sequencer in
order to use it and know how our kernel code is suppossed to talk to it
(what bits do we toggle where to make the sequencer do something, after
all, it's a smart program and not tied to particular registers on the
card, as a matter of fact, the largest portion of these cards is not
dedicated registers, but scratch RAM registers that have no intrinsic
purpose other than as RAM).  Doing that multiple times for different
sequencers would be a major PITA.  I personally know of at least 6
distinct sequencers in use by Adaptec right now.  I don't want to
support that.  I don't have the time to go through all that.

So what do we loose by using our own sequencer (Justin Gibbs' sequencer
to be exact)?  Nothing except Adaptec supported code.

What do we gain?  We have a single sequencer for all cards that leaves
us a uniform access methodology and behaviour that greatly simplifies
the code.

What special steps must be taken in the transition from Adaptec BIOS and
seqeuncer code to our own sequencer and code to make sure the devices
are useable in both environments equally?  We have to maintain the drive
geometry translation and speed settings, that sort of stuff.  We don't
have to change a single other item or worry about anything else.

The RAID stuff is a different story.  You would have to preserve the
configuration of the RAID array itself, plus you would have to write a
sequencer for that 7810 chip that was actually intelligent enough to do
things like splitting commands up, doing the RAID 5 parity
generation/verification/reconstruction, and all other sorts of things
that are much more work than I think even the current driver in it's
whole is.  IOW, I think the work load to add that support without
official Adaptec code would be more than twice what the current work
load is since you would have to add in maintaining a RAID
implementation.

> > How this toasts the ARO-1130xA cards is that when the sequencer
> > code is uploaded to the card, you would lose all information about
> > the arrays you have set up.  Of course this is bad and unacceptable.
> >
> > I'm not sure if the new adaptec alliance changes anything.  I'm
> > assuming Doug can now get his hands on the calls to the Adaptec
> > sequencer so he doesn't have to write his own, but I'm not sure
> > there will be much motivation for this.

Honestly, I can get my hands on anything I want.  But, I'm under NDA on
stuff I didn't already know and that Adaptec considers confidential. 
Until Adaptec decides that the interface between the ARO-xxx RAID
controllers and the official sequencer, and the byte code of that
sequencer itself, is publically available, I couldn't release any code I
wrote for the things.

> > We ended up giving up on this cheap RAID option, or just
> > using it in WinNT boxes.

-- 
  Doug Ledford   <dledford at redhat.com>
   Opinions expressed are my own, but
      they should be everybody's.

To Unsubscribe: send mail to majordomo at FreeBSD.org
with "unsubscribe aic7xxx" in the body of the message



More information about the aic7xxx mailing list