dma_map_single() is supposed to be called on a buffer that exactly
starts and ends on a cacheline boundary, otherwise "bad things"
(e.g. overwrite of data that was written by device, ...) (especially
on dma non-coherent systems) may happen.
So what should be done when dma_map_single is not called
with a sane (ptr, size) argument ?
- is the driver (caller) considered buggy and should we return a 0
- is the driver (caller) considered buggy but we do the mapping
anyway, hoping that the driver has not/will not touched/touch
the boundary cachelines ?
- should we take appropriate actions to make sure the
cache-effects do not come into play (e.g. by using some kind of
bounce buffer) ?
Dimitri Torfs | NSCE
firstname.lastname@example.org | The Corporate Village
tel: +32 2 7008541 | Da Vincilaan 7 - D1
fax: +32 2 7008622 | B-1935 Zaventem - Belgium