CMD64x - full DMA support?

Paul Dorman (pdorman@ihug.co.nz)
Mon, 14 May 2001 11:00:01 +1200


Hi all. First time writing to the kernel list, so let me know if I break
any conventions. This is long, so I thank you all for your help now :o)

Paul Dorman.

I have two CMD648 PCI ATA66 controllers - one generic and one by
Leadtek. At the moment the Leadtek is installed. I have a dual PII 450
machine on a Gigabyte BXD motherboard. My current kernel is 2.4.4-ac4. I
understand that there may be hardware flaws with the CMD640 chipset. If
this is the case, is there any chance of a work-around? If not, how can
I get the best performance out of this card?

If I use hdparm to set DMA=1 on a drive attached to the controller I get
all kinds of errors when I attempt to access its filesystem:

...
...
ide_dmaproc: chipset supported ide_dma_lostirq func only: 13
hde: lost interrupt

*or*
...
...
/dev/ide/host2/bus0/target0/lun0: p1
/dev/ide/host2/bus0/target0/lun0: p1
reiserfs: checking transaction log (device 21:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
hde: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hde: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hde: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hde: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hde: DMA disabled
ide2: reset: success
<computer hangs>

*or*
...
...
hde: dma_intr: status=0xff { Busy }
hde: DMA disabled
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
hde: drive not ready for command
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
end_request: I/O error, dev 21:01 (hde), sector 95948856
hde: drive not ready for command
hde: status timeout: status=0xff { Busy }
hde: drive not ready for command
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
hde: drive not ready for command
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
end_request: I/O error, dev 21:01 (hde), sector 95949360
hde: drive not ready for command
hde: status timeout: status=0xff { Busy }
hde: drive not ready for command
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
hde: drive not ready for command
ide2: reset timed-out, status=0xff
hde: status timeout: status=0xff { Busy }
end_request: I/O error, dev 21:01 (hde), sector 95949368
...

I have:-

* Shifted cards around,
* Tried different interrupts,
* Tried THREE different 80 wire cables.

I hope this is the pertinent information...

=============================[DMESG output]============================
CMD648: IDE controller on PCI bus 00 dev 50
CMD648: chipset revision 1
CMD648: not 100% native mode: will probe irqs later
CMD648: ROM enabled at 0xee000000
ide2: BM-DMA at 0xe800-0xe807, BIOS settings: hde:pio, hdf:pio
ide3: BM-DMA at 0xe808-0xe80f, BIOS settings: hdg:pio, hdh:pio

A little further down is:

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15

I have tried to force DMA using boot parameters, but without success.

===========================[/proc/interrupts]==========================
CPU0 CPU1
0: 1834858 1823909 IO-APIC-edge timer
1: 5073 5179 IO-APIC-edge keyboard
2: 0 0 XT-PIC cascade
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-edge acpi
10: 4 4 IO-APIC-edge advansys
12: 97363 103087 IO-APIC-edge PS/2 Mouse
14: 181732 211754 IO-APIC-edge ide0
15: 2 10 IO-APIC-edge ide1
16: 1431214 1528254 IO-APIC-level bttv, Ensoniq AudioPCI,
nvidia
17: 55827 56939 IO-APIC-level eth0
19: 0 0 IO-APIC-level usb-uhci
NMI: 0 0
LOC: 3667630 3667650
ERR: 0
MIS: 21

===========================[/proc/ide/cmd64x]==========================

CMD648 Chipset.
--------------- Primary Channel ---------------- Secondary Channel
-------------
enabled enabled
--------------- drive0 --------- drive1 -------- drive0 ----------
drive1 ------
DMA enabled: yes no no no
DMA Mode: UDMA(4) PIO(?) PIO(?)
PIO(?)
PIO Mode: ? ? ? ?
polling polling
clear clear
enabled enabled
CFR = 0x40, HI = 0x04, LOW = 0x00
ARTTIM23 = 0x0c, HI = 0x00, LOW = 0x0c
MRDMODE = 0x00, HI = 0x00, LOW = 0x00

======================[/proc/ide/hde/settings]========================

name value min max mode
---- ----- --- --- ----
bios_cyl 119150 0 65535 rw
bios_head 16 0 255 rw
bios_sect 63 0 63 rw
breada_readahead 4 0 127 rw
bswap 0 0 1 r
current_speed 68 0 69 rw
file_readahead 0 0 2097151 rw
ide_scsi 0 0 1 rw
init_speed 68 0 69 rw
io_32bit 0 0 3 rw
keepsettings 0 0 1 rw
lun 0 0 7 rw
max_kb_per_request 127 1 127 rw
multcount 0 0 8 rw
nice1 1 0 1 rw
nowerr 0 0 1 rw
number 0 0 3 rw
pio_mode write-only 0 255 w
slow 0 0 1 rw
unmaskirq 0 0 1 rw
using_dma 1 0 1 rw

=============================[/proc/pci]==============================

PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge
(rev 2).
Master Capable. Latency=64.
Prefetchable 32 bit memory at 0xe8000000 [0xebffffff].
Bus 0, device 1, function 0:
PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev
2).
Master Capable. Latency=64. Min Gnt=136.
Bus 0, device 7, function 0:
ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2).
Bus 0, device 7, function 1:
IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1).
Master Capable. Latency=64.
I/O at 0xf000 [0xf00f].
Bus 0, device 7, function 2:
USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1).
IRQ 19.
Master Capable. Latency=64.
I/O at 0xd000 [0xd01f].
Bus 0, device 7, function 3:
Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2).
IRQ 9.
Bus 0, device 8, function 0:
RAID bus controller: CMD Technology Inc PCI0648 (rev 1).
IRQ 16.
Master Capable. Latency=64. Min Gnt=2.Max Lat=4.
I/O at 0xd400 [0xd407].
I/O at 0xd800 [0xd803].
I/O at 0xdc00 [0xdc07].
I/O at 0xe000 [0xe003].
I/O at 0xe400 [0xe40f].
Bus 0, device 9, function 0:
Multimedia video controller: Brooktree Corporation Bt848 TV with DMA
push (rev 17).
IRQ 17.
Master Capable. Latency=64. Min Gnt=16.Max Lat=40.
Prefetchable 32 bit memory at 0xef000000 [0xef000fff].
Bus 0, device 10, function 0:
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
(rev 0).
IRQ 18.
I/O at 0xe800 [0xe81f].
Bus 0, device 11, function 0:
Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 7).
IRQ 19.
Master Capable. Latency=64. Min Gnt=12.Max Lat=128.
I/O at 0xec00 [0xec3f].
Bus 1, device 0, function 0:
VGA compatible controller: nVidia Corporation NV15 (Geforce2 GTS)
(rev 163).
IRQ 16.
Master Capable. Latency=248. Min Gnt=5.Max Lat=1.
Non-prefetchable 32 bit memory at 0xec000000 [0xecffffff].
Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff].
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/