Andrew Gallatin wrote:
Hi,

I recently decided to update my alpha UP1000 to today's current from a
mid-July build.  However, UDMA33 did not work on a hard disk attached
to the built-in Acer Aladdin controller (verbose dmesg appended).

I think I have narrowed the problem down to this line of code:

atadev->channel->flags |= ATA_ATAPI_DMA_RO;

Removing this line gets my UDMA33 back.

If I understand the code correctly, the right fix should more look like:


diff -u -r1.18 ata-lowlevel.c
--- ata-lowlevel.c      7 Oct 2003 13:45:56 -0000       1.18
+++ ata-lowlevel.c      8 Oct 2003 22:38:15 -0000
@@ -73,7 +73,8 @@
     request->device->channel->running = request;

     /* disable ATAPI DMA writes if HW doesn't support it */
-    if (request->flags & (ATA_R_ATAPI | ATA_R_DMA | ATA_R_WRITE) &&
+    if (((request->flags & (ATA_R_ATAPI | ATA_R_DMA | ATA_R_WRITE)) ==
+                         (ATA_R_ATAPI | ATA_R_DMA | ATA_R_WRITE)) &&
        request->device->channel->flags & ATA_ATAPI_DMA_RO)
        request->flags &= ~ATA_R_DMA;


But I don't have ATAPI devices attached to this machine to test.




Daniel

_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to