diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 6 | ||||
-rw-r--r-- | linux-4.7.patch | 12 | ||||
-rw-r--r-- | linux-4.8.patch | 137 |
4 files changed, 82 insertions, 77 deletions
@@ -10,9 +10,11 @@ pkgbase = nvidia-full-beta-all 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 @@ -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') @@ -86,7 +88,7 @@ prepare() { # Check version if (( $(vercmp $_kernel $_major_patch) >= 0 )); then msg2 "Applying $_patch for $_kernel..." - patch -p2 -i "$_patch" + patch -p1 -i "$_patch" fi # Return 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); + |