Мы работаем с процессором на базе ARM64 и пытаемся сопоставить адрес устройства с пользовательским пространством в функции mmap драйвера.
В настоящее время мы используем pgprot_noncached
и remap_pfn_range
для сопоставления регистров устройств с пользовательским пространством, но это дает:
unhandled alignment fault (7) at 0xffffb420f080
Я ссылался на Linux на arm64: необработанные ошибки выравнивания , что указывает на то, что pgprot_noncached
навязывает строгий порядок, что является причиной проблемы.
Я не могу использовать решение, упомянутое в Linux на arm64: необработанные ошибки выравнивания, так как dma_mmap_coherent ожидает динамического выделения памяти от dma_zalloc_coherent
. Есть ли другой способ сопоставить память устройства с пользовательским пространством без использования DMA API?