On 09/09/2010 11:35 AM, Kevin Cernekee wrote:
On Thu, Sep 9, 2010 at 10:34 AM, Thomas Bogendoerfer
<tsbogend@xxxxxxxxxxxxxxxx> wrote:
looks like this is doing what the non_coherent_r10000 case does. So IMHO
My code is not currently in the tree, but I have 3 different hooks for
3 different processor types. The generic __dma_sync() workaround used
on R10K is not sufficient.
either which make non_coheren check more generic or could use the new
plat_sync thingie for IP28 and other non coherent r10k boxes.
That is a good idea. One thing I'd like to do is continue sharing the
same R10K code for IP27 / IP28 / IP32 / SNI_RM, and move all of it out
of dma-default.c . Do you have any suggestions on how to define the
plat_* handlers on a per-cpu-type basis instead of making 4 identical
copies of the R10K workaround?
I am working on patches that use asm-generic/dma-mapping-common.h. This
dispatches all DMA operations via a dma_map_ops vector.
It adds some function call overhead, but makes it easy to mix and match
different implementations.
My main motivation is to integrate the swiotlb.c bounce buffer
management for devices that have small dma_masks.
It is still a work in progress, and is not ready to publish yet.
I foresee a lot of churn in this area in the near future.
David Daney