Я написал драйвер для Linux, который ioremaps экспортирует PCI BAR0 для конкретного устройства в двоичный атрибут sysfs, позволяя пользовательскому пространству напрямую управлять им.
Проблема возникает, когда я пытаюсь использовать MMAP поверх атрибута для прямого доступа к этому биту памяти (из пользовательской программы). Чтение проходит успешно и возвращает ожидаемые значения, хотя когда я записываю в эту память, она кэшируется где-то между ядром и памятью и не доставляется в корневой комплекс GMCH (и, следовательно, на устройство ). Что я хотел бы сделать, так это иметь неявный барьер записи памяти после каждого доступа.
Последующие действия: