DMA errors with SATA on 5.x [one fix]

Garance A Drosihn drosih at rpi.edu
Wed Dec 8 20:45:14 PST 2004


At 1:01 AM -0600 12/7/04, Tim Welch wrote:
>I'm getting NID not found/DMA errors on 5-STABLE with a Seagate 200gb
>sata drive:
>
>    ad2: FAILURE - WRITE_DMA status=51<READY,DSC,ERROR>
>    error=10<NID_NOT_FOUND> LBA=268435455
>
>This appears to be a result of 48-bit addressing. Any time a write is
>attempted to the sector above, I get multiple messages like this. It
>continues until I shut down. After a bit of googling I found this post:
>
>http://lists.freebsd.org/pipermail/freebsd-hackers/2004-October/008821.html
>
>and applied the change suggested. It seems to have fixed the problem,
>and I've had no troubles from this since Nov. 18th when I applied that
>patch.  I'm running an Intel 875PBZ board with the ich5 controller.
>The drive in question is a Seagate ST3200822AS/3.01 (as reported by
>dmesg). So the question is, will this patch be committed anytime soon?

That looks like a pretty safe patch to make.  The message says he
just reduced the 48-bit trigger level by one:

--- ata-lowlevel.c.orig Wed Nov 24 05:47:26 2004
+++ ata-lowlevel.c      Wed Dec  8 22:45:39 2004
@@ -701,7 +701,7 @@
      ATA_IDX_OUTB(atadev->channel, ATA_ALTSTAT, ATA_A_4BIT);

      /* only use 48bit addressing if needed (avoid bugs and overhead) */
-    if ((lba > 268435455 || count > 256) && atadev->param &&
+    if ((lba > 268435454 || count > 256) && atadev->param &&
         atadev->param->support.command2 & ATA_SUPPORT_ADDRESS48) {

         /* translate command into 48bit version */

If this fixes a problem with large disks for both the original
person and for you, then I suspect we should commit it.  I don't
know if we need to add a comment saying why we're going with
268435454 instead of 268435455, though.

-- 
Garance Alistair Drosehn            =   gad at gilead.netel.rpi.edu
Senior Systems Programmer           or  gad at freebsd.org
Rensselaer Polytechnic Institute    or  drosih at rpi.edu


More information about the freebsd-stable mailing list