Мы работаем с процессором на базе 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
. Есть ли другой способ сопоставить память устройства с пользовательским пространством без использования API DMA