From ns.itep.ru!CERN.ch!EU.net!howland.reston.ans.net!math.ohio-state.edu!news.cyberstore.ca!nntp.cs.ubc.ca!unixg.ubc.ca!duffy Sun Aug 20 21:03:23 1995
Path: ns.itep.ru!CERN.ch!EU.net!howland.reston.ans.net!math.ohio-state.edu!news.cyberstore.ca!nntp.cs.ubc.ca!unixg.ubc.ca!duffy
From: duffy@theory.chem.ubc.ca (Pat Duffy)
Newsgroups: comp.os.os2.misc,comp.os.os2.setup.misc,comp.os.os2.setup.storage,comp.sys.ibm.pc.hardware.misc,comp.sys.ibm.pc.hardware.storage
Subject: SUMMARY:  PCI IDE controllers for OS/2
Date: 16 Aug 1995 05:35:42 GMT
Organization: The University of British Columbia, Vancouver, B.C., Canada
Lines: 201
Message-ID: <40s03e$f2c@nntp.ucs.ubc.ca>
Xref: ns.itep.ru comp.os.os2.misc:130247 comp.os.os2.setup.misc:1693 comp.os.os2.setup.storage:1165 comp.sys.ibm.pc.hardware.misc:34563 comp.sys.ibm.pc.hardware.storage:40477

          Document:  PCI IDE Controllers for OS/2
        Maintainer:  Patrick Duffy, duffy@theory.chem.ubc.ca
Last Revision Date:  August 15, 1995
       Archived at:  ftp.netcom.com, in directory /pub/ab/abe/
         Web pages:  http://warp.eecs.berkeley.edu/os2/workbench/work.htm

There seems to be a proliferation of PCI IDE hardware both built in to
PCI motherboards or available as separate cards.  Some of it is reported
to work well, and some of it is best left unused.  One in particular,
the PC Tech RZ1000, has been the cause of much discussion on UseNet, as
it is essentially broken when its prefetch buffers are enabled, and it
was used in boards by Intel and sold to many OEMs.  The full story is
below. I've therefore created this PCI IDE list so that people will know
if their particular PCI IDE implementation will work with OS/2.  I've
tried to keep this information as accurate as possible, but if you spot
any flaws or omissions, please do not hesitate to let me know.  Much of
this was received from sources within IBM.  You may see square brackets
beside certain chipsets.  If the word "confirmed" appears therein, this
means that the bug detailed in the description to follow along with the
subsequent fix have been confirmed to me by IBM.  I've placed a '*'
beside the controllers which seem to work well.  The vendor's name and
PCI ID appear in HEX/decimal in brackets beside the controller name.

Useful numbers:
---------------

DTC:  (408) 942-4010 (BBS)
      (408) 942-4005 (Faxback)
      (408) 942-4081 (sales)
      (408) 942-4027 (FAX)

                                Chipsets
                                --------

1) CMD 640 [confirmed]  (CMD Technology Inc.:  1095/4245)

   Channels (two IDE drives may be attached to each IDE channel) cannot
   be operated concurrently because there is a single I/O queue for both
   channels.  Simultaneous reads to both channels will cause data
   corruption.  This is not mentioned in the chipset errata.

   Their stand-alone PCI board does not have a BIOS and appears to
   come-up disabled per the PCI definition. Its really difficult to
   tell whether a PCI-IDE controller is operating in 'legacy' mode
   since (at least) the CMD chipset does not update the PCI config
   space with the legacy base port addresses. Also convincing PCI to
   route IRQ 14/15 to a PCI Int is problematic unless the motherboard
   BIOS explicitly supports this function.

   The CMD chipset also has a documented restriction that it will not
   support DWORD config write cycles.  Of course the Award BIOS on the
   (Vobis) motherboard on which testing was being performed did not
   issue byte/word config cycles explicitly and instead implemented all
   config read/write services as read/modify/write of DWORD data. The
   net result was that the system PCI BIOS could not be used to program
   the motherboard chipset!

   On top of all that, it appears that at least one revision of the CMD
   chipset (the 640B) seems to suffer from the same problem (or at least
   one with similar symptoms) as the second of the two PC Tech RZ1000
   problems, discussed below.

2) PC Tech RZ1000  (PC Technology Inc.:  1042/4162)

   There are two bugs in this chip.  The first has been known for about
   a year, and has a fix in fixpack 5.  Its story is:

   Produces accelerated IRQ.  IBM1S506.ADD actually tolerates this.
   However, when the driver reads 1x7 during interrupt processing to
   clear the interrupt, the chipset puts the status in its read-ahead
   FIFO resulting in data corruption. Intel used this chip on their
   motherboards which they sold to Gateway, AT&T, IBM and others.

   This feature is not mentioned in its chipset errata.

   The second bug was discovered only recently by PowerQuest.  It has
   been the source of much discussion on UseNet.  Here's how the
   now-famous bug occurs:

   IDE is (in general) a polled-mode affair.  In a typical IDE I/O
   operation, the CPU sits in a tight loop reading data from the IDE
   controller and writing it out to memory.  When the controller is done
   sending the data, it sends an interrupt to the CPU to tell it that
   it's done.  The interrupt handler then clears the interrupt and the
   whole transaction comes to an end.

   However, sometimes another I/O device can interrupt the CPU to do DMA
   (a floppy drive, for example) just as the IDE I/O operation is coming
   to an end.  This is still no problem, until the device which
   interrupted the I/O operation reads its own status from an address
   different than the IDE I/O status register.  What should happen then
   is that the hardware should provide two unique data items:  one for
   the device just queried and one for the IDE drive.  This apparently
   does not happen when the PC Tech RZ1000 is in use, and as a result
   data corruption occurs.

   (This is somewhat vague, I know, but it's the best I can make of what
   I've read.  If someone would care to clarify -- say Sam Detweiler --
   I'd be happy to fix it up.)

3) Promise (Promise Technology:  105A/4186)

   [confirmed/software fix implemented in Warp fixpack 5]

   Promise uses a proprietary implementation to allow 4 drives
   per channel. In normal compatibility mode IBM1S506.ADD
   can only see the 1st two drives per channel.

   In addition their current controller products do not operate properly
   when Set-Multiple support is enabled.  It is therefore necessary to
   detect Promise controllers (which Promise is trying to figure out how
   to do) and, upon detection of a promise controller, disable multiple
   mode support in IBM1S506.ADD.  (Promise has their own drivers for
   their cards.)


                              Controllers
                              -----------

 BusLogic (104B/4171)   BT-910     BusLogic makes what is apparently a
                                   good, fast, and reliable controller
which has driver support built into OS/2 (via IBM1S506.ADD), or via
their own driver.  The card apparently has an on-board 80286 processor
which supports up to a 16 MB cache (RAM must be purchased separately),
and support for disk mirroring (for drives on separate cables) and disk
linking (for disks on the same cable).

 DTC                    2130S      This is a single-port controller
                                   which is reported to work well with
Warp when using the latest drivers (available from the DTC BBS).  It
comes with its own drivers for DOS, Windows, and OS/2 (among others),
but will work with IBM1S506.ADD or WDCIDEOS.ADD (the driver from Western
Digital).  It can, apparently, be operated with a 16-bit paddle card
(which will use the ISA bus to grab a second IRQ for the second IDE
channel) for compatibility.  It supports mode 3 operation, multiple
sector transfers, LBA addressing, and ATA rev. 4.0 devices.

(Data Technology Corporation:  107F/4223)

 Setup tips:  After you've installed the driver, modify its line in
              config.sys to read:

              BASEDEV=DTCIDE.ADD /V /D0:P3 /D0:M16 /D0:L1

              to enable PIO mode 3, multiple (16) sector transfers, and
              LRA addressing.  /D0:M32 may yield better performance.


 GigaByte               GA-0108    This card not only has the IDE
                                   controller (CMD 640), but also has
support for serial, parallel, and game ports (2/1/1) on board.  It is
reported to work well with Warp (the drivers were supplied with the
card).

(CMD Technology Inc.:  1095/4245)

 Promise                5030*      This card works with or without a
                                   paddleboard, and is reported to work
well with Warp.  Apparently it has options which will allow it to work
with buggy or older PCI hardware (like register config disable, etc.),
which make it a good choice for OS/2.  I don't know if it busmasters or
what modes of PIO it supports.

(Promise Technology:  105A/4186)

 Tekram                 DC290N*    I don't have many specifics on this
                                   card, but it is apparently reported
to work well under Warp with the supplied drivers.  The one report of
success I've had with this board also indicated that use of the supplied
paddle board may not be necessary.

(Tekram Technology Co., Ltd.:  10E1/4321)

 Tekram                 DC290S     This is the busmastering version of
                                   the DC290N.  I have been told that
the card works well, but that the necessary driver to get CD-ROM support
in OS/2 does not come with the card.  (The same setup gave CD-ROM
support when hooked up to the on-baord EIDE controller on the
motherboard.)

(Tekram Technology Co., Ltd.:  10E1/4321)

 Tyan                   S1336      This card, like the Gigabyte above,
                                   is based on the CMD IDE chipset and
has support (via the SMC37C665) for serial/parallel/game ports.  I would
not recommend this card, since apparently the documentation contains
errors, and the card is difficult to set up.

(CMD Technology Inc.:  1095/4245)

 Vision Technologies    QDI6500    This card uses NS16550s for its
                                   serial port and comes with drivers
for DOS, Windows, OS/2 and NT.  It is reported to work well with OS/2.

(IDE controller mfr. unknown.)

That's what I know.  E-Mail corrections/suggestions and I'll post again.
-- 
Patrick Duffy, duffy@theory.chem.ubc.ca

      -- I am Homer of Borg.  Resistance is fu-- mmmmm... donuts...

