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