Некоторые вопросы по dma _alloc _когерентный

  1. Адрес DMA, возвращаемый этим вызовом, совпадает с физическим адресом? LDD3 говорит, что адрес DMA должен рассматриваться драйвером как непрозрачный. Я хочу отобразить этот буфер DMA, чтобы пространство пользователя -могло читать/записывать непосредственно в него. Вопрос в том, какой PFN я должен указать для переназначения _pfn _диапазона (, который, к моему приятному удивлению, теперь (ядро ​​3.4+ )работает для обычной памяти так же, как и для памяти ввода-вывода ). Могу ли я просто преобразовать адрес DMA в unsigned long и преобразовать его в PFN? Разве это не нарушение того, что LDD3 сказал о непрозрачности?

  2. Всегда ли dma_alloc_coherentиспользует внутри себя __get_free_pages? Означает ли это, что область потенциально всегда превышает -выделенную (, поскольку первая функция занимает байты, а вторая функция выделяет в единицах страниц )?

  3. Есть ли способ настроить одно потоковое сопоставление для нескольких последовательных страниц, полученных при вызове __get_free_pages? dma_map_pageприменяется только к отдельным страницам.

17
задан Mateusz Piotrowski 15 May 2017 в 16:43
поделиться