apt install nvidia-tesla-470-driver
dkms remove -m nvidia-tesla-470 -v 470.256.02 --all
dkms add -m nvidia-tesla-470 -v 470.256.02
dkms build -m nvidia-tesla-470 -v 470.256.02 -k 6.12.18-trim
报错不管,进行patch操作(有两部分需要patch):
--------------------------------------第一部分-----------------------------------
手动修改源码文件
编辑 nvidia/os-mlock.c:
vi /usr/src/nvidia-tesla-470-470.256.02/nvidia/os-mlock.c
找到:
extern int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn);
替换为以下代码:
#include <linux/version.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0)
int nv_follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn)
{
return -EINVAL; // follow_pfn removed in Linux 6.10+
}
#else
extern int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn);
int nv_follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn)
{
return follow_pfn(vma, address, pfn);
}
#endif
最后如下:
#include <linux/version.h>
static inline int nv_follow_pfn(struct vm_area_struct *vma,
unsigned long address,
unsigned long *pfn)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0)
// follow_pfn 已被移除,返回错误
return -EINVAL;
#elif defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
return unsafe_follow_pfn(vma, address, pfn);
#else
return follow_pfn(vma, address, pfn);
#endif
}
/*
static inline int nv_follow_pfn(struct vm_area_struct *vma,
unsigned long address,
unsigned long *pfn)
{
#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
return unsafe_follow_pfn(vma, address, pfn);
#else
return follow_pfn(vma, address, pfn);
#endif
}
*/
--------------------------------------第一部分结束-----------------------------------
--------------------------------------第二部分-----------------------------------
确认修改文件路径:
vi /usr/src/nvidia-tesla-470-470.256.02/nvidia-drm/nvidia-drm-drv.c
找到 output_poll_changed 并注释掉:
// .output_poll_changed = nv_drm_output_poll_changed,
--------------------------------------第二部分结束-----------------------------------
dkms remove -m nvidia-tesla-470 -v 470.256.02 --all
dkms add -m nvidia-tesla-470 -v 470.256.02
dkms build -m nvidia-tesla-470 -v 470.256.02 -k 6.12.18-trim
dkms install -m nvidia-tesla-470 -v 470.256.02 -k 6.12.18-trim
modprobe nvidia
nvidia-smi