diff -Nru nvidia-graphics-drivers-450-server-450.248.02/debian/changelog nvidia-graphics-drivers-450-server-450.248.02/debian/changelog --- nvidia-graphics-drivers-450-server-450.248.02/debian/changelog 2023-06-23 09:50:19.000000000 +0000 +++ nvidia-graphics-drivers-450-server-450.248.02/debian/changelog 2023-07-26 15:21:26.000000000 +0000 @@ -1,3 +1,12 @@ +nvidia-graphics-drivers-450-server (450.248.02-0ubuntu2) mantic; urgency=medium + + * debian/dkms_nvidia/patches/buildfix_kernel_6.5-fix-get_user_pages-get_user_pages_remote.patch, + debian/dkms_nvidia/patches/buildfix_kernel_6.5-fix-pin_user_pages.patch, + debian/dkms_nvidia/patches/buildfix_kernel_6.5-fix-pin_user_pages_remote.patch: + - Fix build with Linux 6.5 (LP: #2028165) + + -- Paolo Pisati Wed, 26 Jul 2023 15:21:26 +0000 + nvidia-graphics-drivers-450-server (450.248.02-0ubuntu1) mantic; urgency=medium * New upstream release (LP: #2024675). diff -Nru nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch --- nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch 1970-01-01 00:00:00.000000000 +0000 +++ nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch 2023-07-26 14:37:22.000000000 +0000 @@ -0,0 +1,102 @@ +From 738922af87e3d0096cbe737233fe7f28e91310eb Mon Sep 17 00:00:00 2001 +From: Paolo Pisati +Date: Fri, 21 Jul 2023 14:01:39 +0000 +Subject: [PATCH 2/2] Linux 6.5: get_user_pages() dropped vmas arg + +Signed-off-by: Paolo Pisati +--- + common/inc/nv-mm.h | 4 +++ + conftest.sh | 25 ++++++++++++++++++- + nvidia-uvm/uvm8_tools.c | 17 +++++++++++++ + 3 files changed, 45 insertions(+), 1 deletion(-) + +diff --git a/common/inc/nv-mm.h b/common/inc/nv-mm.h +index 321d718c..0ce99fad 100644 +--- a/common/inc/nv-mm.h ++++ b/common/inc/nv-mm.h +@@ -93,7 +93,11 @@ typedef int vm_fault_t; + if (force) + flags |= FOLL_FORCE; + ++#if defined(NV_GET_USER_PAGES_DROPPED_VMA) ++ return get_user_pages(start, nr_pages, flags, pages); ++#else + return get_user_pages(start, nr_pages, flags, pages, vmas); ++#endif + } + #endif + #endif +diff --git a/conftest.sh b/conftest.sh +index 9b844b84..bcdc8e5c 100755 +--- a/conftest.sh ++++ b/conftest.sh +@@ -2593,7 +2593,6 @@ compile_test() { + # write and force parameters AND that gup has task_struct and + # mm_struct as its first arguments. + # Return if available. +- # Fall through to default case if absent. + + echo "$CONFTEST_PREAMBLE + #include +@@ -2617,6 +2616,30 @@ compile_test() { + return + fi + ++ # Conftest #4: Check if get_user_pages dropped vmas argument. ++ # Return if postive. ++ # Fall through to default case if absent. ++ ++ echo "$CONFTEST_PREAMBLE ++ #include ++ long get_user_pages(unsigned long start, ++ unsigned long nr_pages, ++ unsigned int gup_flags, ++ struct page **pages) { ++ return 0; ++ }" > conftest$$.c ++ ++ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 ++ rm -f conftest$$.c ++ ++ if [ -f conftest$$.o ]; then ++ echo "#undef NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" ++ echo "#undef NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions" ++ echo "#define NV_GET_USER_PAGES_DROPPED_VMA" | append_conftest "functions" ++ rm -f conftest$$.o ++ return ++ fi ++ + echo "#define NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" + echo "#define NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions" + +diff --git a/nvidia-uvm/uvm8_tools.c b/nvidia-uvm/uvm8_tools.c +index 5e4d112a..9728a228 100644 +--- a/nvidia-uvm/uvm8_tools.c ++++ b/nvidia-uvm/uvm8_tools.c +@@ -269,6 +269,23 @@ static NV_STATUS map_user_pages(NvU64 user_va, NvU64 size, void **addr, struct p + goto fail; + } + ++#if defined(NV_GET_USER_PAGES_DROPPED_VMA) ++ struct vm_area_struct *vma; ++ unsigned long start; ++ ++ nv_mmap_read_lock(current->mm); ++ start = user_va; ++ for (i = 0; i < num_pages; i++) { ++ vma = find_vma(current->mm, start); ++ if (!vma) { ++ nv_mmap_read_unlock(current->mm); ++ status = NV_ERR_INVALID_ARGUMENT; ++ goto fail; ++ } ++ } ++ nv_mmap_read_unlock(current->mm); ++#endif ++ + for (i = 0; i < num_pages; i++) { + if (page_count((*pages)[i]) > MAX_PAGE_COUNT || uvm_file_is_nvidia_uvm(vmas[i]->vm_file)) { + status = NV_ERR_INVALID_ARGUMENT; +-- +2.40.1 + diff -Nru nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch --- nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch 1970-01-01 00:00:00.000000000 +0000 +++ nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia/patches/buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch 2023-07-26 14:35:05.000000000 +0000 @@ -0,0 +1,65 @@ +From dc621d963825e09d9569058be2d046d8902853e8 Mon Sep 17 00:00:00 2001 +From: Paolo Pisati +Date: Fri, 21 Jul 2023 13:17:48 +0000 +Subject: [PATCH] Linux 6.5: get_user_pages_remote() dropped vmas arg + +Signed-off-by: Paolo Pisati +--- + common/inc/nv-mm.h | 4 ++- + conftest.sh | 25 ++++++++++++++++++- + 2 files changed, 27 insertions(+), 2 deletions(-) + +diff --git a/common/inc/nv-mm.h b/common/inc/nv-mm.h +index be834b6f..0ce99fad 100644 +--- a/common/inc/nv-mm.h ++++ b/common/inc/nv-mm.h +@@ -162,7 +162,9 @@ typedef int vm_fault_t; + return get_user_pages_remote(mm, start, nr_pages, flags, + pages, vmas, NULL); + #endif +- ++ #elif defined(NV_GET_USER_PAGES_REMOTE_DROPPED_VMA) ++ return get_user_pages_remote(mm, start, nr_pages, flags, ++ pages, NULL); + #else + + return get_user_pages_remote(tsk, mm, start, nr_pages, flags, +diff --git a/conftest.sh b/conftest.sh +index 4e23a9e6..5fbf776a 100755 +--- a/conftest.sh ++++ b/conftest.sh +@@ -2778,7 +2778,30 @@ compile_test() { + echo "#define NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" + echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" + fi +- ;; ++ ++ # ++ # conftest #5: check if get_user_pages_remote() does not take ++ # vmas argument. ++ # ++ echo "$CONFTEST_PREAMBLE ++ #include ++ long get_user_pages_remote(struct mm_struct *mm, ++ unsigned long start, ++ unsigned long nr_pages, ++ unsigned int gup_flags, ++ struct page **pages, ++ int *locked) { ++ return 0; ++ }" > conftest$$.c ++ ++ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 ++ rm -f conftest$$.c ++ ++ if [ -f conftest$$.o ]; then ++ echo "#define NV_GET_USER_PAGES_REMOTE_DROPPED_VMA" | append_conftest "functions" ++ rm -f conftest$$.o ++ fi ++ ;; + + usleep_range) + # +-- +2.40.1 + diff -Nru nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia.conf nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia.conf --- nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia.conf 2023-06-23 09:50:19.000000000 +0000 +++ nvidia-graphics-drivers-450-server-450.248.02/debian/dkms_nvidia.conf 2023-07-26 15:21:26.000000000 +0000 @@ -15,6 +15,8 @@ PATCH[0]="disable_fstack-clash-protection_fcf-protection.patch" PATCH[1]="buildfix_kernel_6.2.patch" PATCH[2]="buildfix_kernel_6.3.patch" +PATCH[3]="buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch" +PATCH[4]="buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch" # Apply from v4 to v5.12 kernels # v5.13 kernels already disable both by default # v5.19 kernels may need cf-protection=branch diff -Nru nvidia-graphics-drivers-450-server-450.248.02/debian/templates/dkms_nvidia.conf.in nvidia-graphics-drivers-450-server-450.248.02/debian/templates/dkms_nvidia.conf.in --- nvidia-graphics-drivers-450-server-450.248.02/debian/templates/dkms_nvidia.conf.in 2023-06-23 09:50:19.000000000 +0000 +++ nvidia-graphics-drivers-450-server-450.248.02/debian/templates/dkms_nvidia.conf.in 2023-07-26 14:36:10.000000000 +0000 @@ -15,6 +15,8 @@ PATCH[0]="disable_fstack-clash-protection_fcf-protection.patch" PATCH[1]="buildfix_kernel_6.2.patch" PATCH[2]="buildfix_kernel_6.3.patch" +PATCH[3]="buildfix_kernel_6.5-get_user_pages_remote-dropped-vmas-arg.patch" +PATCH[4]="buildfix_kernel_6.5-get_user_pages-dropped-vmas-arg.patch" # Apply from v4 to v5.12 kernels # v5.13 kernels already disable both by default # v5.19 kernels may need cf-protection=branch