IDE (U)DMA problem and VIA chipset

From: f5ibh (f5ibh@db0bm.ampr.org)
Date: Thu Apr 06 2000 - 07:16:22 EST


Hi Andre .. and others!

I've a pentium 200MMX, with 64Mb SDRAM. I've 2 HDD and a CDROM. The HDD are :
hda: Maxtor 90871U2, 8297MB w/512kB Cache, CHS=1057/255/63
hdc: ST3491A, 408MB w/120kB Cache, CHS=899/15/62

I would like to have the Maxtor disk (which claims to be UDMA 66) with DMA
enabled. iI never managed to have it to accept to run with DMA. I have the same
problems with kernel 2.2.14 and 2.3.99-pre3 (or any 2.3.xx).

Kernel configuradion :
======================
I've validated :

<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
...
<*> Include IDE/ATA-2 DISK support
[*] Use multi-mode by default
<M> Include IDE/ATAPI CDROM support
...
[*] Generic PCI IDE chipset support
...
[*] Generic PCI bus-master DMA support
[ ] Boot off-board chipsets first support
[*] Use PCI DMA by default when available
...
...
[*] VIA82CXXX chipset support (EXPERIMENTAL)

What is reported at boot time :
===============================
Uniform Multi-Platform E-IDE driver Revision: 6.30
ide: Assuming 40MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: IDE controller on PCI bus 00 dev 39
VP_IDE: not 100% native mode: will probe irqs later
VT 82C585 Apollo VP1/VPX
 Chipset Core ATA-33
Split FIFO Configuration: 8 Primary buffers, threshold = 1/2
                           8 Second. buffers, threshold = 1/2
    ide0: BM-DMA at 0x6000-0x6007, BIOS settings: hda:pio, hdb:pio
ide0: VIA Bus-Master (U)DMA Timing Config Success
    ide1: BM-DMA at 0x6008-0x600f, BIOS settings: hdc:pio, hdd:pio
ide1: VIA Bus-Master (U)DMA Timing Config Success
hda: Maxtor 90871U2, ATA DISK drive
hdc: ST3491A, ATA DISK drive
hdd: CREATIVECD3621E, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: Maxtor 90871U2, 8297MB w/512kB Cache, CHS=1057/255/63
hdc: ST3491A, 408MB w/120kB Cache, CHS=899/15/62
Partition check:
 hda: hda1 hda2 < hda5 >
 hdc: hdc1 hdc2

What says the BIOS :
====================
UDMA is enabled (auto) in the BIOS and the BIOS reports the disk as UDMA mode4

What says hdaprm for the Maxtor disk :
======================================
/dev/hda:

Model=Maxtor 90871U2, FwRev=FA570480, SerialNo=E20DVPHC
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=3(DualPortCache), BuffSize=512kB, MaxMultSect=16, MultSect=16
DblWordIO=no, OldPIO=2, DMA=yes, OldDMA=0
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=16992864
tDMA={min:120,rec:120}, DMA modes: mword0 mword1 mword2
IORDY=on/off, tPIO={min:120,w/IORDY:120}, PIO modes: mode3 mode4
UDMA modes: mode0 mode1 mode2 mode3 *mode4

The disk throughput as measured by hdparm :
===========================================
[root@f5ibh] ~ # hdparm -Tt /dev/hda1

 /dev/hda1:
   Timing buffer-cache reads: 128 MB in 3.50 seconds = 36.57 MB/sec
   Timing buffered disk reads: 64 MB in 10.56 seconds = 6.06 MB/sec

What I can display in /proc/pci :
=================================
PCI devices found:
  Bus 0, device 0, function 0:
    Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] (rev 35).
      Master Capable. Latency=32.
  Bus 0, device 7, function 0:
    ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA [Apollo VP] (rev 39).
  Bus 0, device 7, function 1:
    IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 6).
      Master Capable. Latency=32.
      I/O at 0x6000 [0x600f].
  Bus 0, device 13, function 0:
    VGA compatible controller: S3 Inc. 86c868 [Vision 868 VRAM] vers 0 (rev 0).
      IRQ 11.
      Non-prefetchable 32 bit memory at 0x10000000 [0x13ffffff].

What is reported with 'lspci' :
===============================
[root@f5ibh] ~ # lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] (rev
23)00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586 ISA [Apollo VP] (rev
27)
00:07.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 06)
00:0d.0 VGA compatible controller: S3 Inc. Vision 868 vers 0

What happens wehnI try 'hdparm -d1 /dev/hda' :
==============================================
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }

hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: DMA disabled
ide0: reset: success

I've been told that the problem is an hadrware problem. So I've done several
tests to fix that :

1 - the same disk on the same computer with an other cable (the normal cable
I use is the one sold with the disk). Same problem : no DMA

2 - the same disk on an other computer with a 'triton' chipset. I can enable
DMA and I've no problem with that.

3 - I've installed netBSD on my system. Here is what netBSD reports at boot
time and I've not any DMA related problems with netBSD working with DMA
enabled.

(NetBSD 1.4.1)

pci0 at mainbus bus 0 : configuratioon mode 1
pci0 : i/o enabled, memory enabled
pchb0 at pci0 dev 0 function 0 vendor 0x1106 product 0x0585 (rev. 0x23)
pci0 at pci0 dev 7 function 0
pcib0 : vendor 0x1106, product 0x0586 (rev. 0x27)
pciide0 at pci 0 dev 7 function 1 : VIA Technologies VT 82C586A IDE Controller
pciide0: bus-master DMA support present
wd0: at pciIde0 channel 0 drive 0: <maxtor 90871U2>
wd0: drive support 16-sector pio transfers, lba addressing
wd0: 8297MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sec x 16992864 sectors
wd0: 32-bits data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4,
        Ultra-DMA mode 3, Ultra-DMA mode 2
pciide0: primary channel interrupting at irq 14
pciide0: secondary channel configured to compatibility mode
atapibus0 at pciide0 channel 1
cd0 at atapibus0 drive 1: <CREATIVECD362E, ,SC100> type 5 cdrom removable
cd0: 32-bits data port
cd0:drive support PIO mode 4,DMA mode 2
wd1 at pciide0 channel 1 drive 0 <ST3491A>
wd1: drive support 16-sector pio trandfers, chs addressing
wd1: 408MB, 899 cyl, 15 head, 62 sec, 521 bytes/sec x 836070 sectors
wd1: 23-bits data port
wd1: drive supports PIO mode 3, DMA mode 1
pciide0: secondary channel interrupting at irq 15
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2 (using DMA data transfers)
wd1(pciide0:1:0): using PIO mode 3, DMA mode 1 (using DMA data transfers)
cd0(pciide0:1:1): using PIO mode 4, DMA mode 2 (using DMA data transfers)

4 - speed test :
I've created a BIG file (155 Mo). If I use "dd if=<big_file> of=/dev/null",
netBSD reports 11 second for the transfer and linux about 20 seconds. (unload
machine in both case repeated several times, with the same results).

Last remark, if I use only generic PCI driver and not VIA82CXXX chipset support,
I have _exacltly_ the same behaviour of the system and the same performances.

Any idea ?

-----

Regards

Jean-Luc

e-mail : jean-luc.coulon@fnac.net

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Apr 07 2000 - 21:00:16 EST