DMA-отображения бывают двух типов:
- Потоковые (Streaming)
- Согласованные (Coherent или Сonsistent)
Согласованные отображение гарантировано доступны одновременно и процессору и устройству.
И при доступе каждая из сторон гарантировано получит "свежие" данные.
Чаще всего используются для долгоживущих буферов, например, когда буфер существует на протяжении всей жизни драйвера.
Пример использование -- память фреймбуфера.
При использовании потоковых отображений доступ возможен строго по очереди.
Чаще всего создаются на время одной операции.
Теоретически, могут быть более производительными.
Пример использования -- приём/отправка сетевых пакетов.
Уточню, что через dma_set_mask() и схожие функции Вы сообщаете ядру, с какими адресами может
работать Ваше устройство, а ядро отвечает, возможен ли DMA для такой маски.