Я пытаюсь протестировать драйвер ION в Linux 4.4.60.Я тестирую в 32-битном ядре.Этот конкретный контрольный пример "DMAReadCached" в tests / device_test.cpp (часть LIBION) не выполняется.
Подробная информация о DMAReadCached: (не удается)
Это тестовый случай, когда память будетвыделенный ION Driver, а ION сам позаботится об обслуживании кэша.(ION_IOC_FLAGGED).Мы пытаемся записать что-то в выделенную кешированную память.И мы пытаемся прочитать его в буфер пространства пользователя.Затем мы сравниваем данные, записанные в буфере пространства пользователя, с исходными данными, которые мы записали в кешированной памяти.
К вашему сведению: DMAReadCachedNeedsSync - это еще один тестовый случай, когда память будет выделяться ION, но обслуживание кэша будет выполняться с помощью явных вызовов синхронизации,Этот тест пройден.DMAWriteCached также прошел там, где мы делаем противоположное DMAReadCached.
В настоящее время я использую NULL-устройство (оно не должно создавать проблем для 32-битного ядра?).Только для 64-битного ядра нам нужно правильно передать устройство.
Я попытался отладить и обнаружил, что readDMA не происходит должным образом, когда я буду читать из fd, выделенного с помощью ion_alloc, в buf, выделенный в пространстве пользователя.
Кроме того, DMAReadCached с явным вызовом синхронизации передан.Но по умолчанию этот контрольный пример должен проходить без самого вызова синхронизации.
Может ли кто-либо со знанием ION прокомментировать или помочь, предложив возможные причины сбоя этого контрольного примера?
Этоединственный тестовый случай, который не проходит.Любая помощь приветствуется.