Skip to content

Instantly share code, notes, and snippets.

@Miouyouyou
Created September 28, 2020 00:03
Show Gist options
  • Select an option

  • Save Miouyouyou/45652e26a160cbde6847e5600d54fb3a to your computer and use it in GitHub Desktop.

Select an option

Save Miouyouyou/45652e26a160cbde6847e5600d54fb3a to your computer and use it in GitHub Desktop.
Patch for NVIDIA GRID K2 drivers on Linux CentOS 8
From 4e935ec45deae81cdf800faba14c768d0dff3499 Mon Sep 17 00:00:00 2001
From: Miouyouyou <myy@miouyouyou.fr>
Date: Sun, 27 Sep 2020 19:41:12 +0200
Subject: [PATCH] Make the drivers compile with 4.18 kernels on Cent OS 8
What a mess. There's basically a ton of little
modifications here and there.
Since the patch was created at 1 AM, I'll just put
this link as a reference. Just use Google Translate, or
something similar :
https://myn.meganecco.org/1551964560.html
Submitted-by: Miouyouyou <myy@miouyouyou.fr>
---
common/inc/nv-list-helpers.h | 2 +-
nvidia-drm/nvidia-drm-drv.c | 10 +++++-----
nvidia-drm/nvidia-drm-gem.c | 4 ++--
nvidia-drm/nvidia-drm-priv.h | 2 +-
nvidia-uvm/uvm8.c | 4 ++--
nvidia-uvm/uvm8_range_tree.c | 2 +-
nvidia-uvm/uvm8_tools.c | 6 +++---
7 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/common/inc/nv-list-helpers.h b/common/inc/nv-list-helpers.h
index 0aed851..e6bb240 100644
--- a/common/inc/nv-list-helpers.h
+++ b/common/inc/nv-list-helpers.h
@@ -91,7 +91,7 @@
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;
diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c
index 400249d..381df22 100644
--- a/nvidia-drm/nvidia-drm-drv.c
+++ b/nvidia-drm/nvidia-drm-drv.c
@@ -592,20 +592,20 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = {
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_NVKMS_MEMORY,
nvidia_drm_gem_import_nvkms_memory,
- DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+ DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_ADD_NVKMS_FB,
nvidia_drm_add_nvkms_fb,
- DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+ DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_MIGRATE_MODESET_OWNERSHIP,
nvidia_drm_migrate_modeset_ownership,
- DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+ DRM_MASTER|DRM_UNLOCKED),
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_USERSPACE_MEMORY,
nvidia_drm_gem_import_userspace_memory,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_GET_DEV_INFO,
nvidia_drm_get_dev_info,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
};
static struct drm_driver nv_drm_driver = {
diff --git a/nvidia-drm/nvidia-drm-gem.c b/nvidia-drm/nvidia-drm-gem.c
index 9de023d..f07f48c 100644
--- a/nvidia-drm/nvidia-drm-gem.c
+++ b/nvidia-drm/nvidia-drm-gem.c
@@ -74,7 +74,7 @@ static struct nvidia_drm_gem_object *nvidia_drm_gem_new
return ERR_PTR(ret);
}
- drm_gem_object_unreference_unlocked(&nv_gem->base);
+ drm_gem_object_put_unlocked(&nv_gem->base);
nv_gem->handle = *handle;
@@ -445,7 +445,7 @@ int nvidia_drm_dumb_map_offset(struct drm_file *file,
done:
if (gem != NULL) {
- drm_gem_object_unreference_unlocked(gem);
+ drm_gem_object_put_unlocked(gem);
}
return ret;
diff --git a/nvidia-drm/nvidia-drm-priv.h b/nvidia-drm/nvidia-drm-priv.h
index 9844e10..caf24e2 100644
--- a/nvidia-drm/nvidia-drm-priv.h
+++ b/nvidia-drm/nvidia-drm-priv.h
@@ -62,7 +62,7 @@
#if defined(NV_DRM_DEV_UNREF_PRESENT)
#define NV_DRM_DEV_FREE(__dev) drm_dev_unref(__dev)
#else
- #define NV_DRM_DEV_FREE(__dev) drm_dev_free(__dev)
+ #define NV_DRM_DEV_FREE(__dev) drm_dev_put(__dev)
#endif
#if defined(NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG)
diff --git a/nvidia-uvm/uvm8.c b/nvidia-uvm/uvm8.c
index 9a16ef8..88da25d 100644
--- a/nvidia-uvm/uvm8.c
+++ b/nvidia-uvm/uvm8.c
@@ -106,7 +106,7 @@ static int uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *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);
@@ -423,7 +423,7 @@ convert_error:
}
}
-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 --git a/nvidia-uvm/uvm8_range_tree.c b/nvidia-uvm/uvm8_range_tree.c
index b7170d0..ba15777 100644
--- a/nvidia-uvm/uvm8_range_tree.c
+++ b/nvidia-uvm/uvm8_range_tree.c
@@ -31,7 +31,7 @@ static uvm_range_tree_node_t *get_range_node(struct rb_node *rb_node)
uvm_range_tree_node_t *uvm_range_tree_prev(uvm_range_tree_t *tree, uvm_range_tree_node_t *node)
{
- if (list_is_first(&node->list, &tree->head))
+ if (nv_list_is_first(&node->list, &tree->head))
return NULL;
return list_prev_entry(node, list);
}
diff --git a/nvidia-uvm/uvm8_tools.c b/nvidia-uvm/uvm8_tools.c
index 824af70..0ea1419 100644
--- a/nvidia-uvm/uvm8_tools.c
+++ b/nvidia-uvm/uvm8_tools.c
@@ -176,7 +176,7 @@ static bool file_is_nvidia_uvm(struct file *filp)
return (filp != NULL) && (filp->f_op == &uvm_fops);
}
-static void put_user_pages(struct page **pages, NvU64 page_count)
+static void nv_put_user_pages(struct page **pages, NvU64 page_count)
{
NvU64 i;
for (i = 0; i < page_count; i++)
@@ -187,7 +187,7 @@ 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);
+ nv_put_user_pages(pages, size);
uvm_kvfree(pages);
}
@@ -251,7 +251,7 @@ fail:
uvm_kvfree(vmas);
if (ret > 0)
- put_user_pages(*pages, ret);
+ nv_put_user_pages(*pages, ret);
else if (ret < 0)
status = errno_to_nv_status(ret);
--
2.18.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment