Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jan 2006 13:26:11 -0800
From:      Sebastian <list@mindling.com>
To:        freebsd <freebsd-questions@freebsd.org>
Subject:   Getting around WRITE_DMA errors
Message-ID:  <43C96C73.9010904@mindling.com>

next in thread | raw e-mail | index | archive | help
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)?

Thanks,
Sebastian




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