PCI IDE Controllers for OS/2

Document: PCI IDE Controllers for OS/2 Maintainer: Patrick Duffy, duffy@theory.chem.ubc.ca    Revision Dates:  11/3/95, 12/3/95 Archived at: ftp.netcom.com, in directory /pub/ab/abe/ Web pages: http://warp.eecs.berkeley.edu/os2/workbench/work.htm http://www.os2forum.or.at/english/info/os2hardwareinfo/ (note that the first URL may not have up-to-date versions of the lists)

This document is intended for use by individuals and corporations in a non-commercial manner. It may be distributed freely within those limitations. Commercial use of this document in any manner requires prior written permission of the author.

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. Two of these controllers, the PC Tech RZ1000 and CMD 640, have been the cause of much discussion on UseNet, as both have serious flaws which could result in data corruption. Both are very commonly employed in motherboards of all types (the PC Tech RZ1000 was used in the Intel Premiere series of boards and the CMD 640 is still used in many motherboards, such as the Asus P54SP4). 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. Dates in brackets indicate the last revision date for the related entry.

New This Week:
Apparently the Triton IDE drivers do not work with the Gigabyte GA-586AT board and Warp, irrespective of the fixpack level. I've added a little contact information for DTC and Promise as well.

I've added information to the Promise 5030 controller: apparently it supports DMA mode 2 and PIO mode 4 operation. I've also added another Tekram controller, the DC690, which apparently supports RAID-1.

Useful numbers: (12/3/95)
BusLogic: (408) 492-9090 (Voice) (408) 654-0760 (tech. support -- 7 A.M. - 5 P.M.                          Pacific Time, Mon. - Fri.) (408) 492-9118 (FAX) (408) 492-1984 (BBS - N81) techsup@buslogic.com (E-Mail tech. support) ftp.buslogic.com (FTP site) www.buslogic.com (WWW site)

CMD:     (800) 426-3832 (sales) (714) 454-0800 (sales) (714) 455-1656 (FAX)

DTC:     (408) 942-4010 (BBS) (408) 942-4005 (Faxback) (408) 942-4081 (sales) (408) 942-4027 (FAX) www.datatechnology.com (WWW site)

PC Tech: (612) 345-4555

Promise: www.promise.com (WWW site)

Tekram:  www.tekram.com (WWW site)

Chipsets
1) CMD 640 (CMD Technology Inc.: 1095/4245) (9/4/95)

There are _four_ problems with this particular chip. Here's the first one:

[confirmed]

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.

Here's the second one:

[confirmed]

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.

Here's the third one:

[confirmed]

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!

Here's the fourth one:

[confirmed]

Some systems have the floppy drive changeline connected to the same line as the 640 chipset. With this setup, data corruption can occur. The reason is this:

The chip fifo is used not only to contain data, but to contain chip status as well. As a consequence of this, the following could occur: Floppy I/O starts. HD I/O starts. HD I/O is just about finished when floppy I/O finishes and a request to start different floppy I/O is made. At this point, the floppy changeline status is read from the floppy changeline status register, at location 3f7. If there is data in the CMD chip waiting to go to the disk at this point, two bytes of it are _removed_ and replaced with the floppy changeline status. This, of  course, causes data corruption.

One person has reported seeing this bug with an Adaptec 1540 SCSI controller as well.

IBM have released a software fix for this in the form of a new IBM1S506.ADD; check for PJ19409.ZIP (from ftp-os2.cdrom.com and elsewhere) to get it.

2) The Intel Triton PCI chipset (Intel: 8086/32902) (9/4/95)

Any board which uses the Intel Triton PCI chipset will have, via the Triton chipset, support for EIDE built in to the board. The EIDE is  busmastering, and apparently allows for throughputs of up to 22 MB/s. This particular chipset is reported to be problem-free so far. The file triton.exe/triton.zip, available on the major OS/2 FTP sites, contains drivers which take advantage of the busmastering capabilities of the Triton chipset's built-in IDE controller. These drivers will not work with the (unofficial) release of fixpack 9, or  on the Gigabyte GA-586AT board irrespective of fixpack level. The Triton chipset has an additional "feature" whereby when using the built-in IDE channels cannot be operated independently; both channels are either on or off, meaning that you either use two interrupts or  none. This allows for faster transfers, though.

3) PC Tech RZ1000 (PC Technology Inc.:  1042/4162) (9/4/95)

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 (HEX address) 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:

HD I/O starts. HD I/O is just about finished when some other device interrupts the CPU to do DMA (a floppy drive or sound card, for example). Data is  still in the IDE fifo. The other device finishes its I/O and its status is read from its own register. The IDE status register is read to check the status of the HD transfer (for errors, etc.). At this point the PC Tech chip _removes_ two bytes of the data currently in the FIFO awaiting transfer to/from RAM and replaces it with its status. This, of course, causes data corruption.

(This bug is exactly analagous to the CMD bug described above.)

4) Promise (Promise Technology: 105A/4186) (8/27/95)

[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.)

5) Winbond (Winbond Electronics Corp.: 1050/4176) (9/13/95)

This chipset (the W83769F) is used in some Pentium systems to supply IDE services. It is supposed to work well (no reported problems), with the exception that the driver documentation is not good for the OS/2 driver. Documentation on non-OS/2 drivers is good, however the wbideos2.doc which is contained on the drivers disk looks as if it  was stopped half way. For example, the documentation does not adequately describe command line switches.

Setup tips: You must have DOS installed on the machine & be capable of either dual-booting or using bootmanager to configure the drivers (has to be done in DOS first).

Controllers
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).
 * BusLogic (104B/4171)  BT-910

(Buslogic: 104B/4171) (8/27/95)

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.
 * DTC                   2130S

(Data Technology Corporation: 107F/4223) (8/27/95)

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.

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).
 * GigaByte              GA-0108

(CMD Technology Inc.: 1095/4245) (8/27/95)

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. The card takes four 30 pin SIMMs for cache, does DMA mode 2 busmastering, and PIO mode 4. Note that this board will _not_ work with the Intel Plato motherboards. The card is reportedly available for about $149 from several sources.
 * Promise               5030*

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

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                DC290N*

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

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                DC290S

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

This card does a lot of interesting things for an IDE board. It supports RAID-1 and HD imaging. The CD version of the card adds an extra ATAPI connector for a total of 3 (!). It's reportedly available from several sources for $149. I've had no reports from people using this card.
 * Tekram                DC690C/CD

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

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.
 * Tyan                  S1336

(CMD Technology Inc.: 1095/4245) (8/27/95)

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.
 * Vision Technologies   QDI6500

(IDE controller mfr. unknown.) (8/27/95)

That's what I know. E-Mail corrections/suggestions and I'll post again.

Patrick Duffy, duffy@theory.chem.ubc.ca "Never send a monster to do the work of an Evil Scientist."