Linux Driver for Promise® Caching Controller Cards


Promise Technologies Inc. (now owned by Tekram I believe) make a range of caching hard disk controller cards, that support various numbers of IDE devices, depending on the model of card. In all circumstances (AFAIK) up to 2 hard disks on the "primary" channel will be supported as normal IDE devices without the use of additional drivers (in Linux, DOS, Windows 3.1, 95, NT etc.) Some of the cards have the capability to run four (or even six) IDE devices, but this is generally done in a non-standard way, and will require the use of special drivers.

If you only want to use two disks on the controller, you don't need to enable the Promise driver support.

Promise don't supply any technical data for their cards, and until recently wouldn't release any, but I have now (January 1999) had some limited help from their technical support department. I have tried to write a driver (or rather a small set of modifications to the existing IDE driver) to support the Promise series of cards, starting with the one I have, which is a DC4030VL-2. Support for other very similar cards has been added.

The version of the driver in the standard kernel distribution as of 2.3.3 is version 0.10. It almost supports the DC4030VL, the DC4030VL-1 and the DC4030VL-2. It does not support the DC200 or the DC5030. I have some idea that the EIDE4030 (or EIDE4030 Plus) works as it is very similar to the DC4030VL-2.

Promise cards (at least the DC4030VL-2) do not use the standard EIDE method of accessing 4 hard drives, that is: hda & hdb on ide0 at 1F0-1FF and hdc & hdd on ide1 at 170-17F. In order to access drives hdc and hdd they require the use of a set of commands that the ATA-2 spec defines as in a "Vendor Specific" region (F0-FF).

I have received brief specs on the following commands:
CommandSub-CommandFunction
F0Extended Multiplex Command
00Firmware Checksum
01Host Interface Test
02Drive Interface Test *
05DRAM Test
10Get Controller Config
11Flush Cache Data to Disk
13Change Cache Mode
14Return 'PTI' Signature
20Identify Drive *
22Write EEPROM
F1Restore *
F2Block Read *
F3Block Write *
F4Verify *
F5Format *
F9SetParm *

The commands indicated by * take a drive number in the Feature register (0x1F1) with a range of 0-3, corresponding to primary-master, primary-slave, secondary-master and secondary-slave.


Current State of the Driver

The latest formal release of the driver is version 0.90, in the kernel since version 2.3.9.

The latest version of the driver is also version 0.90, the leap in number from 0.11 indicating that I've taken it into BETA. I have now successfully transferred many MB onto and off disks on the card without any interrupt problems. Now is the time for serious testing....

The driver now works in the following areas:

Please test with caution. If the card loses the plot, reads and writes to hda & hdb are also stopped, so if you have your main system on these you may (probably will!) get filesystem corruption. You have been warned!


If You're Interested...

Give it a go! Compile it in to the kernel, add an "append=" line to your LILO boot, and see what happens. Also see the code in linux/drivers/block/pdc4030.c

If your card is reported as unknown, or even if it isn't, I'd be very interested to hear from you. If you do this, a list of your drives, and C/H/S values would also be useful. The latest driver will report a block of information if it doesn't recognise the card - please include this.


Future Work

After several recent bits of work on the driver, thinking it was ready to move from ALPHA test stage to BETA, it now definitely is, version 0.90 being the first version in BETA. Please test it if you can.

I propose to put a list here of all the people who have contacted me about Promise cards. Let me know what you (you know who you are) think about this.


Peter Denison:     promise at the obvious machine name (without www.)