bus dma fixes

John Baldwin jhb at freebsd.org
Mon Mar 26 15:13:39 UTC 2007


Can folks please try this patch (warning, not compile tested) to fix some 
issues with bus_dma and hopefully fix ATA DMA on Alpha 6.x?

http://www.FreeBSD.org/~jhb/patches/ata_alpha_dma.patch

It fixes the bus_dma code so that bus_dmamap_load() uses 
_bus_dmamap_load_buffer().  This results in some fixes as noted in PR 75317 
where bus_dmamap_load() wasn't honoring the maximum segment size for example.  
It also now bounces buffers that aren't properly aligned.  It also now 
supports bounce pages for mbufs and uio's.  As a sledgehammer fix for ATA on 
alpha, it limits the maximum segment size to 8k for ata(4) on alpha.  Does 
anyone have any more details on the PYXIS bug?  For example, does it only 
affect ata(4) or does it affect any DMA in the system?  If the latter, I 
would rather add a check into the bus dma code to trunc maxsegsize to 8k for 
all tags on broken systems.

-- 
John Baldwin


More information about the freebsd-alpha mailing list