bus dma fixes
jhb at freebsd.org
Mon Mar 26 18:01:17 UTC 2007
On Monday 26 March 2007 10:48:52 am John Baldwin wrote:
> 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?
> 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.
Ok, I've updated the patch so that it no longer patches ata(4) but instead
enfources an 8k boundary on all DMA tags on affected systems. However, this
will only fix cia(4) systems. Other systems not found by the current check
need to be updated to set busdma_pyxis_bug in their chipset code, and you can
test if this fixes problems by just setting that variable to 1 on other
systems where it isn't already set.
I know that the pr (75317) mentions that some PC164 systems have the same
issue but aren't detected as broken currently.
More information about the freebsd-alpha