我的内核驱动程序构建存在问题。我正在构建一个自定义(尽管非常基本的)NVidia RDMA驱动程序,并在make文件中收到构建警告。具体来说,它正在寻找两个NVidia API调用nvidia_p2p_put_pages和nvidia_p2p_get_pages。使用'nm'可以看到这些入口点位于NVidia驱动程序模块(nvidia.ko)中。但是,我对Linux驱动程序make文件系统的内部结构不太熟悉,无法在构建时找到这些入口点。
RDMA工具包文档是指提取脚本“./NVIDIA-Linux-x86_64-.run”和构建目录。但是,在提取最新的驱动程序源后,我无法找到任何构建文件。
正如你所知,我对此很陌生。任何帮助将不胜感激。 感谢
答案 0 :(得分:3)
基本的GPUDirect RDMA文档为here。 如section 4.3所示,构建一个nvidia驱动程序linux内核模块需要各种驱动程序头文件和makefile。
可以按如下方式访问这些文件:
所有nvidia linux驱动程序安装程序都有命令行开关选项。通过将--help
附加到驱动程序安装程序命令字符串,可以找到基本选项,例如:
sh NVIDIA-Linux-x86_64-319.72.run --help
可以通过以下方式访问更多高级选项:
sh NVIDIA-Linux-x86_64-319.72.run --advanced-options
其中一个高级选项是-x
,它只会提取驱动程序文件,不会“安装”任何文件:
sh NVIDIA-Linux-x86_64-319.72.run -x
这将创建一个文件可用的目录。在此目录中,kernel
目录具有必要的头文件和示例内核模块makefile
,可用于学习要链接的相应库:
cd NVIDIA-Linux-x86_64-319.72/kernel