diff --git a/srcpkgs/nvidia340/files/linux-4.6.patch b/srcpkgs/nvidia340/files/linux-4.6.patch deleted file mode 100644 index 74d09ab1cd5..00000000000 --- a/srcpkgs/nvidia340/files/linux-4.6.patch +++ /dev/null @@ -1,150 +0,0 @@ ---- /dev/null -+++ kernel/nv-mm.h -@@ -0,0 +1,55 @@ -+/******************************************************************************* -+ Copyright (c) 2016 NVIDIA Corporation -+ -+ Permission is hereby granted, free of charge, to any person obtaining a copy -+ of this software and associated documentation files (the "Software"), to -+ deal in the Software without restriction, including without limitation the -+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+ sell copies of the Software, and to permit persons to whom the Software is -+ furnished to do so, subject to the following conditions: -+ -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ -+*******************************************************************************/ -+#ifndef __NV_MM_H__ -+#define __NV_MM_H__ -+ -+/* get_user_pages_remote() was added by: -+ * 2016 Feb 12: 1e9877902dc7e11d2be038371c6fbf2dfcd469d7 -+ * -+ * The very next commit (cde70140fed8429acf7a14e2e2cbd3e329036653) -+ * deprecated the 8-argument version of get_user_pages for the -+ * non-remote case (calling get_user_pages with current and current->mm). -+ * -+ * The guidelines are: call NV_GET_USER_PAGES_REMOTE if you need the 8-argument -+ * version that uses something other than current and current->mm. Use -+ * NV_GET_USER_PAGES if you are refering to current and current->mm. -+ * -+* Note that get_user_pages_remote() requires the caller to hold a reference on -+* the task_struct (if non-NULL) and the mm_struct. This will always be true -+* when using current and current->mm. If the kernel passes the driver a vma -+* via driver callback, the kernel holds a reference on vma->vm_mm over that -+* callback. -+ */ -+ -+#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT) -+ #define NV_GET_USER_PAGES get_user_pages -+ #define NV_GET_USER_PAGES_REMOTE get_user_pages_remote -+#else -+ #define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \ -+ get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas) -+ -+ #define NV_GET_USER_PAGES_REMOTE get_user_pages -+#endif -+ -+ -+#endif // __NV_MM_H__ ---- kernel/os-mlock.c -+++ kernel/os-mlock.c -@@ -13,6 +13,7 @@ - - #include "os-interface.h" - #include "nv-linux.h" -+#include "nv-mm.h" - - RM_STATUS NV_API_CALL os_lock_user_pages( - void *address, -@@ -45,7 +46,7 @@ RM_STATUS NV_API_CALL os_lock_user_pages( - } - - down_read(&mm->mmap_sem); -- ret = get_user_pages(current, mm, (unsigned long)address, -+ ret = NV_GET_USER_PAGES((unsigned long)address, - page_count, write, force, user_pages, NULL); - up_read(&mm->mmap_sem); - pinned = ret; -@@ -59,7 +59,7 @@ RM_STATUS NV_API_CALL os_lock_user_pages( - else if (pinned < page_count) - { - for (i = 0; i < pinned; i++) -- page_cache_release(user_pages[i]); -+ put_page(user_pages[i]); - os_free_mem(user_pages); - return RM_ERR_INVALID_ADDRESS; - } -@@ -86,7 +86,7 @@ RM_STATUS NV_API_CALL os_unlock_user_pages( - { - if (write) - set_page_dirty_lock(user_pages[i]); -- page_cache_release(user_pages[i]); -+ put_page(user_pages[i]); - } - - os_free_mem(user_pages); -diff --git kernel/conftest.sh.orig kernel/conftest.sh -index d01488b..308ea8a 100755 ---- kernel/conftest.sh -+++ kernel/conftest.sh -@@ -1669,6 +1669,23 @@ compile_test() { - - compile_check_conftest "$CODE" "NV_NODE_END_PFN_PRESENT" "" "functions" - ;; -+ -+ get_user_pages_remote) -+ # -+ # Determine if the function get_user_pages_remote() is -+ # present. -+ # -+ # get_user_pages_remote() was added by: -+ # 2016 Feb 12: 1e9877902dc7e11d2be038371c6fbf2dfcd469d7 -+ # -+ CODE=" -+ #include -+ int conftest_get_user_pages_remote(void) { -+ get_user_pages_remote(); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_GET_USER_PAGES_REMOTE_PRESENT" "" "functions" -+ ;; - esac - } - -diff --git kernel/Makefile.orig kernel/Makefile -index 438d487..c52a36c 100644 ---- kernel/Makefile -+++ kernel/Makefile -@@ -139,7 +139,8 @@ COMPILE_TESTS = \ - drm_pci_set_busid \ - write_cr4 \ - for_each_online_node \ -- node_end_pfn -+ node_end_pfn \ -+ get_user_pages_remote - - # - # CFLAGS dependent on the type of builds (e.g. single/muliple module, debug) -diff --git kernel/uvm/nvidia_uvm_lite.c.orig kernel/uvm/nvidia_uvm_lite.c -index 442a0a8..695f092 100644 ---- kernel/uvm/nvidia_uvm_lite.c -+++ kernel/uvm/nvidia_uvm_lite.c -@@ -785,7 +785,7 @@ int _fault_common(struct vm_area_struct *vma, unsigned long vaddr, - // a reference so that the fault handling logic is correct: - // - get_page(pTracking->uvmPage); -- retValue = VM_FAULT_MINOR; -+ retValue = 0; - } - - pRecord->isMapped = NV_TRUE; diff --git a/srcpkgs/nvidia340/template b/srcpkgs/nvidia340/template index f0d01d49c19..18d05907359 100644 --- a/srcpkgs/nvidia340/template +++ b/srcpkgs/nvidia340/template @@ -3,8 +3,8 @@ _desc="NVIDIA drivers (GeForce 8, 9, 9M, 100, 100M, 200, 300 series)" pkgname=nvidia340 -version=340.96 -revision=4 +version=340.98 +revision=1 maintainer="Juan RP " license="Proprietary NVIDIA license" homepage="http://www.nvidia.com" @@ -24,11 +24,11 @@ subpackages="${pkgname}-dkms ${pkgname}-opencl ${pkgname}-libs" if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then _pkg="NVIDIA-Linux-x86-${version}" distfiles="http://us.download.nvidia.com/XFree86/Linux-x86/${version}/${_pkg}.run" - checksum=c40e2778cd1ab036a76e1896fe2f77c4aa7baa215dbbdb11a2f4c5f05e1a478e + checksum=7d18bac3f570d72e3aae9dd2b74f53f9aa7b07bd5b1c2d3d1a9ae2f8104752e0 else _pkg="NVIDIA-Linux-x86_64-${version}-no-compat32" distfiles="http://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/${_pkg}.run" - checksum=280f9db2aea52cab42e141f0393604c7a6d43e7f65d3e60c2319c2674ecc14c4 + checksum=10c1603b1efad194d3c443f493b1e4362701c795a78aa258503b2272841b36e1 fi do_extract() { @@ -39,7 +39,6 @@ do_extract() { } do_configure() { cd ${_pkg} - patch -sNp0 -i ${FILESDIR}/linux-4.6.patch } do_install() { cd ${_pkg}