Bug 120177 - [ata] ATA DMA modes don't work on CF cards
Summary: [ata] ATA DMA modes don't work on CF cards
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 6.2-PRERELEASE
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-31 03:50 UTC by Trevor Blackwell
Modified: 2018-01-03 05:15 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Trevor Blackwell 2008-01-31 03:50:00 UTC
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.

Fix: 

The workaround is to use PIO mode, but that significantly impacts
real-time performance of my system.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2008-02-03 22:28:47 UTC
Responsible Changed
From-To: freebsd-i386->freebsd-bugs

This does not sound i386-specific.
Comment 2 Andrey V. Elsukov 2008-07-29 05:52:42 UTC
Hi, Trevor.

Can you try to set UDMA33 or UDMA66 mode?
If it will work you can try this patch:
http://butcher.heavennet.ru/patches/kernel/ata/ata_limit_mode_from_device_hints.diff

With this patch you can set mode in /boot/device.hints (or from loader
  prompt), for example:
hint.ad.0.mode="UDMA33"
hint.ad.1.mode="UDMA66"

-- 
WBR, Andrey V. Elsukov
Comment 3 Eitan Adler freebsd_committer freebsd_triage 2017-12-31 08:01:17 UTC
For bugs matching the following criteria:

Status: In Progress Changed: (is less than) 2014-06-01

Reset to default assignee and clear in-progress tags.

Mail being skipped