diff -Nru nvidia-graphics-drivers-470-470.223.02/debian/changelog nvidia-graphics-drivers-470-470.223.02/debian/changelog --- nvidia-graphics-drivers-470-470.223.02/debian/changelog 2023-10-30 15:17:05.000000000 +0000 +++ nvidia-graphics-drivers-470-470.223.02/debian/changelog 2024-02-05 08:33:36.000000000 +0000 @@ -1,3 +1,11 @@ +nvidia-graphics-drivers-470 (470.223.02-0ubuntu2) noble; urgency=medium + + * debian/dkms_nvidia/patches/buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch, + debian/dkms_nvidia/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch: + - Fix build with Linux 6.8 (LP: #2052420) + + -- Paolo Pisati Mon, 05 Feb 2024 08:33:36 +0000 + nvidia-graphics-drivers-470 (470.223.02-0ubuntu1) noble; urgency=medium * New upstream release (LP: #2038514). diff -Nru nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch --- nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch 1970-01-01 00:00:00.000000000 +0000 +++ nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch 2024-02-05 08:33:36.000000000 +0000 @@ -0,0 +1,62 @@ +linux-6.1.76, 6.6.15, and 6.7.3 have modified the non-ARCH-specific +pfn_valid() to use __rcu_read_lock/unlock[1] that is marked GPL and +cannot be used here[2][3][4] unless use the open source variant. + +As a workaround, reuse the old implementation until NVIDIA makes +a fixed release (due to no longer be using pfn_valid[5], likely +with its own implementation similarly to this patch). + +Safe to use with kernel >=5.15 or so but older ones had a different +pfn_valid implementation. However 5.15 and older branches are +"currently" not affected, so simply limit to >=6.1.76. + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/mmzone.h?h=v6.7.3&id=3a01daace71b521563c38bbbf874e14c3e58adb7 +[2] https://bugs.gentoo.org/923456 +[3] https://forums.developer.nvidia.com/t/280908 +[4] https://github.com/NVIDIA/open-gpu-kernel-modules/issues/594 +[5] https://github.com/NVIDIA/open-gpu-kernel-modules/issues/594#issuecomment-1916197641 +--- a/common/inc/nv-linux.h ++++ b/common/inc/nv-linux.h +@@ -1990,2 +1990,23 @@ + ++#if defined(CONFIG_HAVE_ARCH_PFN_VALID) || LINUX_VERSION_CODE < KERNEL_VERSION(6,1,76) ++# define nv_pfn_valid pfn_valid ++#else ++/* pre-6.1.76 kernel pfn_valid version without GPL rcu_read_lock/unlock() */ ++static inline int nv_pfn_valid(unsigned long pfn) ++{ ++ struct mem_section *ms; ++ ++ if (PHYS_PFN(PFN_PHYS(pfn)) != pfn) ++ return 0; ++ ++ if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS) ++ return 0; ++ ++ ms = __pfn_to_section(pfn); ++ if (!valid_section(ms)) ++ return 0; ++ ++ return early_section(ms) || pfn_section_valid(ms, pfn); ++} ++#endif + #endif /* _NV_LINUX_H_ */ +--- a/nvidia/nv-mmap.c ++++ b/nvidia/nv-mmap.c +@@ -576,3 +576,3 @@ + if (!IS_REG_OFFSET(nv, access_start, access_len) && +- (pfn_valid(PFN_DOWN(mmap_start)))) ++ (nv_pfn_valid(PFN_DOWN(mmap_start)))) + { +--- a/nvidia/os-mlock.c ++++ b/nvidia/os-mlock.c +@@ -102,3 +102,3 @@ + if ((nv_follow_pfn(vma, (start + (i * PAGE_SIZE)), &pfn) < 0) || +- (!pfn_valid(pfn))) ++ (!nv_pfn_valid(pfn))) + { +@@ -176,3 +176,3 @@ + +- if (pfn_valid(pfn)) ++ if (nv_pfn_valid(pfn)) + { diff -Nru nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch --- nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch 1970-01-01 00:00:00.000000000 +0000 +++ nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia/patches/buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch 2024-02-05 08:24:46.000000000 +0000 @@ -0,0 +1,79 @@ +From 73119b41f7089deadc3de2baef96e3526bd11a32 Mon Sep 17 00:00:00 2001 +From: Paolo Pisati +Date: Wed, 31 Jan 2024 11:43:25 +0000 +Subject: [PATCH] nv_drm_ioctls: DRM_UNLOCKED is now the default behaviour + +Signed-off-by: Paolo Pisati +--- + nvidia-drm/nvidia-drm-drv.c | 24 +++++++++---------- + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c +index 5ef557ce..261a6b83 100644 +--- a/nvidia-drm/nvidia-drm-drv.c ++++ b/nvidia-drm/nvidia-drm-drv.c +@@ -745,29 +745,29 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = { + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_NVKMS_MEMORY, + nv_drm_gem_import_nvkms_memory_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ + + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_USERSPACE_MEMORY, + nv_drm_gem_import_userspace_memory_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_MAP_OFFSET, + nv_drm_gem_map_offset_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GET_DEV_INFO, + nv_drm_get_dev_info_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + + #if defined(NV_DRM_FENCE_AVAILABLE) + DRM_IOCTL_DEF_DRV(NVIDIA_FENCE_SUPPORTED, + nv_drm_fence_supported_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_FENCE_CONTEXT_CREATE, + nv_drm_fence_context_create_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_FENCE_ATTACH, + nv_drm_gem_fence_attach_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + #endif + + DRM_IOCTL_DEF_DRV(NVIDIA_GET_CLIENT_CAPABILITY, +@@ -776,19 +776,19 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = { + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + DRM_IOCTL_DEF_DRV(NVIDIA_GET_CRTC_CRC32, + nv_drm_get_crtc_crc32_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GET_CRTC_CRC32_V2, + nv_drm_get_crtc_crc32_v2_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_EXPORT_NVKMS_MEMORY, + nv_drm_gem_export_nvkms_memory_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_ALLOC_NVKMS_MEMORY, + nv_drm_gem_alloc_nvkms_memory_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(NVIDIA_GEM_EXPORT_DMABUF_MEMORY, + nv_drm_gem_export_dmabuf_memory_ioctl, +- DRM_RENDER_ALLOW|DRM_UNLOCKED), ++ DRM_RENDER_ALLOW), + #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ + }; + +-- +2.43.0 + diff -Nru nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia.conf nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia.conf --- nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia.conf 2023-10-30 15:17:05.000000000 +0000 +++ nvidia-graphics-drivers-470-470.223.02/debian/dkms_nvidia.conf 2024-02-05 08:33:36.000000000 +0000 @@ -13,6 +13,8 @@ DEST_MODULE_LOCATION[2]="/kernel/drivers/char/drm" AUTOINSTALL="yes" PATCH[0]="disable_fstack-clash-protection_fcf-protection.patch" +PATCH[1]="buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch" +PATCH[2]="buildfix_kernel_6.8-gpl-pfn_valid.patch" #PATCH[1]="buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch" #PATCH[2]="buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch" # Apply from v4 to v5.12 kernels diff -Nru nvidia-graphics-drivers-470-470.223.02/debian/templates/dkms_nvidia.conf.in nvidia-graphics-drivers-470-470.223.02/debian/templates/dkms_nvidia.conf.in --- nvidia-graphics-drivers-470-470.223.02/debian/templates/dkms_nvidia.conf.in 2023-10-30 15:17:05.000000000 +0000 +++ nvidia-graphics-drivers-470-470.223.02/debian/templates/dkms_nvidia.conf.in 2024-02-05 08:33:36.000000000 +0000 @@ -13,6 +13,8 @@ DEST_MODULE_LOCATION[2]="/kernel/drivers/char/drm" AUTOINSTALL="yes" PATCH[0]="disable_fstack-clash-protection_fcf-protection.patch" +PATCH[1]="buildfix_kernel_6.8-nv_drm_ioctls-DRM_UNLOCKED-is-now-the-default-behavi.patch" +PATCH[2]="buildfix_kernel_6.8-gpl-pfn_valid.patch" #PATCH[1]="buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch" #PATCH[2]="buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch" # Apply from v4 to v5.12 kernels