i386/61442: Highpoint RocketRAID 1520 uses only UDMA2
Björn König
bkoenig at cs.tu-berlin.de
Fri Jan 16 12:30:29 PST 2004
>Number: 61442
>Category: i386
>Synopsis: Highpoint RocketRAID 1520 uses only UDMA2
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-i386
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jan 16 12:30:15 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Björn König
>Release: FreeBSD 4.9
>Organization:
>Environment:
>Description:
Probably some (or maybe all) hard disks on S-ATA controller Highpoint RocketRAID 1520 remains in UDMA2 (33 MB/s). Tested with Seagate Barracuda 7200.7 (ST380013AS). ATA driver shows "DMA limited to UDMA33, non-ATA66 cable or device" during booting process and benchmarks confirms a very low sequential reading data transfer rate (e.g. around 15 MB/s).
>How-To-Repeat:
>Fix:
Use this patch below to override setting UDMA2 for HighPoint controllers and use the existing function hpt_cable80(...) to determine whether set this pessimistic mode or not.
--- sys/dev/ata/ata-dma.c.orig Wed Jan 14 16:21:02 2004
+++ sys/dev/ata/ata-dma.c Wed Jan 14 16:20:46 2004
@@ -186,6 +186,7 @@
int device = ATA_DEV(atadev->unit);
int devno = (channel << 1) + device;
int error;
+ int override = 0;
/* set our most pessimistic default mode */
atadev->mode = ATA_PIO;
@@ -210,8 +211,16 @@
#if 1
if (udmamode > 2 && !atadev->param->hwres_cblid) {
- ata_prtdev(atadev,"DMA limited to UDMA33, non-ATA66 cable or device\n");
- udmamode = 2;
+ if (chiptype == 0x00051103 && chiprev >= 0x01)
+ if (hpt_cable80)
+ override = 1;
+
+ if (!override) {
+ ata_prtdev(atadev,"DMA limited to UDMA33, non-ATA66 cable or device\n");
+ udmamode = 2;
+ } else {
+ ata_prtdev(atadev,"I don't force UDMA33\n");
+ }
}
#endif
switch (chiptype) {
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-i386
mailing list