kern/164651: Disabling DMA in new Freebsd 9.0 CAM drivers does not
Russell J. Yount
Russell.Yount at gmail.com
Tue Jan 31 00:50:13 UTC 2012
>Synopsis: Disabling DMA in new Freebsd 9.0 CAM drivers does not work
>Arrival-Date: Tue Jan 31 00:50:10 UTC 2012
>Originator: Russell J. Yount
>Release: Freebsd 9.0
FreeBSD server8.localdomain 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Sun Jan 15 03:16:02 EST 2012 root at system-u.localdomain:/ufs/disk1/kernel/9.0/usr/src/sys/i386/compile/NET4801 i386
FreeBSD server10.localdomain 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Sat Jan 21 18:44:20 EST 2012 root at system-u.localdomain:/ufs/disk1/kernel/9.0/usr/src/sys/i386/compile/NET4801-NOCAM i386
Soekris Engineering produced a number of early version of the net4801 that did not support DMA on Compact flash disks correctly. Compact flash cards that did support DMA would fail unless "hw.ata.ata_dma=0" was place in /boot/loader.conf
to disable DMA transfers for the ad driver.
FreeBSD 9.0 when compiled with CAM support appears not to disable DMA and just hanges with disk light on. When CAM support is not compiled in FreeBSD 9.0 everything works as before.
The CAM subsystem appears not to support disabling DMA.
I have both net4801s that do and do not support DMA for Compact Flash Disks. The ones that support DMA do work correctly in FreeBSD 9.0. The problem described only affects early production models which did not support DMA.
Using an old net4801 which does support DMA with a flash card that does.
I suspect DMA is not being disabled at all with CAM and could be tested with other disks.
Am willing to test fixes if needed.
More information about the freebsd-bugs