2001-04-26 20:59:07

by Mike Panetta

[permalink] [raw]
Subject: HPT366 IDE DMA error question.


What could cause this error?

hdi: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hdi: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hdi: DMA disabled
ide4: reset: success

I get this message on all my off board HPT366 based controller
cards. I am using these cards with seagate Barracuda ATA III
Model ST320414A 20GB drives. Are there any known issues with
these drives and the HPT366 based controllers? Are there any
known issues with using 2-3 HPT366 cards in one system? There
is only 1 drive per channel (2 per card). I am using this setup
with Software RAID and needless to say no DMA=slow as hell.
Just so you know the onboard IDE controller works fine. The
drives report no errors on the onboard controllers and they
have UDMA enabled (it was not disabled by the kernel).

If there is any other info that is needed I will be glad
to provide it.

Thanks,
Mike
--


2001-04-27 17:31:11

by Tim Hockin

[permalink] [raw]
Subject: Re: HPT366 IDE DMA error question.

diff -u dist-2.4.3/drivers/ide/hpt366.c linux-2.4/drivers/ide/hpt366.c
--- dist-2.4.3/drivers/ide/hpt366.c Sat Jan 27 08:45:58 2001
+++ linux-2.4/drivers/ide/hpt366.c Thu Apr 26 20:15:17 2001
@@ -523,9 +638,11 @@

void hpt370_rw_proc (ide_drive_t *drive, ide_dma_action_t func)
{
- if ((func != ide_dma_write) || (func != ide_dma_read))
+ if ((func != ide_dma_write && func != ide_dma_read)
+ || drive->rwproc_cache == (void *)func)
return;
hpt370_tune_chipset(drive, drive->current_speed, (func == ide_dma_write));
+ drive->rwproc_cache = (void *)func;
}

static int config_drive_xfer_rate (ide_drive_t *drive)
diff -u dist-2.4.3/include/linux/ide.h linux-2.4/include/linux/ide.h
--- dist-2.4.3/include/linux/ide.h Mon Jan 29 23:25:32 2001
+++ linux-2.4/include/linux/ide.h Thu Apr 26 20:16:00 2001
@@ -284,6 +284,7 @@
unsigned long service_time; /* service time of last request */
unsigned long timeout; /* max time to wait for irq */
special_t special; /* special action flags */
+ void *rwproc_cache; /* last rwproc update */
byte keep_settings; /* restore settings after drive reset */
byte using_dma; /* disk is using dma for read/write */
byte waiting_for_dma; /* dma currently in progress */



Attachments:
hpt.diff (1.22 kB)

2001-04-27 23:47:21

by Tim Moore

[permalink] [raw]
Subject: [PATCH] hpt366.c, *bad_ata66_4 additions (2.2.19 + ide.2.2.19.04092001.patch)

(2.2.19 + ide.2.2.19.04092001.patch)

--- drivers/block/hpt366.c Fri Apr 20 14:23:54 2001
+++ drivers/block/hpt366.new.c Fri Apr 27 16:30:13 2001
@@ -56,8 +56,11 @@

const char *bad_ata66_4[] = {
"IBM-DTLA-307075",
+ "IBM-DTLA-307060",
"IBM-DTLA-307045",
"IBM-DTLA-307030",
+ "IBM-DTLA-307020",
+ "IBM-DTLA-307015",
"WDC AC310200R",
NULL
};

Can we assume the rest of the Deskstar 75GXP family has the same problems?

hdg: IBM-DTLA-307020, 19623MB w/1916kB Cache, CHS=39870/16/63, UDMA(66)
hdh: IBM-DTLA-307020, 19623MB w/1916kB Cache, CHS=39870/16/63, UDMA(66)

http://www.storage.ibm.com/hardsoft/diskdrdl/desk/ds75gxp.htm

Deskstar 75GXP Interface Capacity (GB) RPM
DTLA-307015 Ultra ATA/100 15.36 7200
DTLA-307020 Ultra ATA/100 20.57 7200
DTLA-307030 Ultra ATA/100 30.73 7200
DTLA-307045 Ultra ATA/100 46.11 7200
DTLA-307060 Ultra ATA/100 61.49 7200
DTLA-307075 Ultra ATA/100 76.86 7200

rgds,
tim.
--