Created
July 17, 2023 10:41
-
-
Save Fjodor42/cfd29b3ffd1d1957894469f2def8f4f6 to your computer and use it in GitHub Desktop.
Tentative fix for NVIDIA 535.54.03 driver for Linux 6.5-rc1
This file contains 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 -Naurp nvidia-535.54.03.orig/common/inc/nv-mm.h nvidia-535.54.03/common/inc/nv-mm.h | |
--- nvidia-535.54.03.orig/common/inc/nv-mm.h 2023-06-07 01:06:49.000000000 +0200 | |
+++ nvidia-535.54.03/common/inc/nv-mm.h 2023-07-17 12:35:45.635270852 +0200 | |
@@ -23,6 +23,7 @@ | |
#ifndef __NV_MM_H__ | |
#define __NV_MM_H__ | |
+#include <linux/version.h> | |
#include "conftest.h" | |
#if !defined(NV_VM_FAULT_T_IS_PRESENT) | |
@@ -41,7 +42,16 @@ typedef int vm_fault_t; | |
#include <linux/mm.h> | |
#include <linux/sched.h> | |
#if defined(NV_PIN_USER_PAGES_PRESENT) | |
- #define NV_PIN_USER_PAGES pin_user_pages | |
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0) | |
+ static inline long NV_PIN_USER_PAGES(unsigned long start, unsigned long nr_pages, | |
+ unsigned int gup_flags, struct page **pages, | |
+ struct vm_area_struct **vmas) { | |
+ return pin_user_pages(start, nr_pages, gup_flags, pages); | |
+ } | |
+ #else | |
+ #define NV_PIN_USER_PAGES pin_user_pages | |
+ #endif | |
+ | |
#define NV_UNPIN_USER_PAGE unpin_user_page | |
#else | |
#define NV_PIN_USER_PAGES NV_GET_USER_PAGES | |
@@ -66,7 +76,25 @@ typedef int vm_fault_t; | |
* | |
*/ | |
-#if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS) | |
+// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages()" (Lorenzo Stoakes, 14 May 2023) | |
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0) | |
+static inline long NV_GET_USER_PAGES(unsigned long start, | |
+ unsigned long nr_pages, | |
+ int write, | |
+ int force, | |
+ struct page **pages, | |
+ struct vm_area_struct **vmas) | |
+{ | |
+ unsigned int flags = 0; | |
+ | |
+ if (write) | |
+ flags |= FOLL_WRITE; | |
+ if (force) | |
+ flags |= FOLL_FORCE; | |
+ | |
+ return get_user_pages(start, nr_pages, flags, pages); | |
+} | |
+#elif defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS) | |
#define NV_GET_USER_PAGES get_user_pages | |
#elif defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS) | |
#define NV_GET_USER_PAGES(start, nr_pages, flags, pages, vmas) \ | |
@@ -103,7 +131,14 @@ typedef int vm_fault_t; | |
*/ | |
#if defined(NV_PIN_USER_PAGES_REMOTE_PRESENT) | |
- #if defined (NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK) | |
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0) | |
+ static inline long NV_PIN_USER_PAGES_REMOTE(struct mm_struct *mm, | |
+ unsigned long start, unsigned long nr_pages, | |
+ unsigned int gup_flags, struct page **pages, | |
+ struct vm_area_struct **vmas, int *locked) { | |
+ return pin_user_pages_remote(mm, start, nr_pages, gup_flags, pages, locked); | |
+ } | |
+ #elif defined (NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK) | |
#define NV_PIN_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \ | |
pin_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas, locked) | |
#else | |
@@ -137,7 +172,20 @@ typedef int vm_fault_t; | |
* | |
*/ | |
-#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT) | |
+//#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT) | |
+// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages_remote()" (Lorenzo Stoakes, 14 May 2023) | |
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0) | |
+static inline long NV_GET_USER_PAGES_REMOTE( struct mm_struct *mm, | |
+ unsigned long start, | |
+ unsigned long nr_pages, | |
+ unsigned int gup_flags, | |
+ struct page **pages, | |
+ struct vm_area_struct **vmas, | |
+ int *locked) | |
+{ | |
+ return get_user_pages_remote(mm, start, nr_pages, gup_flags, pages, locked); | |
+} | |
+#elif defined(NV_GET_USER_PAGES_REMOTE_PRESENT) | |
#if defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED) | |
#define NV_GET_USER_PAGES_REMOTE get_user_pages_remote | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Based loosely on https://gist.github.com/joanbm/dfe8dc59af1c83e2530a1376b77be8ba by @joanbm