我使用的是 Ubuntu 14.04,Linux 版本为 3.16.0-30-generic。我安装了 Beignet 以支持 OpenCL。我遇到了一些错误,Beignet 文档说可以通过应用此方法解决它们修补到 Linux 内核。我尝试保存补丁并运行
patch -p1 < disable-batchbuffer-security.patch
但它说找不到要修补的文件。我尝试搜索 i915_gem_execbuffer.c,但找不到。我需要安装内核源才能应用补丁吗?
答案1
简短的回答是:是的。
长话短说,你需要编译自己的内核。因此,从 repo 安装源代码后,你需要修补它们。这就是使用上面的 patch 命令的地方。我认为这里你可以找到一个很好的文档来了解如何在你的 Ubuntu 系统上执行此操作。
答案2
你有一个 3.16 内核。为什么你必须安装内核源?该补丁是为了弥补你在编译时遇到的 _local 错误
./build/utest/utest_run
Linux 内核 4.2 中将修复此问题。由于您使用的是较旧的内核,因此该补丁将修复您在编译时遇到的 15-30 个错误
./utest_run.
您必须做的一件事(文档中没有提到)是在应用补丁之前登录到 root ( sudo su
)。如果您查看该补丁的第一行,您会看到该补丁会遍历/drivers
根文件夹中的目录。执行此操作,如果需要,应用命令解析器,然后./utest_run
重新运行。请务必在此处报告您的输出,以便将来帮助其他人。
祝你好运!