Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jan 2006 18:19:17 -0800
From:      Sebastian <list@mindling.com>
Cc:        freebsd <freebsd-questions@freebsd.org>
Subject:   Re: Getting around WRITE_DMA errors
Message-ID:  <43C9B125.5040509@mindling.com>
In-Reply-To: <43C96C73.9010904@mindling.com>
References:  <43C96C73.9010904@mindling.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Sebastian wrote:

> Hi,
> Installing 6.0-RELEASE on a new machine. (Have tried 5.4 too). Using a 
> PCChips M848ALU motherboard with onboard SiS
> IDE controller, and a Hitachi 160gb disk.
>
> When my disk is in UDMA6 (133) mode, FreeBSD dies painfully with many 
> errors like:
>
>  ad0: WARNING -  WRITE_DMA48 UDMA ICRC error (retrying request) 
> LBA=316139999
>  ad0: WARNING -  WRITE_DMA48 UDMA ICRC error (retrying request) 
> LBA=316139999
>  ad0: FAILURE -  WRITE_DMA48 status=51(READY,DSC,ERROR) 
> error=4(ABORTED) LBA=316139999
>
> It then panics and dumps:
>
>  panic: initiate_write_inodeblock_ufs2: already started
>
> If I disable dma using "set hw.ata.ata_dma=0" at boot, or simply boot 
> in safe mode, it goes into PI04 mode and works fine. Also, if I change 
> to a lesser UDMA value using atacontrol after boot, such as:
>
>  # atacontrol mode ad0 UDMA4
>
> ... it also seems to behave just fine. I've tried UDMA3, UDMA4, UDMA5, 
> all seemingly without errors. But when I use UDMA6, the machine 
> immediately dies when the disk gets written to.
>
> So my question:
>
> What's the best way to tell FreeBSD to always use UDMA5 mode on that 
> disk at boot time (before it attempts to use the drive)?


So far the best I've come up with is adding to /etc/sysctl.conf:

    hw.ata.ata_dma=0

And to /etc/rc.d/early.sh:
 
    atacontrol mode ad0 UDMA5

Does this seem reasonable? It feels like there should be a better way.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43C9B125.5040509>