File 0012-kernel5.8.patch of Package x11-video-nvidiaG02
diff -ruN NVIDIA-Linux-x86_64-304.137p1/kernel/Makefile.kbuild NVIDIA-Linux-x86_64-304.137p2/kernel/Makefile.kbuild
--- NVIDIA-Linux-x86_64-304.137p1/Makefile.kbuild 2022-01-10 19:57:07.375477089 -0300
+++ NVIDIA-Linux-x86_64-304.137p2/Makefile.kbuild 2022-01-10 20:03:04.463853427 -0300
@@ -261,6 +261,7 @@
module: build-sanity-checks
@echo "NVIDIA: calling KBUILD..."; \
+ touch .nv-kernel.o.cmd; \
$(MAKE) "CC=$(CC)" $(KBUILD_PARAMS) modules; \
echo "NVIDIA: left KBUILD."; \
if ! [ -f $(MODULE_OBJECT) ]; then \
diff -ruN NVIDIA-Linux-x86_64-304.137p1/kernel/nv-drm.c NVIDIA-Linux-x86_64-304.137p2/kernel/nv-drm.c
--- NVIDIA-Linux-x86_64-304.137p1/nv-drm.c 2022-01-10 19:57:07.375477089 -0300
+++ NVIDIA-Linux-x86_64-304.137p2/nv-drm.c 2022-01-10 20:00:59.509670334 -0300
@@ -26,7 +26,6 @@
#include <drm/drm_crtc.h>
#include <drm/drm_drv.h>
#include <drm/drm_prime.h>
-#include <drm/drm_pci.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_sysfs.h>
#include <drm/drm_vblank.h>
diff -ruN NVIDIA-Linux-x86_64-304.137p1/kernel/nv-mlock.c NVIDIA-Linux-x86_64-304.137p2/kernel/nv-mlock.c
--- NVIDIA-Linux-x86_64-304.137p1/nv-mlock.c 2017-09-14 17:51:09.000000000 -0300
+++ NVIDIA-Linux-x86_64-304.137p2/nv-mlock.c 2022-01-10 20:02:17.517551323 -0300
@@ -47,12 +47,19 @@
"NVRM: failed to allocate page table!\n");
return rmStatus;
}
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
+ down_read(&mm->mmap_lock);
+ ret = NV_GET_USER_PAGES((unsigned long)address,
+ page_count, write, force, user_pages, NULL);
+ up_read(&mm->mmap_lock);
+ pinned = ret;
+#else
down_read(&mm->mmap_sem);
ret = NV_GET_USER_PAGES((unsigned long)address,
page_count, write, force, user_pages, NULL);
up_read(&mm->mmap_sem);
pinned = ret;
+#endif
if (ret < 0)
{
diff -ruN NVIDIA-Linux-x86_64-304.137p1/kernel/nv-pat.c NVIDIA-Linux-x86_64-304.137p2/kernel/nv-pat.c
--- NVIDIA-Linux-x86_64-304.137p1/nv-pat.c 2017-09-14 17:51:09.000000000 -0300
+++ NVIDIA-Linux-x86_64-304.137p2/nv-pat.c 2022-01-10 20:04:03.850642030 -0300
@@ -38,14 +38,12 @@
wbinvd();
*cr4 = NV_READ_CR4();
if (*cr4 & 0x80) NV_WRITE_CR4(*cr4 & ~0x80);
- __flush_tlb();
}
static inline void nv_enable_caches(unsigned long cr4)
{
unsigned long cr0 = read_cr0();
wbinvd();
- __flush_tlb();
write_cr0((cr0 & 0x9fffffff));
if (cr4 & 0x80) NV_WRITE_CR4(cr4);
}