cvs commit: src/sys/dev/ata ata-all.h ata-chipset.c ata-dma.c
ata-lowlevel.c
John Baldwin
jhb at freebsd.org
Mon Feb 11 15:52:01 PST 2008
On Thursday 13 December 2007 06:47:36 am SXren Schmidt wrote:
> sos 2007-12-13 11:47:36 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/dev/ata ata-all.h ata-chipset.c ata-dma.c
> ata-lowlevel.c
> Log:
> Implement a workaround of the datacorruption problem on serverworks HT1000
chipsets.
> The HT1000 DMA engine seems to not always like 64K transfers and sometimes
barfs data all over memory leading to instant chrash and burn.
> Also fix 48bit adressing issues, apparently newer chips needs 16bit writes
and not the usual fifo thing.
>
> HW donated by: Travis Mikalson at TerraNovaNet
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
** 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
More information about the cvs-src
mailing list