diff --git a/.SRCINFO b/.SRCINFO index 858c917..242a5a5 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,23 +1,37 @@ pkgbase = nvidia-340xx-lts pkgdesc = NVIDIA drivers for linux-lts pkgver = 340.107 - pkgrel = 24 + pkgrel = 25 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 + makedepends = linux-lts>=4.19.79 + makedepends = linux-lts-headers>=4.19.79 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 + source = kernel-5.0.patch + source = kernel-5.1.patch + sha256sums = 6dc6f183c69c414670d8adef0286a2362eedd6e16ec6dfae811e48ea4a4505dc + sha256sums = 5ba7e6d5e502882c3534d1d8578f7fd29fdf3d2aeb49206efa7b3514a7e3e821 + sha256sums = 236a1d1dc9adc1cafec828f0650d5a15f1f6d0fa27905dab58ca072a46f159fa + sha256sums = 2b0e69814bfaee6b227bbf15d89d056ab27d84bd325248614e27cb5fa33a63a1 pkgname = nvidia-340xx-lts - depends = linux-lts>=4.19.46 + pkgdesc = NVIDIA drivers for linux-lts, 340xx legacy branch. + depends = linux-lts>=4.19.72 depends = nvidia-340xx-utils=340.107 depends = libgl +pkgname = nvidia-340xx-lts-dkms + pkgdesc = NVIDIA driver sources for linux-lts, 340xx legacy branch + depends = dkms + depends = nvidia-340xx-utils=340.107 + depends = libgl + optdepends = linux-lts-headers: Build the module for lts kernel + provides = nvidia-340xx=340.107 + conflicts = nvidia-lts + conflicts = nvidia-340xx + diff --git a/PKGBUILD b/PKGBUILD index c95bf4a..03f1e1d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,51 +1,81 @@ -# Maintainer: Giancarlo Razzolini +# Maintainer: Jerry Xiao +# Maintainer: graysky +# Contributor: Giancarlo Razzolini # Contributor: Eric BĂ©langer -pkgname=nvidia-340xx-lts +pkgbase=nvidia-340xx-lts +pkgname=(nvidia-340xx-lts nvidia-340xx-lts-dkms) pkgver=340.107 -_extramodules=extramodules-4.19-lts -pkgrel=24 +pkgrel=25 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') +makedepends=("nvidia-340xx-utils=${pkgver}" 'linux-lts>=4.19.79' 'linux-lts-headers>=4.19.79') 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') + 'kernel-4.11.patch' 'kernel-5.0.patch' 'kernel-5.1.patch' +) +sha256sums=('6dc6f183c69c414670d8adef0286a2362eedd6e16ec6dfae811e48ea4a4505dc' + '5ba7e6d5e502882c3534d1d8578f7fd29fdf3d2aeb49206efa7b3514a7e3e821' + '236a1d1dc9adc1cafec828f0650d5a15f1f6d0fa27905dab58ca072a46f159fa' + '2b0e69814bfaee6b227bbf15d89d056ab27d84bd325248614e27cb5fa33a63a1') +_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" -[[ "$CARCH" = "x86_64" ]] && _pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" +# default is 'linux' substitute custom name here +_kernelname=linux-lts +_kernver="$(=4.19.46' "nvidia-340xx-utils=$pkgver" 'libgl') +package_nvidia-340xx-lts() { + pkgdesc="NVIDIA drivers for linux-lts, 340xx legacy branch." + depends=('linux-lts>=4.19.72' "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" + install -Dt "${pkgdir}${_extradir}" -m644 \ + "${srcdir}/${_pkg}/kernel"/{nvidia,uvm/nvidia-uvm}.ko + + find "${pkgdir}" -name '*.ko' -exec gzip -n {} + + + echo "blacklist nouveau" | + install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/nvidia-340xx-ck.conf" } + +package_nvidia-340xx-lts-dkms() { + pkgdesc="NVIDIA driver sources for linux-lts, 340xx legacy branch" + depends=('dkms' "nvidia-340xx-utils=$pkgver" 'libgl') + optdepends=('linux-lts-headers: Build the module for lts kernel') + provides=("nvidia-340xx=$pkgver") + conflicts+=('nvidia-340xx') + + cd "${_pkg}" + + install -dm 755 "${pkgdir}"/usr/src + cp -dr --no-preserve='ownership' kernel-dkms "${pkgdir}/usr/src/nvidia-${pkgver}" + cat "${pkgdir}"/usr/src/nvidia-${pkgver}/uvm/dkms.conf.fragment >> "${pkgdir}"/usr/src/nvidia-${pkgver}/dkms.conf + + echo "blacklist nouveau" | + install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf" +} + +# vim:set ts=2 sw=2 et: diff --git a/kernel-5.0.patch b/kernel-5.0.patch new file mode 100644 index 0000000..4786b69 --- /dev/null +++ b/kernel-5.0.patch @@ -0,0 +1,52 @@ +--- kernel/nv-drm.c 2018-05-25 04:16:20.000000000 +0000 ++++ kernel/nv-drm.c 2019-03-04 20:57:40.065280734 +0000 +@@ -252,7 +252,11 @@ + goto done; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) + drm_gem_object_unreference_unlocked(&nv_obj->base); ++#else ++ drm_gem_object_put_unlocked(&nv_obj->base); ++#endif + + status = RM_OK; + +--- kernel/os-interface.c 2018-05-25 04:16:20.000000000 +0000 ++++ kernel/os-interface.c 2019-03-04 21:03:03.815854982 +0000 +@@ -14,6 +14,16 @@ + #include "os-interface.h" + #include "nv-linux.h" + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) ++static inline void do_gettimeofday(struct timeval *tv) ++{ ++ struct timespec64 now; ++ ktime_get_real_ts64(&now); ++ tv->tv_sec = now.tv_sec; ++ tv->tv_usec = now.tv_nsec/1000; ++} ++#endif ++ + RM_STATUS NV_API_CALL os_disable_console_access(void) + { + NV_ACQUIRE_CONSOLE_SEM(); +--- kernel/uvm/nvidia_uvm_lite.c 2019-03-04 20:57:25.815255511 +0000 ++++ kernel/uvm/nvidia_uvm_lite.c 2019-03-04 21:04:25.239333050 +0000 +@@ -30,6 +30,16 @@ + #include "nvidia_uvm_lite_counters.h" + #include "ctrl2080mc.h" + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) ++static inline void do_gettimeofday(struct timeval *tv) ++{ ++ struct timespec64 now; ++ ktime_get_real_ts64(&now); ++ tv->tv_sec = now.tv_sec; ++ tv->tv_usec = now.tv_nsec/1000; ++} ++#endif ++ + // + // nvidia_uvm_lite.c + // This file contains code that is specific to the UVM-Lite mode of operation. diff --git a/kernel-5.1.patch b/kernel-5.1.patch new file mode 100644 index 0000000..19e27a8 --- /dev/null +++ b/kernel-5.1.patch @@ -0,0 +1,43 @@ +diff --git kernel/uvm/nvidia_uvm_lite.c kernel/uvm/nvidia_uvm_lite.c +index 65b9a4d..f5ea5d7 100644 +--- kernel/uvm/nvidia_uvm_lite.c ++++ kernel/uvm/nvidia_uvm_lite.c +@@ -830,8 +830,10 @@ done: + #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) ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) ++int _fault(struct vm_fault *vmf) ++#else ++vm_fault_t _fault(struct vm_fault *vmf) + #endif + { + #if defined(NV_VM_FAULT_HAS_ADDRESS) +@@ -886,8 +888,10 @@ static struct vm_operations_struct uvmlite_vma_ops = + #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 ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) + int _sigbus_fault(struct vm_fault *vmf) ++#else ++vm_fault_t _sigbus_fault(struct vm_fault *vmf) + #endif + { + vmf->page = NULL; +diff --git kernel/nv-drm.c kernel/nv-drm.c +index 122ba7d..1be5733 100644 +--- kernel/nv-drm.c ++++ kernel/nv-drm.c +@@ -146,7 +146,7 @@ static const struct file_operations nv_drm_fops = { + }; + + static struct drm_driver nv_drm_driver = { +-#if defined(DRIVER_LEGACY) ++#if defined(DRIVER_LEGACY) || LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) + .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_LEGACY, + #else + .driver_features = DRIVER_GEM | DRIVER_PRIME, +