summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD6
-rw-r--r--linux-4.7.patch12
-rw-r--r--linux-4.8.patch137
4 files changed, 82 insertions, 77 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ef8e845c6ae2..0bb3d49ef82f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -10,9 +10,11 @@ pkgbase = nvidia-full-beta
makedepends = linux-headers
options = !strip
source = 20-nvidia.conf
+ source = linux-4.7.patch
source = linux-4.8.patch
md5sums = 2640eac092c220073f0668a7aaff61f7
- md5sums = 575708b8db401ff82ee4a26e491cc0da
+ md5sums = 4ce4db437695790a73f132651a601889
+ md5sums = 5a08e2109ebe7e597348796743337c01
source_i686 = http://us.download.nvidia.com/XFree86/Linux-x86/370.23/NVIDIA-Linux-x86-370.23.run
md5sums_i686 = 7b7466e23ae6ffa97106c9749aee2628
source_x86_64 = http://us.download.nvidia.com/XFree86/Linux-x86_64/370.23/NVIDIA-Linux-x86_64-370.23-no-compat32.run
diff --git a/PKGBUILD b/PKGBUILD
index b7294c940d01..87bb10c2481f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -27,11 +27,13 @@ fi
# Source
source=('20-nvidia.conf'
+ 'linux-4.7.patch'
'linux-4.8.patch')
source_i686=("http://us.download.nvidia.com/XFree86/Linux-x86/$pkgver/NVIDIA-Linux-x86-$pkgver.run")
source_x86_64=("http://us.download.nvidia.com/XFree86/Linux-x86_64/$pkgver/$_pkg.run")
md5sums=('2640eac092c220073f0668a7aaff61f7'
- '575708b8db401ff82ee4a26e491cc0da')
+ '4ce4db437695790a73f132651a601889'
+ '5a08e2109ebe7e597348796743337c01')
md5sums_i686=('7b7466e23ae6ffa97106c9749aee2628')
md5sums_x86_64=('cbe2cee787e07f8775a3fd994c9263a9')
[[ $_pkg = NVIDIA-Linux-x86_64-$pkgver ]] && md5sums_x86_64=('65b99201ca894ea9a878593fbb19f0a3')
@@ -79,7 +81,7 @@ prepare() {
# Check version
if (( $(vercmp $_kernel $_major_patch) >= 0 )); then
msg2 "Applying $_patch..."
- patch -p1 -i "$_patch"
+ patch -p0 -i "$_patch"
fi
done
}
diff --git a/linux-4.7.patch b/linux-4.7.patch
new file mode 100644
index 000000000000..5a3f8dfc43c1
--- /dev/null
+++ b/linux-4.7.patch
@@ -0,0 +1,12 @@
+diff -u -r kernel/nvidia-drm/nvidia-drm-fence.c kernel-patched/nvidia-drm/nvidia-drm-fence.c
+--- kernel/nvidia-drm/nvidia-drm-fence.c 2016-08-09 01:43:19.000000000 +0200
++++ kernel-patched/nvidia-drm/nvidia-drm-fence.c 2016-08-25 14:31:34.419655564 +0200
+@@ -325,7 +325,7 @@
+ struct nvidia_drm_gem_object *nv_gem;
+ };
+
+-static void nvidia_drm_gem_prime_soft_fence_event
++static void NVKMS_KAPI_CALL nvidia_drm_gem_prime_soft_fence_event
+ (
+ void *dataPtr,
+ NvU32 dataU32
diff --git a/linux-4.8.patch b/linux-4.8.patch
index f8302d13ef6f..f8f03af6b685 100644
--- a/linux-4.8.patch
+++ b/linux-4.8.patch
@@ -1,74 +1,63 @@
-diff -u --recursive NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-drv.c patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-drv.c
---- NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-25 13:23:10.000000000 +0200
-+++ patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-drv.c 2016-08-02 17:09:53.500398878 +0200
-@@ -36,6 +36,7 @@
- #include "nvidia-drm-ioctl.h"
-
- #include <drm/drmP.h>
-+#include <drm/drm_auth.h>
-
- #include <drm/drm_crtc_helper.h>
-
-@@ -419,7 +420,7 @@
-
- static
- void nvidia_drm_master_drop(struct drm_device *dev,
-- struct drm_file *file_priv, bool from_release)
-+ struct drm_file *file_priv)
- {
- struct nvidia_drm_device *nv_dev = dev->dev_private;
- int ret;
-@@ -452,7 +453,7 @@
- mutex_lock(&dev->master_mutex);
-
- if (!file_priv->is_master ||
-- !file_priv->minor->master)
-+ !file_priv->master)
- {
- goto done;
- }
-@@ -473,7 +474,7 @@
- * NVKMS modeset ownership, because nvidia_drm_master_set()'s call to
- * grabOwnership() will fail.
- */
-- drm_master_put(&file_priv->minor->master);
-+ drm_master_put(&file_priv->master);
- file_priv->is_master = 0;
-
- ret = 0;
-diff -u --recursive NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-fb.c patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-fb.c
---- NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-25 13:23:10.000000000 +0200
-+++ patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-fb.c 2016-07-31 05:37:57.013950532 +0200
-@@ -114,7 +114,7 @@
- * We don't support any planar format, pick up first buffer only.
- */
-
-- gem = drm_gem_object_lookup(dev, file, cmd->handles[0]);
-+ gem = drm_gem_object_lookup(file, cmd->handles[0]);
-
- if (gem == NULL)
- {
-diff -u --recursive NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-gem.c patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-gem.c
---- NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-25 13:23:10.000000000 +0200
-+++ patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-gem.c 2016-07-31 05:37:57.013950532 +0200
-@@ -408,7 +408,7 @@
-
- mutex_lock(&dev->struct_mutex);
-
-- gem = drm_gem_object_lookup(dev, file, handle);
-+ gem = drm_gem_object_lookup(file, handle);
-
- if (gem == NULL)
- {
-diff -u --recursive NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-modeset.c patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-modeset.c
---- NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-07-25 13:23:10.000000000 +0200
-+++ patched_NVIDIA-Linux-x86_64-367.36.02/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-08-02 17:14:57.895422720 +0200
-@@ -675,7 +675,7 @@
- goto failed;
- }
-
-- drm_atomic_helper_swap_state(dev, state);
-+ drm_atomic_helper_swap_state(state, true);
-
- nvidia_drm_update_head_mode_config(state, requested_config);
- \ No newline at end of file
+diff -ur kernel/nvidia-drm/nvidia-drm-drv.c kernel-patched/nvidia-drm/nvidia-drm-drv.c
+--- kernel/nvidia-drm/nvidia-drm-drv.c 2016-08-09 02:43:19.000000000 +0300
++++ kernel-patched/nvidia-drm/nvidia-drm-drv.c 2016-08-26 20:14:29.109937200 +0300
+@@ -37,6 +37,7 @@
+ #include "nvidia-drm-ioctl.h"
+
+ #include <drm/drmP.h>
++#include <drm/drm_auth.h>
+
+ #include <drm/drm_crtc_helper.h>
+
+@@ -420,7 +421,7 @@
+
+ static
+ void nvidia_drm_master_drop(struct drm_device *dev,
+- struct drm_file *file_priv, bool from_release)
++ struct drm_file *file_priv)
+ {
+ struct nvidia_drm_device *nv_dev = dev->dev_private;
+ int ret;
+@@ -453,7 +454,7 @@
+ mutex_lock(&dev->master_mutex);
+
+ if (!file_priv->is_master ||
+- !file_priv->minor->master)
++ !file_priv->master)
+ {
+ goto done;
+ }
+@@ -474,7 +475,7 @@
+ * NVKMS modeset ownership, because nvidia_drm_master_set()'s call to
+ * grabOwnership() will fail.
+ */
+- drm_master_put(&file_priv->minor->master);
++ drm_master_put(&file_priv->master);
+ file_priv->is_master = 0;
+
+ ret = 0;
+Only in kernel-patched/nvidia-drm: nvidia-drm-drv.c.orig
+diff -ur kernel/nvidia-drm/nvidia-drm-fence.c kernel-patched/nvidia-drm/nvidia-drm-fence.c
+--- kernel/nvidia-drm/nvidia-drm-fence.c 2016-08-09 02:43:19.000000000 +0300
++++ kernel-patched/nvidia-drm/nvidia-drm-fence.c 2016-08-26 20:14:29.115451900 +0300
+@@ -325,7 +325,7 @@
+ struct nvidia_drm_gem_object *nv_gem;
+ };
+
+-static void nvidia_drm_gem_prime_soft_fence_event
++static void NVKMS_KAPI_CALL nvidia_drm_gem_prime_soft_fence_event
+ (
+ void *dataPtr,
+ NvU32 dataU32
+diff -ur kernel/nvidia-drm/nvidia-drm-modeset.c kernel-patched/nvidia-drm/nvidia-drm-modeset.c
+--- kernel/nvidia-drm/nvidia-drm-modeset.c 2016-08-09 02:43:19.000000000 +0300
++++ kernel-patched/nvidia-drm/nvidia-drm-modeset.c 2016-08-26 20:14:29.113947800 +0300
+@@ -675,7 +675,7 @@
+ goto failed;
+ }
+
+- drm_atomic_helper_swap_state(dev, state);
++ drm_atomic_helper_swap_state(state, true);
+
+ nvidia_drm_update_head_mode_config(state, requested_config);
+