# Promise PDC20276 IDE controller only runs at UDMA/33

## Yama

I have a Promise PDC20276 IDE RAID controller integrated into my ASUS A7V333 motherboard. I have one hard drive (/dev/hdc) on this controller, and another (/dev/hda) on the standard VIA controller. Both drives are identical Seagate Barracuda IV 80GB, and they are capable of UDMA/100 speed.

```
bash-2.05a# hdparm -i /dev/hda

/dev/hda:

 Model=ST380021A, FwRev=3.19, SerialNo=3HV1MWFA

 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16

 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488

 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio1 pio2 pio3 pio4 

 DMA modes:  mdma0 mdma1 mdma2 

 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 

 AdvancedPM=no WriteCache=enabled

 Drive conforms to: device does not report version:  1 2 3 4 5

bash-2.05a# hdparm -i /dev/hdc 

/dev/hdc:

 Model=ST380021A, FwRev=3.19, SerialNo=3HV1NC00

 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16

 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488

 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio1 pio2 pio3 pio4 

 DMA modes:  mdma0 mdma1 mdma2 

 UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5 

 AdvancedPM=no WriteCache=enabled

 Drive conforms to: device does not report version:  1 2 3 4 5

bash-2.05a# hdparm -Tt /dev/hda

/dev/hda:

 Timing buffer-cache reads:   128 MB in  0.43 seconds =296.98 MB/sec

 Timing buffered disk reads:  64 MB in  1.68 seconds = 38.21 MB/sec

bash-2.05a# hdparm -Tt /dev/hdc

/dev/hdc:

 Timing buffer-cache reads:   128 MB in  0.41 seconds =315.27 MB/sec

 Timing buffered disk reads:  64 MB in  3.63 seconds = 17.61 MB/sec
```

As can be seen here, /dev/hda is running with UDMA5 (i.e. UDMA/100), and can put out 38.21 MB/sec. /dev/hdc, on the other hand, only runs with UDMA2 (i.e. UDMA/33), and only puts out 17.61 MB/sec. Since I'm running these two drives in a software RAID, one is slowing-down the other.

I have checked my BIOS settings and have tried configuring the drives with HDD utilities from IBM and Seagate. I have also tried using the hdparm -X setting to try to force the drive to use UDMA5. Swapping the interfaces of the drives around showed that the one using the Promise controller ran at UDMA2. Here's a snippet from my dmesg: *Quote:*   

> Uniform Multi-Platform E-IDE driver Revision: 6.31
> 
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> 
> PDC20276: IDE controller on PCI bus 00 dev 30
> ...

 Note the last line. Is this a common problem or is it just me? I understand that Promise PDC support in the kernel is relatively new, so I wouldn't be surprised if the drivers haven't been optimised yet.

----------

## JohnHerdy

What's the result of uname -r? The Promise drivers where updated in 2.4.19-rc?. If you are using the Gentoo-source which is based on 2.4.19-pre7(-ac2) you don't have the latest driver. Please try the vanilla-source and post the results.

Regards,

John Herdy.

----------

## rommel

did you enable the options under the promise section of the kernel...'special udma feature and special fast trak feature'

these are under the ide , ata , atapi section of the kernel

just out of curiosity are these the only two drives in the array...and IF they are...why dont you use either the promise or the via controllers for both...that would seem to be the best solution to be sure taht the performance is as identical as possible.

and i cant speak for the gentoo kernel but the promise is capable of better seeds then that...i was using a tx2 before i went scsi and in raid0 hdparm -t /dev/md0 was giving up around 80mbs

----------

## Yama

 *JohnHerdy wrote:*   

> What's the result of uname -r? The Promise drivers where updated in 2.4.19-rc?. If you are using the Gentoo-source which is based on 2.4.19-pre7(-ac2) you don't have the latest driver. Please try the vanilla-source and post the results.

 Good idea. I'm using 2.4.19-r7, so I'm not using the latest kernel. I've got a vanilla 2.4.19 compiled and ready, but I can't reboot right now. I'll get back to you as soon as I can (maybe in a few hours). *rommel wrote:*   

> did you enable the options under the promise section of the kernel...'special udma feature and special fast trak feature'

 Yes, I did. *rommel wrote:*   

> just out of curiosity are these the only two drives in the array...and IF they are...why dont you use either the promise or the via controllers for both...that would seem to be the best solution to be sure taht the performance is as identical as possible.

 Initially, I had both HDDs on the PDC and a CD-RW and DVD on the VIA controller, but I found that I couldn't boot CDs that way. Here is my current config:

```
Primary Master (VIA): Seagate HDD

Secondary Master (VIA): DVD-ROM

Primary Master (PDC): Seagate HDD

Secondary Master (PDC): CD-RW
```

 *rommel wrote:*   

> and i cant speak for the gentoo kernel but the promise is capable of better seeds then that...i was using a tx2 before i went scsi and in raid0 hdparm -t /dev/md0 was giving up around 80mbs

 I got 40MB/s per drive (= 80MB/s for the RAID0) once or twice for no apparent reason, but they went away as soon as I rebooted. I still don't know why that happened.  :Confused: 

----------

## rommel

well i still would try to put the hard drives on the same controllers...either the promise or the via....and  i would try the vanilla kernel....the gentoo kernel is hard to configure properly...it must work , i dont think drobbins would keep releasing buggy custom kernels but i have never been able to use one, i just always assumed it was my inexperience....but a linus kernel i can configure with no trouble...so try this and see what happens

----------

## Yama

I tried a 2.4.19 vanilla kernel: same problem   :Rolling Eyes:  Yes, I did turn on all the PDC settings (special udma feature, special fasttrak feature, etc.).

I finally got sick of it all and decided to place the HDDs on the VIA controller and the CD/DVD on the PDC. I now get a full 100MB/s bandwidth per drive on the VIA controller, giving each drive a speed of around 40MB/s. I can't measure the RAID speed, since I've converted it to EVMS (hdparm can't handle EVMS yet), but with both drives now running at 40MB/s each the RAID0 should be running at around 80MB/s. The PDC isn't designed to take removable media (only hard drives), but Linux handles it well. Burning CDs works, too.

The drawback is that I can't boot from CDs. I only rarely need to do that, though, and when I do I can just make a bootstrap floppy or temporarily change the IDE cable connections around.

It isn't the best solution but at least it works. Thanks for the help, guys.

----------

## ph317

I'm still experiencing this same problem as the poster, as I'm sure are others whether they're aware or not.  In my case I have both my HDDs (also Seagate Barracuda IV's, ATA/100) on the Promise controller (PDC20276, onboard on Asus A7V333).  Both drives come up in hdparm as running in udma2 mode (ATA/33) when they should be ATA/100.  I'm running gentoo-sources-2.4.19-r9 (based on the real 2.4.19 not the pre)and I've tried vanilla as well, same results.

Obviously this is a kernel issue more than a Gentoo-specific issue - but I was wondering if anyone had found a solution (is there a one-liner patch to fix some switch statement in pdc202xx.c or something?).

----------

## Yama

 *ph317 wrote:*   

> I'm still experiencing this same problem as the poster, as I'm sure are others whether they're aware or not.  In my case I have both my HDDs (also Seagate Barracuda IV's, ATA/100) on the Promise controller (PDC20276, onboard on Asus A7V333).  Both drives come up in hdparm as running in udma2 mode (ATA/33) when they should be ATA/100.

 Firstly, ensure your IDE cables support ATA/100. A few times when I was fidding around in my system I accidentally put my HDD on the cable that I was previously using for my DVD. Even though the drive was on the VIA controller, it was only getting a UATA2 connection.

I think the PDC driver is borked for the moment. It's fast enough for my CD-RW and DVD, so I've put them on that controller and left the VIA for the hard discs. It's hardly the ideal situation, but it does work.

----------

## taskara

DUDE in reference to your problem you mentioned about the last line

 *Quote:*   

> hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(100) 
> 
> hdc: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=155061/16/63, UDMA(33)

 

both hard drives are running on different specifications - the cylinders and heads are configured differently, this is because the via controller detects your hard drive differently to the promise, and this is not a good thing for raid, to have them both different.

they should both be the same now IF you wiped your hdd that was on the promise controller and reset it up fom scratch on the via controller.

----------

## btg308

The Promise problems indeed seems to be a kernel driver issue, cured by the 2.4.21-pre4-ac2 kernel (maybe earlier too, but this is the one I tried): 

https://forums.gentoo.org/viewtopic.php?t=24432

----------

