diff --git a/.SRCINFO b/.SRCINFO index 37f659b..2106c5a 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = nvidia-340xx pkgdesc = NVIDIA drivers for linux, 340xx legacy branch pkgver = 340.108 - pkgrel = 8 + pkgrel = 9 url = https://www.nvidia.com/ arch = x86_64 license = custom @@ -12,8 +12,10 @@ pkgbase = nvidia-340xx options = !strip source = https://us.download.nvidia.com/XFree86/Linux-x86_64/340.108/NVIDIA-Linux-x86_64-340.108-no-compat32.run source = kernel-5.7.patch::https://gitlab.manjaro.org/packages/extra/linux57-extramodules/nvidia-340xx/-/raw/master/kernel-5.7.patch?inline=false - sha256sums = 995d44fef587ff5284497a47a95d71adbee0c13020d615e940ac928f180f5b77 - sha256sums = c5f4e2d8840bef97b077da2ed05340a047a8ec420feab6153f7a59e0c547f877 + source = buildfix_kernel_5.8.patch + b2sums = 6538bbec53b10f8d20977f9b462052625742e9709ef06e24cf2e55de5d0c55f1620a4bb21396cfd89ebc54c32f921ea17e3e47eaa95abcbc24ecbd144fb89028 + b2sums = e1e3d2dd5f4c79bb6c0235236ba5c092d3d2ff07175125947d01817f014652b5ebf93710270189cc06c03a96172627adeaf495607c360f2470f62bca2a6a55ba + b2sums = bd75129644bd11caed8d9d1e2d5bbbced59bcdcb7784c3defe9a48b4c4de09adde59626456b0bc8c789d2e1e4844c21a7f2e5795d9eefbb548914af1ca8a60ae pkgname = nvidia-340xx pkgdesc = NVIDIA drivers for linux, 340xx legacy branch diff --git a/PKGBUILD b/PKGBUILD index 4af47de..1a45b8d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -6,7 +6,7 @@ pkgbase=nvidia-340xx pkgname=(nvidia-340xx nvidia-340xx-dkms) pkgver=340.108 -pkgrel=8 +pkgrel=9 pkgdesc="NVIDIA drivers for linux, 340xx legacy branch" arch=('x86_64') url="https://www.nvidia.com/" @@ -16,9 +16,11 @@ license=('custom') options=(!strip) source=("https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run" kernel-5.7.patch::https://gitlab.manjaro.org/packages/extra/linux57-extramodules/nvidia-340xx/-/raw/master/kernel-5.7.patch?inline=false + buildfix_kernel_5.8.patch ) -sha256sums=('995d44fef587ff5284497a47a95d71adbee0c13020d615e940ac928f180f5b77' - 'c5f4e2d8840bef97b077da2ed05340a047a8ec420feab6153f7a59e0c547f877') +b2sums=('6538bbec53b10f8d20977f9b462052625742e9709ef06e24cf2e55de5d0c55f1620a4bb21396cfd89ebc54c32f921ea17e3e47eaa95abcbc24ecbd144fb89028' + 'e1e3d2dd5f4c79bb6c0235236ba5c092d3d2ff07175125947d01817f014652b5ebf93710270189cc06c03a96172627adeaf495607c360f2470f62bca2a6a55ba' + 'bd75129644bd11caed8d9d1e2d5bbbced59bcdcb7784c3defe9a48b4c4de09adde59626456b0bc8c789d2e1e4844c21a7f2e5795d9eefbb548914af1ca8a60ae') _pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" # default is 'linux' substitute custom name here @@ -34,6 +36,11 @@ prepare() { # https://gitlab.manjaro.org/packages?utf8=%E2%9C%93&filter=nvidia-340xx (patch -p1 --no-backup-if-mismatch -i "$srcdir"/kernel-5.7.patch) + # https://launchpad.net/~kelebek333/+archive/ubuntu/nvidia-legacy/+packages + # the following was extracted from + # https://launchpadlibrarian.net/492468557/nvidia-graphics-drivers-340_340.108-1lmtrfocal3_340.108-2lmtrfocal.diff.gz + (cd kernel && patch -p1 --no-backup-if-mismatch -i "$srcdir"/buildfix_kernel_5.8.patch) + cp -a kernel kernel-dkms } diff --git a/buildfix_kernel_5.8.patch b/buildfix_kernel_5.8.patch new file mode 100644 index 0000000..1b2f0f8 --- /dev/null +++ b/buildfix_kernel_5.8.patch @@ -0,0 +1,71 @@ +diff -Naur a/nvidia-modules-common.mk b/nvidia-modules-common.mk +--- a/nvidia-modules-common.mk ++++ b/nvidia-modules-common.mk +@@ -222,6 +222,7 @@ + define BUILD_MODULE_RULE + $(1): build-sanity-checks $(3) + @echo "NVIDIA: calling KBUILD..."; \ ++ touch .nv-kernel.o.cmd; \ + $$(MAKE) "CC=$$(CC)" NV_MODULE_SUFFIX=$$(strip $(2)) $$(KBUILD_PARAMS) modules; \ + echo "NVIDIA: left KBUILD."; \ + if ! [ -f $(1) ]; then \ +diff -Naru a/nv-linux.h b/nv-linux.h +--- a/nv-linux.h 2020-08-08 03:48:46.894783237 +0300 ++++ b/nv-linux.h 2020-08-08 15:43:05.252047541 +0300 +@@ -669,11 +669,19 @@ + # define KM_FREE_RECORD(a,b,c) + #endif + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) ++#define NV_VMALLOC(ptr, size) \ ++ { \ ++ (ptr) = __vmalloc(size, GFP_KERNEL); \ ++ VM_ALLOC_RECORD(ptr, size, "vm_vmalloc"); \ ++ } ++#else + #define NV_VMALLOC(ptr, size) \ + { \ + (ptr) = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); \ + VM_ALLOC_RECORD(ptr, size, "vm_vmalloc"); \ + } ++#endif + + #define NV_VFREE(ptr, size) \ + { \ +diff -Naru a/os-mlock.c b/os-mlock.c +--- a/os-mlock.c 2020-04-16 15:37:41.000000000 +0300 ++++ b/os-mlock.c 2020-08-08 15:47:44.793311179 +0300 +@@ -44,11 +44,19 @@ + 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 -Naru a/uvm/nvidia_uvm_lite_api.c b/uvm/nvidia_uvm_lite_api.c +--- a/uvm/nvidia_uvm_lite_api.c 2020-04-16 15:37:41.000000000 +0300 ++++ b/uvm/nvidia_uvm_lite_api.c 2020-08-08 15:28:40.110186418 +0300 +@@ -30,6 +30,10 @@ + #include "uvm_gpu_ops_tests.h" + #endif + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) ++#define mmap_sem mmap_lock ++#endif ++ + // + // nvidia_uvm_lite_api.c + //