Re: HT1000 Crash dump failure

From: John Baldwin <jhb_at_freebsd.org>
Date: Mon, 2 Jun 2008 17:46:30 -0400
On Monday 02 June 2008 04:52:59 pm Barney Cordoba wrote:
> I'm not sure how best to fix it, but it seems that
> this broke crash dumps on 
> the HT1000 chipset: 
> exit1() at exit1+0x39d 
> sys_exit() at sys_exit+0xe 
> ia32_syscall() at ia32_syscall+0x256 
> Xint0x80_syscall() at Xint0x80_syscall+0x5d 
> Uptime: 5d0h51m55s 
> Physical memory: 4084 MB 
> Dumping 325 MB:ata2: FAILURE - oversized DMA transfer
> attempt 65536 > 64512 
> ad4: setting up DMA failed 
> --------------- Previous Message ----------------
> ** DUMP FAILED (ERROR 5) ** 
> Automatic reboot in 15 seconds - press a key on the
> console to abort 
> Rebooting... 
> cpu_reset: Restarting BSP 
> I'm guessing that the atadev->max_iosize is still set
> to 64k somehow (DMA 
> default) for the ata disk when it does the check in
> ad_strategy(), but I'm 
> not sure how as for the HT1000 chipset at least
> ch->dma->max_iosize is set to 
> 63k in the controller allocate routine which should be
> run before the child 
> disk devices are probed and attached AFAICT. 
> -- 
> John Baldwin 
> 
> ----------------------------------
> 
> I found this message, but no resolution. Has anyone
> figured out how not to get the oversized DMA error
> with HT1000 chipset?

Yeah, try this patch.  I get massive instability on RELENG_7 HT1000 systems
w/o it.

Index: ata-chipset.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.219
diff -u -r1.219 ata-chipset.c
--- ata-chipset.c	21 Apr 2008 10:51:38 -0000	1.219
+++ ata-chipset.c	2 Jun 2008 21:45:54 -0000
_at__at_ -1825,7 +1825,7 _at__at_
     int error;
 
     ch->dma.alignment = 16;
-    ch->dma.max_iosize = 126 * DEV_BSIZE;
+    ch->dma.max_iosize = 64 * DEV_BSIZE;
 
     mode = ata_limit_mode(dev, mode, ATA_UDMA2);
 
_at__at_ -3212,7 +3212,7 _at__at_
 	ch->dma.max_address = BUS_SPACE_MAXADDR;
 
     /* chip does not reliably do 64K DMA transfers */
-    ch->dma.max_iosize = 126 * DEV_BSIZE; 
+    ch->dma.max_iosize = 64 * DEV_BSIZE; 
 }
 
 
_at__at_ -3261,7 +3261,7 _at__at_
     int error;
 
     ch->dma.alignment = 16;
-    ch->dma.max_iosize = 126 * DEV_BSIZE;
+    ch->dma.max_iosize = 64 * DEV_BSIZE;
 
     mode = ata_limit_mode(dev, mode, ATA_UDMA2);
 
_at__at_ -4664,7 +4664,7 _at__at_
      { ATA_CSB6,      0x00, SWKS100, 0, ATA_UDMA5, "CSB6" },
      { ATA_CSB6_1,    0x00, SWKS66,  0, ATA_UDMA4, "CSB6" },
      { ATA_HT1000,    0x00, SWKS100, 0, ATA_UDMA5, "HT1000" },
-     { ATA_HT1000_S1, 0x00, SWKS100, 4, ATA_SA150, "HT1000" },
+     { ATA_HT1000_S1, 0x00, SWKSMIO, 4, ATA_SA150, "HT1000" },
      { ATA_HT1000_S2, 0x00, SWKSMIO, 4, ATA_SA150, "HT1000" },
      { ATA_K2,        0x00, SWKSMIO, 4, ATA_SA150, "K2" },
      { ATA_FRODO4,    0x00, SWKSMIO, 4, ATA_SA150, "Frodo4" },
_at__at_ -4766,7 +4766,7 _at__at_
     ch->hw.tf_write = ata_serverworks_tf_write;
 
     /* chip does not reliably do 64K DMA transfers */
-    ch->dma.max_iosize = 126 * DEV_BSIZE;
+    ch->dma.max_iosize = 64 * DEV_BSIZE;
 
     return 0;
 }

-- 
John Baldwin
Received on Mon Jun 02 2008 - 19:49:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:31 UTC