]> git.pld-linux.org Git - packages/xorg-driver-video-nvidia-legacy-390xx.git/commitdiff
- fix build on ix86 auto/th/xorg-driver-video-nvidia-legacy-390xx-390.157-5
authorJan Rękorajski <baggins@pld-linux.org>
Thu, 7 Sep 2023 13:02:57 +0000 (15:02 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Thu, 7 Sep 2023 13:02:57 +0000 (15:02 +0200)
kernel-6.5-handle-get_user_pages-vmas-argument-remova.patch
kernel-6.5-handle-get_user_pages-vmas-argument-removal-x8664.patch [new file with mode: 0644]
xorg-driver-video-nvidia-legacy-390xx.spec

index 9e997d8cdbf5869c75a2ef8421ead5c46ccea429..4da3e0bd9ea4992bb94a196a98526537a6bd2f1e 100644 (file)
@@ -153,48 +153,6 @@ index be405f29..dd4a2a6d 100644
      nv_mmap_read_unlock(mm);
  
      if (pages_pinned < 0 || (unsigned)pages_pinned < pages_count) {
-diff --git a/kernel/nvidia-uvm/uvm8_tools.c b/kernel/nvidia-uvm/uvm8_tools.c
-index 1dc7c97d..ea521945 100644
---- a/kernel/nvidia-uvm/uvm8_tools.c
-+++ b/kernel/nvidia-uvm/uvm8_tools.c
-@@ -251,13 +251,37 @@ static NV_STATUS map_user_pages(NvU64 user_va, NvU64 size, void **addr, struct p
-     }
-     nv_mmap_read_lock(current->mm);
-+#if defined(NV_GET_USER_PAGES_DROPPED_VMA)
-+    ret = NV_GET_USER_PAGES(user_va, num_pages, 1, 0, *pages);
-+#else
-     ret = NV_GET_USER_PAGES(user_va, num_pages, 1, 0, *pages, vmas);
-+#endif
-     nv_mmap_read_unlock(current->mm);
-     if (ret != num_pages) {
-         status = NV_ERR_INVALID_ARGUMENT;
-         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;
-+      }
-+
-+        vmas[i] = vma;
-+        start = (start + PAGE_SIZE) & PAGE_MASK;
-+    }
-+    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;
 diff --git a/kernel/nvidia/os-mlock.c b/kernel/nvidia/os-mlock.c
 index f88daed4..ad5cb9a1 100644
 --- a/kernel/nvidia/os-mlock.c
diff --git a/kernel-6.5-handle-get_user_pages-vmas-argument-removal-x8664.patch b/kernel-6.5-handle-get_user_pages-vmas-argument-removal-x8664.patch
new file mode 100644 (file)
index 0000000..d54b24c
--- /dev/null
@@ -0,0 +1,42 @@
+diff --git a/kernel/nvidia-uvm/uvm8_tools.c b/kernel/nvidia-uvm/uvm8_tools.c
+index 1dc7c97d..ea521945 100644
+--- a/kernel/nvidia-uvm/uvm8_tools.c
++++ b/kernel/nvidia-uvm/uvm8_tools.c
+@@ -251,13 +251,37 @@ static NV_STATUS map_user_pages(NvU64 user_va, NvU64 size, void **addr, struct p
+     }
+     nv_mmap_read_lock(current->mm);
++#if defined(NV_GET_USER_PAGES_DROPPED_VMA)
++    ret = NV_GET_USER_PAGES(user_va, num_pages, 1, 0, *pages);
++#else
+     ret = NV_GET_USER_PAGES(user_va, num_pages, 1, 0, *pages, vmas);
++#endif
+     nv_mmap_read_unlock(current->mm);
+     if (ret != num_pages) {
+         status = NV_ERR_INVALID_ARGUMENT;
+         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;
++      }
++
++        vmas[i] = vma;
++        start = (start + PAGE_SIZE) & PAGE_MASK;
++    }
++    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;
index 44e506bf50dec7d319b0e42778ad18a5320edbcb..eb00f7b8a235a2dfe90c7c8717d8d264d5a32124 100644 (file)
@@ -57,6 +57,7 @@ Patch4:               kernel-6.3-uvm.patch
 Patch5:                kernel-6.4.patch
 Patch6:                kernel-6.5-garbage-collect-all-references-to-get_user.patch
 Patch7:                kernel-6.5-handle-get_user_pages-vmas-argument-remova.patch
+Patch8:                kernel-6.5-handle-get_user_pages-vmas-argument-removal-x8664.patch
 URL:           https://www.nvidia.com/en-us/drivers/unix/
 BuildRequires: rpm-build >= 4.6
 BuildRequires: rpmbuild(macros) >= 1.752
@@ -325,6 +326,9 @@ rm -rf NVIDIA-Linux-x86*-%{version}*
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%ifarch %{x8664}
+%patch8 -p1
+%endif
 echo 'EXTRA_CFLAGS += -Wno-pointer-arith -Wno-sign-compare -Wno-unused' >> kernel/Makefile.kbuild
 
 %build
This page took 0.091545 seconds and 4 git commands to generate.