diff options
-rw-r--r-- | .SRCINFO | 13 | ||||
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | linux-4.11.patch | 112 |
3 files changed, 126 insertions, 9 deletions
@@ -1,3 +1,5 @@ +# Generated by mksrcinfo v8 +# Mon May 1 07:27:54 UTC 2017 pkgbase = nvidia-full-beta-all pkgver = 381.09 pkgrel = 1 @@ -9,12 +11,14 @@ pkgbase = nvidia-full-beta-all options = !strip source = 10-nvidia-drm-outputclass.conf source = 20-nvidia.conf + source = linux-4.11.patch md5sums = 4f5562ee8f3171769e4638b35396c55d md5sums = 2640eac092c220073f0668a7aaff61f7 + md5sums = 897d9775dc484ab37934e7b102c5b325 source_i686 = http://us.download.nvidia.com/XFree86/Linux-x86/381.09/NVIDIA-Linux-x86-381.09.run md5sums_i686 = aa16257e2ab1c28724479165afc187cc - source_x86_64 = http://us.download.nvidia.com/XFree86/Linux-x86_64/381.09/NVIDIA-Linux-x86_64-381.09-no-compat32.run - md5sums_x86_64 = fe66660415e3919681e61bfc4e95cba4 + source_x86_64 = http://us.download.nvidia.com/XFree86/Linux-x86_64/381.09/NVIDIA-Linux-x86_64-381.09.run + md5sums_x86_64 = 0a306b62fbf080943fd0559e12a7ddeb pkgname = nvidia-full-beta-all pkgdesc = Full NVIDIA drivers' package for all kernels on the system (drivers and shared utilities and libraries) (beta version) @@ -76,6 +80,7 @@ pkgname = lib32-nvidia-utils-full-beta-all depends = lib32-zlib depends = lib32-gcc-libs depends = nvidia-utils-full-beta-all + depends = lib32-mesa>=17.0.2-1 optdepends = lib32-opencl-nvidia-full-beta-all: OpenCL support provides = lib32-nvidia-utils=381.09 provides = lib32-libglvnd @@ -85,8 +90,8 @@ pkgname = lib32-nvidia-utils-full-beta-all pkgname = lib32-nvidia-libgl-full-beta-all pkgdesc = NVIDIA driver library symlinks for 'lib32-nvidia-utils-full-beta-all' - depends = lib32-nvidia-utils-beta - depends = nvidia-libgl-beta + depends = lib32-nvidia-utils-full-beta-all + depends = nvidia-libgl-full-beta-all provides = lib32-nvidia-libgl=381.09 provides = lib32-libgl provides = lib32-libegl @@ -5,7 +5,7 @@ # Build the lib32 packages too? This only needs to be defined once and will # remain until the packages are removed. "1" to enable. -_lib32=0 +_lib32=1 pkgname=('nvidia-full-beta-all' 'nvidia-utils-full-beta-all' 'nvidia-egl-wayland-full-beta-all' 'nvidia-libgl-full-beta-all' 'opencl-nvidia-full-beta-all') pkgver=381.09 @@ -27,13 +27,13 @@ fi # Source source=('10-nvidia-drm-outputclass.conf' - '20-nvidia.conf') -# 'linux-4.10.patch') + '20-nvidia.conf' + 'linux-4.11.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=('4f5562ee8f3171769e4638b35396c55d' - '2640eac092c220073f0668a7aaff61f7') -# 'e81769b830b7a1e60c635e3bbe559f59') + '2640eac092c220073f0668a7aaff61f7' + '897d9775dc484ab37934e7b102c5b325') md5sums_i686=('aa16257e2ab1c28724479165afc187cc') md5sums_x86_64=('fe66660415e3919681e61bfc4e95cba4') [[ $_pkg = NVIDIA-Linux-x86_64-$pkgver ]] && md5sums_x86_64=('0a306b62fbf080943fd0559e12a7ddeb') diff --git a/linux-4.11.patch b/linux-4.11.patch new file mode 100644 index 000000000000..5951face36ed --- /dev/null +++ b/linux-4.11.patch @@ -0,0 +1,112 @@ +diff -ur NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-drv.c NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-drv.c +--- NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-drv.c 2017-03-31 03:42:21.000000000 +0200 ++++ NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-drv.c 2017-04-06 23:53:14.273356795 +0200 +@@ -48,6 +48,8 @@ + #include <drm/drm_auth.h> + #endif + ++#include <linux/version.h> ++ + static struct nvidia_drm_device *dev_list = NULL; + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) +@@ -398,7 +400,11 @@ + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + static int nvidia_drm_unload(struct drm_device *dev) ++#else ++static void nvidia_drm_unload(struct drm_device *dev) ++#endif + { + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + struct NvKmsKapiDevice *pDevice = NULL; +@@ -412,7 +418,11 @@ + + if (!nvidia_drm_modeset_enabled(dev)) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + return 0; ++#else ++ return; ++#endif + } + + mutex_lock(&nv_dev->lock); +@@ -445,7 +455,11 @@ + + #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + return 0; ++#else ++ return; ++#endif + } + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) +@@ -542,7 +556,6 @@ + void *data, + struct drm_file *file_priv) + { +- struct nvidia_drm_device *nv_dev = dev->dev_private; + struct drm_nvidia_get_client_capability_params *params = data; + + switch (params->capability) +diff -ur NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-gem.c NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-gem.c +--- NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-gem.c 2017-03-31 03:42:21.000000000 +0200 ++++ NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-gem.c 2017-04-06 23:54:19.624353181 +0200 +@@ -31,6 +31,8 @@ + + #include "nv-mm.h" + ++#include <linux/version.h> ++ + static struct nvidia_drm_gem_object *nvidia_drm_gem_new + ( + struct drm_file *file_priv, +@@ -511,11 +513,19 @@ + * Note that nvidia_drm_vma_fault() can be called for different or same + * ranges of the same drm_gem_object simultaneously. + */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + static int nvidia_drm_vma_fault(struct vm_area_struct *vma, + struct vm_fault *vmf) ++#else ++static int nvidia_drm_vma_fault(struct vm_fault *vmf) ++#endif + { + unsigned long address = nv_page_fault_va(vmf); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + struct drm_gem_object *gem = vma->vm_private_data; ++#else ++ struct drm_gem_object *gem = vmf->vma->vm_private_data; ++#endif + struct nvidia_drm_gem_object *nv_gem = + DRM_GEM_OBJECT_TO_NV_GEM_OBJECT(gem); + unsigned long page_offset, pfn; +@@ -526,7 +536,11 @@ + + page_offset = vmf->pgoff - drm_vma_node_start(&gem->vma_node); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) + ret = vm_insert_pfn(vma, address, pfn + page_offset); ++#else ++ ret = vm_insert_pfn(vmf->vma, address, pfn + page_offset); ++#endif + + switch (ret) { + case 0: +diff -ur NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-linux.c NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-linux.c +--- NVIDIA-Linux-x86_64-381.09/kernel/nvidia-drm/nvidia-drm-linux.c 2017-03-31 03:42:21.000000000 +0200 ++++ NVIDIA-Linux-x86_64-381.09.patched/kernel/nvidia-drm/nvidia-drm-linux.c 2017-04-06 23:53:14.273356795 +0200 +@@ -185,7 +185,7 @@ + module_exit(nv_linux_drm_exit); + + #if defined(MODULE_LICENSE) +- MODULE_LICENSE("MIT"); ++ MODULE_LICENSE("Dual MIT/GPL"); + #endif + #if defined(MODULE_INFO) + MODULE_INFO(supported, "external"); |