Created
December 9, 2019 04:43
-
-
Save sujunmin/eb55506bf01223fa6be24810c9e9400d to your computer and use it in GitHub Desktop.
Patch file for nvidia-legacy-390xx-390.116 for the linux kernel version 5.3.x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-linux.h /usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-linux.h | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-linux.h 2019-03-02 05:06:12.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-linux.h 2019-12-09 10:26:44.782636003 +0800 | |
@@ -701,8 +701,8 @@ | |
#elif (NV_ON_EACH_CPU_ARGUMENT_COUNT == 3) | |
#define NV_ON_EACH_CPU(func, info) \ | |
({ \ | |
- int __ret = on_each_cpu(func, info, 1); \ | |
- __ret; \ | |
+ on_each_cpu(func, info, 1); \ | |
+ 0; \ | |
}) | |
#else | |
#error "NV_ON_EACH_CPU_ARGUMENT_COUNT value unrecognized!" | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-list-helpers.h /usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-list-helpers.h | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-list-helpers.h 2019-01-28 00:12:19.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/common/inc/nv-list-helpers.h 2019-12-09 10:03:18.806524207 +0800 | |
@@ -90,11 +90,9 @@ | |
#define list_next_entry(pos, member) \ | |
list_entry((pos)->member.next, typeof(*(pos)), member) | |
#endif | |
- | |
-static inline int list_is_first(const struct list_head *list, | |
+static inline int nv_list_is_first(const struct list_head *list, | |
const struct list_head *head) | |
{ | |
return list->prev == head; | |
} | |
- | |
#endif // __NV_LIST_HELPERS_H__ | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/conftest.sh /usr/src/nvidia-legacy-390xx-390.116/conftest.sh | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/conftest.sh 2019-03-02 05:06:12.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/conftest.sh 2019-12-09 10:33:36.422944835 +0800 | |
@@ -107,6 +107,7 @@ | |
FILES="$FILES drm/drm_atomic_uapi.h" | |
FILES="$FILES drm/drm_drv.h" | |
FILES="$FILES drm/drm_framebuffer.h" | |
+ FILES="$FILES drm/drm_probe_helper.h" | |
FILES="$FILES generated/autoconf.h" | |
FILES="$FILES generated/compile.h" | |
FILES="$FILES generated/utsrelease.h" | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-connector.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-connector.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-connector.c 2019-01-28 00:12:27.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-connector.c 2019-12-09 10:39:02.709535602 +0800 | |
@@ -29,6 +29,7 @@ | |
#include "nvidia-drm-connector.h" | |
#include "nvidia-drm-utils.h" | |
#include "nvidia-drm-encoder.h" | |
+#include <drm/drm_probe_helper.h> | |
#include <drm/drm_crtc_helper.h> | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-drv.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-drv.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-drv.c 2019-01-28 00:12:27.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-drv.c 2019-12-09 10:38:38.201040458 +0800 | |
@@ -34,6 +34,7 @@ | |
#include "nvidia-drm-helper.h" | |
#include "nvidia-drm-gem-nvkms-memory.h" | |
#include "nvidia-drm-gem-user-memory.h" | |
+#include <drm/drm_probe_helper.h> | |
#if defined(NV_DRM_AVAILABLE) | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-encoder.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-encoder.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-encoder.c 2019-01-28 00:12:27.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-encoder.c 2019-12-09 10:38:50.753294049 +0800 | |
@@ -30,6 +30,7 @@ | |
#include "nvidia-drm-connector.h" | |
#include "nvidia-drm-crtc.h" | |
#include "nvidia-drm-helper.h" | |
+#include <drm/drm_probe_helper.h> | |
#include <drm/drm_crtc_helper.h> | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-gem-nvkms-memory.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-gem-nvkms-memory.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-gem-nvkms-memory.c 2019-01-28 00:12:27.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-drm/nvidia-drm-gem-nvkms-memory.c 2019-12-09 10:21:30.000291218 +0800 | |
@@ -222,7 +222,7 @@ | |
/* XXX Move these vma operations to os layer */ | |
-static int __nv_drm_vma_fault(struct vm_area_struct *vma, | |
+static vm_fault_t __nv_drm_vma_fault(struct vm_area_struct *vma, | |
struct vm_fault *vmf) | |
{ | |
unsigned long address = nv_page_fault_va(vmf); | |
@@ -230,7 +230,9 @@ | |
struct nv_drm_gem_nvkms_memory *nv_nvkms_memory = to_nv_nvkms_memory( | |
to_nv_gem_object(gem)); | |
unsigned long page_offset, pfn; | |
- int ret = -EINVAL; | |
+ //int ret = -EINVAL; | |
+ | |
+ vm_fault_t ret = VM_FAULT_SIGBUS; | |
pfn = (unsigned long)(uintptr_t)nv_nvkms_memory->pPhysicalAddress; | |
pfn >>= PAGE_SHIFT; | |
@@ -268,7 +270,7 @@ | |
*/ | |
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG) | |
-static int nv_drm_vma_fault(struct vm_fault *vmf) | |
+static vm_fault_t nv_drm_vma_fault(struct vm_fault *vmf) | |
{ | |
return __nv_drm_vma_fault(vmf->vma, vmf); | |
} | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8.c 2019-01-28 00:12:22.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8.c 2019-12-09 10:23:17.026447179 +0800 | |
@@ -166,13 +166,13 @@ | |
// If a fault handler is not set, paths like handle_pte_fault in older kernels | |
// assume the memory is anonymous. That would make debugging this failure harder | |
// so we force it to fail instead. | |
-static int uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *vmf) | |
+static vm_fault_t uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *vmf) | |
{ | |
UVM_DBG_PRINT_RL("Fault to address 0x%lx in disabled vma\n", nv_page_fault_va(vmf)); | |
return VM_FAULT_SIGBUS; | |
} | |
-static int uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf) | |
+static vm_fault_t uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf) | |
{ | |
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG) | |
return uvm_vm_fault_sigbus(vmf->vma, vmf); | |
@@ -390,7 +390,7 @@ | |
uvm_record_unlock_mmap_sem_write(¤t->mm->mmap_sem); | |
} | |
-static int uvm_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |
+static vm_fault_t uvm_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |
{ | |
uvm_va_space_t *va_space = uvm_va_space_get(vma->vm_file); | |
uvm_va_block_t *va_block; | |
@@ -507,7 +507,7 @@ | |
} | |
} | |
-static int uvm_vm_fault_wrapper(struct vm_fault *vmf) | |
+static vm_fault_t uvm_vm_fault_wrapper(struct vm_fault *vmf) | |
{ | |
#if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG) | |
return uvm_vm_fault(vmf->vma, vmf); | |
diff -Naur /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8_tools.c /usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8_tools.c | |
--- /tmp/nv/usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8_tools.c 2019-01-28 00:12:22.000000000 +0800 | |
+++ /usr/src/nvidia-legacy-390xx-390.116/nvidia-uvm/uvm8_tools.c 2019-12-09 10:14:46.872189417 +0800 | |
@@ -204,18 +204,20 @@ | |
return event_tracker != NULL && !event_tracker->is_queue; | |
} | |
-static void put_user_pages(struct page **pages, NvU64 page_count) | |
+static void uvm_put_user_pages(struct page **pages, NvU64 page_count) | |
{ | |
NvU64 i; | |
- for (i = 0; i < page_count; i++) | |
+ for (i = 0; i < page_count; i++) { | |
+ set_page_dirty(pages[i]); | |
put_page(pages[i]); | |
+ } | |
} | |
static void unmap_user_pages(struct page **pages, void *addr, NvU64 size) | |
{ | |
size = DIV_ROUND_UP(size, PAGE_SIZE); | |
vunmap((NvU8 *)addr); | |
- put_user_pages(pages, size); | |
+ uvm_put_user_pages(pages, size); | |
uvm_kvfree(pages); | |
} | |
@@ -279,7 +281,7 @@ | |
uvm_kvfree(vmas); | |
if (ret > 0) | |
- put_user_pages(*pages, ret); | |
+ uvm_put_user_pages(*pages, ret); | |
else if (ret < 0) | |
status = errno_to_nv_status(ret); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Credits by