适用于 Linux 4.7 内核的 Nvidia 驱动补丁
Linux 内核于上周发布了 4.7 的第一个 rc 版,果不其然,闭源的 Nvidia 驱动又挂掉了。而且,这次依然是内核的锅。
具体来说,Linux 内核在 /include/linux/radix-tree.h
里面引入了一个新的函数,名为 radix_tree_empty
。然而很不巧,这个函数和 Nvidia 闭源驱动里面的一个现有函数同名,因此就会导致 Nvidia 驱动在编译时候产生混乱。
除此之外,4.7 内核还删除了一个调用参数,而 Nvidia 闭源驱动还没有相应更新。
因此,为了正常编译 Nvidia 驱动,需要对内核源代码和 Nvidia 驱动文件同时做一些修改。
首先是针对内核的一个 patch,用于重命名那个同名函数:
然后是针对 Nvidia 驱动的 patch:
不过虽然 Nvidia 驱动模块可以顺利通过编译,但是用新内核启动之后,控制台会抛出非常多的 traceback。
所以这只是权宜之计,最好还是等内核上游解决那个同名函数的问题。