From c4187e76d778a050f86f3d816e058494522e8431 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Mon, 22 Aug 2016 01:10:00 +0200 Subject: [PATCH] nvidia: patches for linux 4.7 Close #4651. --- .../nvidia/files/0001-linux-4.7-i686.patch | 44 +++++++++++++ .../nvidia/files/0001-linux-4.7-x86_64.patch | 61 +++++++++++++++++++ srcpkgs/nvidia/template | 10 ++- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/nvidia/files/0001-linux-4.7-i686.patch create mode 100644 srcpkgs/nvidia/files/0001-linux-4.7-x86_64.patch diff --git a/srcpkgs/nvidia/files/0001-linux-4.7-i686.patch b/srcpkgs/nvidia/files/0001-linux-4.7-i686.patch new file mode 100644 index 00000000000..23aa8899948 --- /dev/null +++ b/srcpkgs/nvidia/files/0001-linux-4.7-i686.patch @@ -0,0 +1,44 @@ +--- kernel/nvidia-drm/nvidia-drm-fb.c.orig ++++ kernel/nvidia-drm/nvidia-drm-fb.c +@@ -31,6 +31,7 @@ + #include "nvidia-drm-gem.h" + + #include ++#include + + static void nvidia_framebuffer_destroy(struct drm_framebuffer *fb) + { +@@ -114,7 +115,11 @@ + * We don't support any planar format, pick up first buffer only. + */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) ++ gem = drm_gem_object_lookup(file, cmd->handles[0]); ++#else + gem = drm_gem_object_lookup(dev, file, cmd->handles[0]); ++#endif + + if (gem == NULL) + { +--- kernel/nvidia-drm/nvidia-drm-gem.c.orig ++++ kernel/nvidia-drm/nvidia-drm-gem.c +@@ -27,6 +27,7 @@ + #include "nvidia-drm-priv.h" + #include "nvidia-drm-ioctl.h" + #include "nvidia-drm-gem.h" ++#include + + static struct nvidia_drm_gem_object *nvidia_drm_gem_new + ( +@@ -408,7 +409,11 @@ + + mutex_lock(&dev->struct_mutex); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) ++ gem = drm_gem_object_lookup(file, handle); ++#else + gem = drm_gem_object_lookup(dev, file, handle); ++#endif + + if (gem == NULL) + { diff --git a/srcpkgs/nvidia/files/0001-linux-4.7-x86_64.patch b/srcpkgs/nvidia/files/0001-linux-4.7-x86_64.patch new file mode 100644 index 00000000000..f1869f7f715 --- /dev/null +++ b/srcpkgs/nvidia/files/0001-linux-4.7-x86_64.patch @@ -0,0 +1,61 @@ +--- kernel/nvidia-drm/nvidia-drm-fb.c.orig ++++ kernel/nvidia-drm/nvidia-drm-fb.c +@@ -31,6 +31,7 @@ + #include "nvidia-drm-gem.h" + + #include ++#include + + static void nvidia_framebuffer_destroy(struct drm_framebuffer *fb) + { +@@ -114,7 +115,11 @@ + * We don't support any planar format, pick up first buffer only. + */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) ++ gem = drm_gem_object_lookup(file, cmd->handles[0]); ++#else + gem = drm_gem_object_lookup(dev, file, cmd->handles[0]); ++#endif + + if (gem == NULL) + { +--- kernel/nvidia-drm/nvidia-drm-gem.c.orig ++++ kernel/nvidia-drm/nvidia-drm-gem.c +@@ -27,6 +27,7 @@ + #include "nvidia-drm-priv.h" + #include "nvidia-drm-ioctl.h" + #include "nvidia-drm-gem.h" ++#include + + static struct nvidia_drm_gem_object *nvidia_drm_gem_new + ( +@@ -408,7 +409,11 @@ + + mutex_lock(&dev->struct_mutex); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) ++ gem = drm_gem_object_lookup(file, handle); ++#else + gem = drm_gem_object_lookup(dev, file, handle); ++#endif + + if (gem == NULL) + { +--- kernel/nvidia-uvm/uvm_linux.h.orig ++++ kernel/nvidia-uvm/uvm_linux.h +@@ -554,12 +554,13 @@ + INIT_RADIX_TREE(tree, GFP_NOWAIT); + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) + static bool radix_tree_empty(struct radix_tree_root *tree) + { + void *dummy; + return radix_tree_gang_lookup(tree, &dummy, 0, 1) == 0; + } +- ++#endif + + #if !defined(NV_USLEEP_RANGE_PRESENT) + static void __sched usleep_range(unsigned long min, unsigned long max) diff --git a/srcpkgs/nvidia/template b/srcpkgs/nvidia/template index c58a2d67a84..dbe55aa7eed 100644 --- a/srcpkgs/nvidia/template +++ b/srcpkgs/nvidia/template @@ -4,7 +4,7 @@ _desc="NVIDIA drivers for linux (long-lived series)" pkgname=nvidia version=367.35 -revision=1 +revision=2 maintainer="Juan RP " license="Proprietary NVIDIA license" homepage="http://www.nvidia.com" @@ -39,6 +39,14 @@ do_extract() { ./${_pkg}.run --extract-only rm -f ${_pkg}.run } +do_configure() { + cd ${_pkg} + # patches + case "$XBPS_TARGET_MACHINE" in + i686) patch -sNp0 -i ${FILESDIR}/0001-linux-4.7-i686.patch;; + x86_64) patch -sNp0 -i ${FILESDIR}/0001-linux-4.7-x86_64.patch;; + esac +} do_install() { cd ${_pkg}