UDMA33 on older acer aladdin chips
Daniel Rock
D.Rock at t-online.de
Wed Oct 8 20:16:33 PDT 2003
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
More information about the freebsd-current
mailing list