Сбой DMAReadCached в libion ​​при тестировании драйвера ION - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь протестировать драйвер 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 прокомментировать или помочь, предложив возможные причины сбоя этого контрольного примера?

Этоединственный тестовый случай, который не проходит.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 января 2019

Может быть, вы можете проверить свой ионный драйвер с функцией ion_map_dma_buf().Чтобы проверить, есть ли в нем операция синхронизации кэша.Для успешного прохождения теста должна выполняться правильная синхронизация кэша.

static struct sg_table *ion_map_dma_buf(struct dma_buf_attachment *attachment,
                    enum dma_data_direction direction)

см.: http://androidxref.com/kernel_3.18/xref/drivers/staging/android/ion/ion.c#880

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...