commit ca26bcfa5a0d8b91a797686bdf8702f3d195eadc Author: Jerry Date: Fri Jun 7 18:25:13 2019 +0800 340.107-24 diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..858c917 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,23 @@ +pkgbase = nvidia-340xx-lts + pkgdesc = NVIDIA drivers for linux-lts + pkgver = 340.107 + pkgrel = 24 + url = https://www.nvidia.com/ + arch = x86_64 + license = custom + makedepends = linux-lts>=4.19.46 + makedepends = linux-lts-headers>=4.19.46 + makedepends = nvidia-340xx-utils=340.107 + provides = nvidia-340xx + conflicts = nvidia-lts + options = !strip + source = https://us.download.nvidia.com/XFree86/Linux-x86_64/340.107/NVIDIA-Linux-x86_64-340.107-no-compat32.run + source = kernel-4.11.patch + sha512sums = 0de6f182d67bd322df7ae04e74c0cde6973c55bfea47a8f2503a29f8a899cd1b801ae4b52d066628df4a4f9c84e5e7547465bdc37d1b87df47af43fdab23466f + sha512sums = c25d90499e1deb26129a67dd7e953be8c1e31c5770e2b8b64d03af54cf1afec1a52636e74900f8ac468692207ab8a3765a12edd581142c4d2cfd2d6e66ac7ac2 + +pkgname = nvidia-340xx-lts + depends = linux-lts>=4.19.46 + depends = nvidia-340xx-utils=340.107 + depends = libgl + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..c95bf4a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,51 @@ +# Maintainer: Giancarlo Razzolini +# Contributor: Eric BĂ©langer + +pkgname=nvidia-340xx-lts +pkgver=340.107 +_extramodules=extramodules-4.19-lts +pkgrel=24 +pkgdesc="NVIDIA drivers for linux-lts" +arch=('x86_64') +url="https://www.nvidia.com/" +makedepends=('linux-lts>=4.19.46' 'linux-lts-headers>=4.19.46' "nvidia-340xx-utils=$pkgver") +provides=('nvidia-340xx') +conflicts=('nvidia-lts') +license=('custom') +options=(!strip) +source=("https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run" + 'kernel-4.11.patch') +sha512sums=('0de6f182d67bd322df7ae04e74c0cde6973c55bfea47a8f2503a29f8a899cd1b801ae4b52d066628df4a4f9c84e5e7547465bdc37d1b87df47af43fdab23466f' + 'c25d90499e1deb26129a67dd7e953be8c1e31c5770e2b8b64d03af54cf1afec1a52636e74900f8ac468692207ab8a3765a12edd581142c4d2cfd2d6e66ac7ac2') + +[[ "$CARCH" = "x86_64" ]] && _pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" + +prepare() { + sh ${_pkg}.run --extract-only + cd "${_pkg}" + # patches here + patch -Np0 < "${srcdir}/kernel-4.11.patch" +} + +build() { + _kernver="$(cat /usr/lib/modules/${_extramodules}/version)" + cd "${_pkg}/kernel" + make SYSSRC=/usr/lib/modules/${_kernver}/build module + + cd uvm + make SYSSRC=/usr/lib/modules/${_kernver}/build module +} + +package() { + depends=('linux-lts>=4.19.46' "nvidia-340xx-utils=$pkgver" 'libgl') + + install -D -m644 "${srcdir}/${_pkg}/kernel/nvidia.ko" \ + "${pkgdir}/usr/lib/modules/${_extramodules}/kernel/drivers/video/nvidia.ko" + install -D -m644 "${srcdir}/${_pkg}/kernel/uvm/nvidia-uvm.ko" \ + "${pkgdir}/usr/lib/modules/${_extramodules}/kernel/drivers/video/nvidia-uvm.ko" + gzip "${pkgdir}/usr/lib/modules/${_extramodules}/kernel/drivers/video/"*.ko + install -d -m755 "${pkgdir}/usr/lib/modprobe.d" + echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia-lts.conf" + echo "blacklist nvidiafb" >> "${pkgdir}/usr/lib/modprobe.d/nvidia-lts.conf" + install -D -m644 "${srcdir}/${_pkg}/LICENSE" "${pkgdir}/usr/share/licenses/nvidia-lts/LICENSE" +} diff --git a/kernel-4.11.patch b/kernel-4.11.patch new file mode 100644 index 0000000..b2b3a7a --- /dev/null +++ b/kernel-4.11.patch @@ -0,0 +1,38 @@ +--- kernel/uvm/nvidia_uvm_lite.c 2017-09-27 13:50:46.334075042 +0200 ++++ kernel/uvm/nvidia_uvm_lite.c 2017-09-27 13:56:06.358041280 +0200 +@@ -818,7 +818,11 @@ + } + + #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + int _fault(struct vm_area_struct *vma, struct vm_fault *vmf) ++#else ++int _fault(struct vm_fault *vmf) ++#endif + { + #if defined(NV_VM_FAULT_HAS_ADDRESS) + unsigned long vaddr = vmf->address; +@@ -828,7 +832,11 @@ + struct page *page = NULL; + int retval; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + retval = _fault_common(vma, vaddr, &page, vmf->flags); ++#else ++ retval = _fault_common(NULL, vaddr, &page, vmf->flags); ++#endif + + vmf->page = page; + +@@ -866,7 +874,11 @@ + // it's dealing with anonymous mapping (see handle_pte_fault). + // + #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf) ++#else ++int _sigbus_fault(struct vm_fault *vmf) ++#endif + { + vmf->page = NULL; + return VM_FAULT_SIGBUS;