【问题标题】:DMAReadCached in libion failing when testing the ION Driver测试 ION 驱动程序时,libion​​ 中的 DMAReadCached 失败
【发布时间】:2018-12-27 07:38:01
【问题描述】:

我正在尝试在 linux 4.4.60 中测试 ION 驱动程序。我正在测试 32 位内核。 tests/device_test.cpp(LIBION 的一部分)中的这个特定测试用例“DMAReadCached”失败了。

DMAReadCached 的详细信息:(失败)

这是一个测试用例,其中 ION 驱动程序将分配内存,而 ION 本身将负责缓存维护。 (ION_IOC_FLAGGED)。我们正在尝试将某些内容写入分配的缓存内存中。我们正在尝试将其读入用户空间缓冲区。然后我们将写入用户空间缓冲区的数据与我们写入缓存中的原始数据进行比较。

仅供参考:DMAReadCachedNeedsSync 是另一个测试用例,其中 ION 将分配内存,但缓存维护将通过显式同步调用完成。这个测试用例通过了。 DMAWriteCached 也通过了与 DMAReadCached 相反的地方。

我目前正在使用 NULL 设备(它一定不会对 32 位内核造成任何问题?)。仅对于 64 位内核,我们需要传递正确的设备。

我尝试调试,发现 readDMA 没有正常发生,我将从使用 ion_alloc 分配的 fd 读取到用户空间中分配的 buf。

此外,通过显式调用同步的 DMAReadCached。但是默认情况下,这个测试用例应该在没有同步调用的情况下通过。

任何了解 ION 的人都可以通过提出此测试用例失败的可能原因来发表评论或提供帮助吗?

这是唯一失败的测试用例。任何帮助表示赞赏。

【问题讨论】:

标签: android memory-management linux-device-driver embedded-linux android-ion


【解决方案1】:

也许您可以使用函数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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2016-01-28
    • 2016-04-26
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多