HPT366 IDE DMA error question.
What could cause this error?
hdi: timeout waiting for DMAide_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
Quoted 10 lines · Mike Panetta
hdi: timeout waiting for DMA
ide_dmaproc: chipset supportedide_dma_timeoutfunc only: 14
hdi: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hdi: DMA disabled
ide4: reset: successI 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
we have a system with hpt 370's (366 driver) that we found the following obvious bug in. If you read the spec carefuly, it is obviously correct. You have to set DMA up for read vs. write. Does this make your problems go away? DIff against 2.4.3
Signature · 4 lines
Tim Hockin Systems Software Engineer Sun Microsystems, Cobalt Server Appliances [email protected]
drivers/ide/hpt366.c +3 -1
@@ -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)
include/linux/ide.h +1 -0
@@ -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 */
PATCH 1/1 hpt366.c, *bad_ata66_4 additions (2.2.19 + ide.2.2.19.04092001.patch)
In reply to Mike Panetta(2.2.19 + ide.2.2.19.04092001.patch)
block/hpt366.new.c Fri Apr 27 16:30:13 2001 renamed from block/hpt366.c Fri Apr 20 14:23:54 2001 +3 -0
@@ -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.
--