i386/120177: ATA DMA modes don't work on CF cards

Trevor Blackwell tlb at tlb.org
Wed Jan 30 19:50:01 PST 2008


>Number:         120177
>Category:       i386
>Synopsis:       ATA DMA modes don't work on CF cards
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jan 31 03:50:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Trevor Blackwell
>Release:        6.2-PRERELEASE
>Organization:
Anybots
>Environment:
FreeBSD waldo.anybots.com 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #3: Thu Dec  6 23:22:05 PST 2007     root at turbine.anybots.com:/usr/obj/usr/src.RELENG_6/sys/WALDO  i386

>Description:
I can't make any ATA DMA modes work on this system, so I have to use PIO. The CF card, a Transcend 16 GB card (TS16GCF133), is rated to handle UDMA 0-4. The motherboard is a embedded system with a CF slot.

Normally, it won't boot at all. If I add hw.ata.ata_dma=0 in /boot/loader.conf it runs OK in PIO4 mode, but when I say 'atacontrol mode ad2 UDMA2' it gives a errors like

ad2: TIMEOUT - WRITE_DMA retrying (1 retry left) LBA=16936175
ad2: TIMEOUT - WRITE_DMA retrying (0 retries left) LBA=16936175
ad2: FAILURE - WRITE_DMA timed out LBA=16936175
g_vfs_done():ad2s1a[WRITE(offset=8671281152, length=16384)]error = 5

It seems to get nothing written so it freezes and eventually reboots.

Dmesg shows:

CPU: Intel(R) Pentium(R) III CPU - S          933MHz (930.96-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x6b4  Stepping = 4
Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
..
acpi0: <VIA606 AWRDACPI> on motherboard
..
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff,0x4000-0x407f,0x4080-0x40ff,0x5000-0x500f,0x6000-0x607f on acpi0
pci0: <ACPI PCI bus> on pcib0
..
atapci0: <VIA 82C686B UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xd000-0xd00f at device 7.1 on pci0
ata1: <ATA channel 1> on atapci0
..
ad2: 15296MB <TRANSCEND 20070831> at ata1-master PIO4

I have a few of these machines and I'm willing to try stuff on them.

>How-To-Repeat:

>Fix:
The workaround is to use PIO mode, but that significantly impacts real-time performance of my system.

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-i386 mailing list