Here is an additional patch with backports from 430.14 to build with
kernel 5.2.  Again tested by me on amd64 but not arm or i386.

Cheers,
Kevin
Author: Kevin Locke <ke...@kevinlocke.name>
Description: backport changes from 430.14 for kernel 5.2

Note: addition of set_page_dirty backported due to fc1d8e7cca2d

--- a/nvidia-uvm/uvm8_tools.c
+++ b/nvidia-uvm/uvm8_tools.c
@@ -204,18 +204,21 @@
     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_dirty(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_dirty(pages, size);
     uvm_kvfree(pages);
 }
 
@@ -279,7 +282,7 @@
     uvm_kvfree(vmas);
 
     if (ret > 0)
-        put_user_pages(*pages, ret);
+        uvm_put_user_pages_dirty(*pages, ret);
     else if (ret < 0)
         status = errno_to_nv_status(ret);
 

Reply via email to