Есть модуль ядра для PCI-устройства, который нормально работает на разных версиях Linux c различными ядрами до 2.6.35 на процессорах Intel Core Dou и других x86, кроме Core i7 (на остальных Core iX не проверял). В модуле выделяются блоки памяти с помощью dma_alloc_coherent() для выполнения DMA в режиме bus mastering. Для блоков устанавливаю флаги SetPageReserved(). Физические адреса этих блоков передаются в приложение пользователя, где для них вызывается mmap() (в модуле remap_pfn_range()). Так вот при чтении данных всегда получаю 0xFFFFFFFF, хотя устройство непрерывно заполняет выделенные блоки памяти данными. Т.е. bus mastering DMA работает, формируются прерывания, ничего не подвисает. И такое поведение наблюдается только на Core i7. Подскажите в каком направлении копать. Куски кода приложу какие будут нужны. Спасибо.
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от karak
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от karak
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум DMA (bus master) buffer from user-space. (2011)
- Форум mmap (2003)
- Форум mmap (2006)
- Форум mmap+NFS? (2001)
- Форум mmap && PROT_EXEC (2007)
- Форум mmap и указатели (2013)
- Форум mmap: Permission denied (2010)
- Форум [kernel] .mmap, выравнивание (2012)
- Форум mmap и Windows (2008)
- Форум mmap Bus error (2005)