【发布时间】: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.googlesource.com/platform/system/core/+/master/libion/… 您将在此链接中找到测试用例。搜索 DMAReadCached。
标签: android memory-management linux-device-driver embedded-linux android-ion