diff options
author | 2017-03-30 09:27:47 +0200 | |
---|---|---|
committer | 2017-03-30 09:27:47 +0200 | |
commit | 99ee8e677f6609be4ba52fc047336548106a03fd (patch) | |
tree | 378c1a845d4686d27ee6795f6f5d28acc5d46423 /x11-drivers/nvidia-drivers/files | |
parent | www-client/vivaldi: Old. (diff) | |
download | gentoo-99ee8e677f6609be4ba52fc047336548106a03fd.tar.gz gentoo-99ee8e677f6609be4ba52fc047336548106a03fd.tar.bz2 gentoo-99ee8e677f6609be4ba52fc047336548106a03fd.zip |
x11-drivers/nvidia-drivers: Drop obsolete branches (bug #611712).
Package-Manager: Portage-2.3.5, Repoman-2.3.2
Diffstat (limited to 'x11-drivers/nvidia-drivers/files')
10 files changed, 0 insertions, 1747 deletions
diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-constify.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-constify.patch deleted file mode 100644 index 9b9f53e45dcc..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-constify.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- a/kernel/uvm/uvm_common.c -+++ b/kernel/uvm/uvm_common.c -@@ -95,7 +95,6 @@ static RM_STATUS uvmnext_gpu_event_stop_ - #endif // NVIDIA_UVM_NEXT_ENABLED - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - // TODO: This would be easier if RM allowed for multiple registrations, since we - // could register UVM-Lite and UVM-Next separately (bug 1372835). -@@ -147,9 +146,11 @@ static RM_STATUS uvmSetupGpuProvider(voi - RM_STATUS status = RM_OK; - - #ifdef NVIDIA_UVM_RM_ENABLED -- g_exportedUvmOps.startDevice = uvm_gpu_event_start_device; -- g_exportedUvmOps.stopDevice = uvm_gpu_event_stop_device; -- g_exportedUvmOps.isrTopHalf = uvmnext_isr_top_half; -+ static struct UvmOpsUvmEvents g_exportedUvmOps = { -+ .startDevice = uvm_gpu_event_start_device, -+ .stopDevice = uvm_gpu_event_stop_device, -+ .isrTopHalf = uvmnext_isr_top_half, -+ }; - - // call RM to exchange the function pointers. - status = nvUvmInterfaceRegisterUvmCallbacks(&g_exportedUvmOps); diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-usercopy.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-usercopy.patch deleted file mode 100644 index d1a440c94aae..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-346.16-pax-usercopy.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/kernel/nv.c -+++ b/kernel/nv.c -@@ -705,7 +705,7 @@ int __init nvidia_init_module(void) - #endif - - nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -- nvidia_stack_t); -+ nvidia_stack_t, SLAB_USERCOPY); - if (nvidia_stack_t_cache == NULL) - { - nv_printf(NV_DBG_ERRORS, "NVRM: stack cache allocation failed!\n"); -@@ -846,7 +846,7 @@ int __init nvidia_init_module(void) - nv_lock_init_locks(nv); - - nvidia_pte_t_cache = NV_KMEM_CACHE_CREATE(nvidia_pte_cache_name, -- nvidia_pte_t); -+ nvidia_pte_t, 0); - if (nvidia_pte_t_cache == NULL) - { - rc = -ENOMEM; -@@ -857,7 +857,7 @@ int __init nvidia_init_module(void) - if (!nv_multiple_kernel_modules) - { - nvidia_p2p_page_t_cache = NV_KMEM_CACHE_CREATE(nvidia_p2p_page_cache_name, -- nvidia_p2p_page_t); -+ nvidia_p2p_page_t, 0); - if (nvidia_p2p_page_t_cache == NULL) - { - rc = -ENOMEM; ---- a/kernel/nv-linux.h -+++ b/kernel/nv-linux.h -@@ -1431,11 +1431,11 @@ extern void *nvidia_stack_t_cache; - - #if !defined(NV_VMWARE) - #if (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 5) --#define NV_KMEM_CACHE_CREATE(name, type) \ -- kmem_cache_create(name, sizeof(type), 0, 0, NULL) -+#define NV_KMEM_CACHE_CREATE(name, type, flags) \ -+ kmem_cache_create(name, sizeof(type), 0, flags, NULL) - #else --#define NV_KMEM_CACHE_CREATE(name, type) \ -- kmem_cache_create(name, sizeof(type), 0, 0, NULL, \ -+#define NV_KMEM_CACHE_CREATE(name, type, flags) \ -+ kmem_cache_create(name, sizeof(type), 0, flags, NULL, \ - NULL) - #endif - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-355.06-pax.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-355.06-pax.patch deleted file mode 100644 index cc5ebdf79574..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-355.06-pax.patch +++ /dev/null @@ -1,102 +0,0 @@ -diff -urp NVIDIA-Linux-x86_64-355.06.orig/kernel/common/inc/nv-linux.h NVIDIA-Linux-x86_64-355.06/kernel/common/inc/nv-linux.h ---- NVIDIA-Linux-x86_64-355.06.orig/kernel/common/inc/nv-linux.h 2015-07-29 05:13:57.000000000 +0200 -+++ NVIDIA-Linux-x86_64-355.06/kernel/common/inc/nv-linux.h 2015-08-21 16:45:55.624336728 +0200 -@@ -1408,11 +1408,11 @@ extern void *nvidia_stack_t_cache; - - #if !defined(NV_VMWARE) - #if (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 5) --#define NV_KMEM_CACHE_CREATE(name, type) \ -- kmem_cache_create(name, sizeof(type), 0, 0, NULL) -+#define NV_KMEM_CACHE_CREATE(name, type, flags) \ -+ kmem_cache_create(name, sizeof(type), 0, flags, NULL) - #else --#define NV_KMEM_CACHE_CREATE(name, type) \ -- kmem_cache_create(name, sizeof(type), 0, 0, NULL, \ -+#define NV_KMEM_CACHE_CREATE(name, type, flags) \ -+ kmem_cache_create(name, sizeof(type), 0, flags, NULL, \ - NULL) - #endif - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ -diff -urp NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia/nv.c NVIDIA-Linux-x86_64-355.06/kernel/nvidia/nv.c ---- NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia/nv.c 2015-07-29 05:13:57.000000000 +0200 -+++ NVIDIA-Linux-x86_64-355.06/kernel/nvidia/nv.c 2015-08-21 16:44:51.008340178 +0200 -@@ -719,7 +719,7 @@ int __init nvidia_init_module(void) - #endif - - nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -- nvidia_stack_t); -+ nvidia_stack_t, SLAB_USERCOPY); - if (nvidia_stack_t_cache == NULL) - { - nv_printf(NV_DBG_ERRORS, "NVRM: stack cache allocation failed!\n"); -@@ -861,7 +861,7 @@ int __init nvidia_init_module(void) - nv_state_init_gpu_uuid_cache(nv); - - nvidia_pte_t_cache = NV_KMEM_CACHE_CREATE(nvidia_pte_cache_name, -- nvidia_pte_t); -+ nvidia_pte_t, 0); - if (nvidia_pte_t_cache == NULL) - { - rc = -ENOMEM; -@@ -872,7 +872,7 @@ int __init nvidia_init_module(void) - if (!nv_multiple_kernel_modules) - { - nvidia_p2p_page_t_cache = NV_KMEM_CACHE_CREATE(nvidia_p2p_page_cache_name, -- nvidia_p2p_page_t); -+ nvidia_p2p_page_t, 0); - if (nvidia_p2p_page_t_cache == NULL) - { - rc = -ENOMEM; -diff -urp NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia/nv-mmap.c NVIDIA-Linux-x86_64-355.06/kernel/nvidia/nv-mmap.c ---- NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia/nv-mmap.c 2015-07-29 05:13:57.000000000 +0200 -+++ NVIDIA-Linux-x86_64-355.06/kernel/nvidia/nv-mmap.c 2015-08-21 16:58:15.968297199 +0200 -@@ -113,12 +113,12 @@ nvidia_vma_release(struct vm_area_struct - } - - #if defined(NV_VM_OPERATIONS_STRUCT_HAS_ACCESS) --static int -+static ssize_t - nvidia_vma_access( - struct vm_area_struct *vma, - unsigned long addr, - void *buffer, -- int length, -+ size_t length, - int write - ) - { -diff -urp NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia-uvm/uvm_common.c NVIDIA-Linux-x86_64-355.06/kernel/nvidia-uvm/uvm_common.c ---- NVIDIA-Linux-x86_64-355.06.orig/kernel/nvidia-uvm/uvm_common.c 2015-07-29 05:10:08.000000000 +0200 -+++ NVIDIA-Linux-x86_64-355.06/kernel/nvidia-uvm/uvm_common.c 2015-08-21 17:00:33.788289841 +0200 -@@ -60,7 +60,7 @@ static void uvmnext_exit(void) - { - - } --static NV_STATUS uvmnext_isr_top_half(void) -+static NV_STATUS uvmnext_isr_top_half(UvmGpuUuid *gpuUuidStruct) - { - return NV_ERR_NO_INTR_PENDING; - } -@@ -79,7 +79,6 @@ NvBool uvmnext_activated(void) - #endif // NVIDIA_UVM_NEXT_ENABLED - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - // TODO: This would be easier if RM allowed for multiple registrations, since we - // could register UVM-Lite and UVM-Next separately (bug 1372835). -@@ -112,9 +111,11 @@ static NV_STATUS uvmSetupGpuProvider(voi - NV_STATUS status = NV_OK; - - #ifdef NVIDIA_UVM_RM_ENABLED -- g_exportedUvmOps.startDevice = uvm_gpu_event_start_device; -- g_exportedUvmOps.stopDevice = uvm_gpu_event_stop_device; -- g_exportedUvmOps.isrTopHalf = uvmnext_isr_top_half; -+ static struct UvmOpsUvmEvents g_exportedUvmOps = { -+ .startDevice = uvm_gpu_event_start_device, -+ .stopDevice = uvm_gpu_event_stop_device, -+ .isrTopHalf = uvmnext_isr_top_half, -+ }; - - // call RM to exchange the function pointers. - status = nvUvmInterfaceRegisterUvmCallbacks(&g_exportedUvmOps); diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-361.28-pax.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-361.28-pax.patch deleted file mode 100644 index 09e4384b9420..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-361.28-pax.patch +++ /dev/null @@ -1,351 +0,0 @@ -diff -urp work.orig/kernel/common/inc/nv-linux.h work/kernel/common/inc/nv-linux.h ---- work.orig/kernel/common/inc/nv-linux.h 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/common/inc/nv-linux.h 2016-02-10 11:49:15.309410457 +0100 -@@ -1351,6 +1351,9 @@ extern void *nvidia_stack_t_cache; - #define NV_KMEM_CACHE_CREATE(name, type) \ - NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, 0, NULL) - -+#define NV_KMEM_CACHE_CREATE_USERCOPY(name, type) \ -+ NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, SLAB_USERCOPY, NULL) -+ - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ - kmem_cache_destroy(kmem_cache) - -diff -urp work.orig/kernel/common/inc/nv-modeset-interface.h work/kernel/common/inc/nv-modeset-interface.h ---- work.orig/kernel/common/inc/nv-modeset-interface.h 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/common/inc/nv-modeset-interface.h 2016-02-10 11:49:54.970985152 +0100 -@@ -70,7 +70,7 @@ typedef struct { - * mix nvidia and nvidia-modeset kernel modules from different - * releases. - */ -- const char *version_string; -+// const char *version_string; - - /* - * Allocate and free an nvidia_stack_t to pass into -@@ -104,6 +104,6 @@ typedef struct { - - } nvidia_modeset_rm_ops_t; - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops); -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string); - - #endif /* _NV_MODESET_INTERFACE_H_ */ -diff -urp work.orig/kernel/common/inc/nv-register-module.h work/kernel/common/inc/nv-register-module.h ---- work.orig/kernel/common/inc/nv-register-module.h 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/common/inc/nv-register-module.h 2016-02-10 11:50:18.941376865 +0100 -@@ -34,7 +34,7 @@ typedef struct nvidia_module_s { - int (*ioctl)(struct inode *, struct file * file, unsigned int cmd, unsigned long arg); - unsigned int (*poll)(struct file * file, poll_table *wait); - --} nvidia_module_t; -+} __do_const nvidia_module_t; - - int nvidia_register_module(nvidia_module_t *); - int nvidia_unregister_module(nvidia_module_t *); -diff -urp work.orig/kernel/nvidia/nv.c work/kernel/nvidia/nv.c ---- work.orig/kernel/nvidia/nv.c 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/nvidia/nv.c 2016-02-10 11:50:40.191828792 +0100 -@@ -704,7 +704,7 @@ int __init nvidia_init_module(void) - NV_SPIN_LOCK_INIT(&km_lock); - #endif - -- nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -+ nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE_USERCOPY(nvidia_stack_cache_name, - nvidia_stack_t); - if (nvidia_stack_t_cache == NULL) - { -diff -urp work.orig/kernel/nvidia/nv-chrdev.c work/kernel/nvidia/nv-chrdev.c ---- work.orig/kernel/nvidia/nv-chrdev.c 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/nvidia/nv-chrdev.c 2016-02-10 11:50:57.201126955 +0100 -@@ -20,8 +20,6 @@ int nv_register_chrdev(void *param) - { - nvidia_module_t *module = (nvidia_module_t *)param; - -- module->instance = nv_module_instance; -- - return (nvidia_register_module(module)); - } - -diff -urp work.orig/kernel/nvidia/nv-instance.c work/kernel/nvidia/nv-instance.c ---- work.orig/kernel/nvidia/nv-instance.c 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/nvidia/nv-instance.c 2016-02-10 11:51:35.418977554 +0100 -@@ -54,6 +54,7 @@ struct pci_driver nv_pci_driver = { - nvidia_module_t nv_fops = { - .owner = THIS_MODULE, - .module_name = MODULE_NAME, -+ .instance = MODULE_INSTANCE_NUMBER, - .open = nvidia_open, - .close = nvidia_close, - .ioctl = nvidia_ioctl, -diff -urp work.orig/kernel/nvidia/nv-mmap.c work/kernel/nvidia/nv-mmap.c ---- work.orig/kernel/nvidia/nv-mmap.c 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/nvidia/nv-mmap.c 2016-02-10 11:14:27.996577127 +0100 -@@ -113,12 +113,12 @@ nvidia_vma_release(struct vm_area_struct - } - - #if defined(NV_VM_OPERATIONS_STRUCT_HAS_ACCESS) --static int -+static ssize_t - nvidia_vma_access( - struct vm_area_struct *vma, - unsigned long addr, - void *buffer, -- int length, -+ size_t length, - int write - ) - { -diff -urp work.orig/kernel/nvidia/nv-modeset-interface.c work/kernel/nvidia/nv-modeset-interface.c ---- work.orig/kernel/nvidia/nv-modeset-interface.c 2016-02-03 23:31:51.000000000 +0100 -+++ work/kernel/nvidia/nv-modeset-interface.c 2016-02-10 12:05:23.822391866 +0100 -@@ -59,10 +59,9 @@ void nvidia_modeset_resume(NvU32 gpuId) - } - } - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops) -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string) - { -- const nvidia_modeset_rm_ops_t local_rm_ops = { -- .version_string = NV_VERSION_STRING, -+ static const nvidia_modeset_rm_ops_t local_rm_ops = { - .alloc_stack = nvidia_modeset_rm_ops_alloc_stack, - .free_stack = nvidia_modeset_rm_ops_free_stack, - .get_gpuid_list = nvidia_get_gpuid_list, -@@ -72,13 +71,13 @@ NV_STATUS nvidia_get_rm_ops(nvidia_modes - .set_callbacks = nvidia_modeset_set_callbacks, - }; - -- if (strcmp(rm_ops->version_string, NV_VERSION_STRING) != 0) -+ if (strcmp(*version_string, NV_VERSION_STRING) != 0) - { -- rm_ops->version_string = NV_VERSION_STRING; -+ *version_string = NV_VERSION_STRING; - return NV_ERR_GENERIC; - } - -- *rm_ops = local_rm_ops; -+ *rm_ops = &local_rm_ops; - - return NV_OK; - } -diff -urp work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c work/kernel/nvidia-modeset/nvidia-modeset-linux.c ---- work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-02-03 23:32:20.000000000 +0100 -+++ work/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-02-10 12:08:02.275059160 +0100 -@@ -320,49 +320,48 @@ static void nvkms_resume(NvU32 gpuId) - * so we can use a single nvidia_modeset_stack_ptr for calling RM. - *************************************************************************/ - --static nvidia_modeset_rm_ops_t __rm_ops = { 0 }; -+static const nvidia_modeset_rm_ops_t *__rm_ops; - static nvidia_modeset_stack_ptr nvkms_nvidia_stack = NULL; - static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { -- nvkms_suspend, -- nvkms_resume -+ .suspend = nvkms_suspend, -+ .resume = nvkms_resume - }; - - static int nvkms_alloc_rm(void) - { - NV_STATUS nvstatus; - int ret; -+ const char *version_string = NV_VERSION_STRING; - -- __rm_ops.version_string = NV_VERSION_STRING; -- -- nvstatus = nvidia_get_rm_ops(&__rm_ops); -+ nvstatus = nvidia_get_rm_ops(&__rm_ops, &version_string); - - if (nvstatus != NV_OK) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " - "nvidia.ko(%s) nvidia-modeset.ko(%s)\n", -- __rm_ops.version_string, NV_VERSION_STRING); -+ version_string, NV_VERSION_STRING); - return -EINVAL; - } - -- ret = __rm_ops.set_callbacks(&nvkms_rm_callbacks); -+ ret = __rm_ops->set_callbacks(&nvkms_rm_callbacks); - if (ret < 0) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); - return ret; - } - -- return __rm_ops.alloc_stack(&nvkms_nvidia_stack); -+ return __rm_ops->alloc_stack(&nvkms_nvidia_stack); - } - - static void nvkms_free_rm(void) - { -- __rm_ops.set_callbacks(NULL); -- if (__rm_ops.free_stack != NULL) { -- __rm_ops.free_stack(nvkms_nvidia_stack); -+ __rm_ops->set_callbacks(NULL); -+ if (__rm_ops->free_stack != NULL) { -+ __rm_ops->free_stack(nvkms_nvidia_stack); - } - } - - void NVKMS_API_CALL nvkms_call_rm(void *ops) - { -- __rm_ops.op(nvkms_nvidia_stack, ops); -+ __rm_ops->op(nvkms_nvidia_stack, ops); - } - - /************************************************************************* -@@ -681,17 +680,17 @@ done: - - NvBool NVKMS_API_CALL nvkms_open_gpu(NvU32 gpuId) - { -- return __rm_ops.open_gpu(gpuId, nvkms_nvidia_stack) == 0; -+ return __rm_ops->open_gpu(gpuId, nvkms_nvidia_stack) == 0; - } - - void NVKMS_API_CALL nvkms_close_gpu(NvU32 gpuId) - { -- __rm_ops.close_gpu(gpuId, nvkms_nvidia_stack); -+ __rm_ops->close_gpu(gpuId, nvkms_nvidia_stack); - } - - NvBool NVKMS_API_CALL nvkms_list_gpus(NvU32 *gpu_ids, NvU32 *gpu_count) - { -- return __rm_ops.get_gpuid_list(gpu_ids, gpu_count); -+ return __rm_ops->get_gpuid_list(gpu_ids, gpu_count); - } - - /************************************************************************* -diff -urp work.orig/kernel/nvidia-uvm/uvm8_channel.c work/kernel/nvidia-uvm/uvm8_channel.c ---- work.orig/kernel/nvidia-uvm/uvm8_channel.c 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_channel.c 2016-02-10 11:39:16.735603941 +0100 -@@ -268,7 +268,7 @@ void uvm_channel_end_push(uvm_push_t *pu - mb(); - - channel->cpu_put = new_cpu_put; -- ACCESS_ONCE(*channel->channel_info.GPPut) = new_cpu_put; -+ ACCESS_ONCE_RW(*channel->channel_info.GPPut) = new_cpu_put; - - uvm_spin_unlock(&channel->pool->lock); - -diff -urp work.orig/kernel/nvidia-uvm/uvm8_global.c work/kernel/nvidia-uvm/uvm8_global.c ---- work.orig/kernel/nvidia-uvm/uvm8_global.c 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_global.c 2016-02-10 11:28:23.142115625 +0100 -@@ -32,16 +32,16 @@ - #include "nv_uvm_interface.h" - - uvm_global_t g_uvm_global; --static struct UvmOpsUvmEvents g_exported_uvm8_ops; -+static struct UvmOpsUvmEvents g_exported_uvm8_ops = { -+ .startDevice = NULL, -+ .stopDevice = NULL, -+ .isrTopHalf = uvm8_isr_top_half, -+}; - - static NV_STATUS uvm8_register_callbacks(void) - { - NV_STATUS status = NV_OK; - -- g_exported_uvm8_ops.startDevice = NULL; -- g_exported_uvm8_ops.stopDevice = NULL; -- g_exported_uvm8_ops.isrTopHalf = uvm8_isr_top_half; -- - // Register the UVM callbacks with the main GPU driver: - status = uvm_rm_locked_call(nvUvmInterfaceRegisterUvmCallbacks(&g_exported_uvm8_ops)); - return status; -diff -urp work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c ---- work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-02-10 11:38:57.478030852 +0100 -@@ -288,7 +288,7 @@ NvU64 uvm_gpu_semaphore_get_gpu_va(uvm_g - - NvU32 uvm_gpu_semaphore_get_payload(uvm_gpu_semaphore_t *semaphore) - { -- return ACCESS_ONCE(*semaphore->payload); -+ return ACCESS_ONCE_RW(*semaphore->payload); - } - - void uvm_gpu_semaphore_set_payload(uvm_gpu_semaphore_t *semaphore, NvU32 payload) -@@ -304,7 +304,7 @@ void uvm_gpu_semaphore_set_payload(uvm_g - // being optimized out on non-SMP configs (we need them for interacting with - // the GPU correctly even on non-SMP). - mb(); -- ACCESS_ONCE(*semaphore->payload) = payload; -+ ACCESS_ONCE_RW(*semaphore->payload) = payload; - } - - NV_STATUS uvm_gpu_tracking_semaphore_alloc(uvm_gpu_semaphore_pool_t *pool, uvm_gpu_tracking_semaphore_t *tracking_sem) -diff -urp work.orig/kernel/nvidia-uvm/uvm8_hal.c work/kernel/nvidia-uvm/uvm8_hal.c ---- work.orig/kernel/nvidia-uvm/uvm8_hal.c 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_hal.c 2016-02-10 11:47:13.377356162 +0100 -@@ -58,7 +58,7 @@ typedef struct - // arch_ops: id is an architecture - uvm_arch_hal_t arch_ops; - } u; --} uvm_hal_class_ops_t; -+} __do_const uvm_hal_class_ops_t; - - // Table for copy engine functions. - // Each entry is associated with a copy engine class through the 'class' field. -diff -urp work.orig/kernel/nvidia-uvm/uvm8_mmu.h work/kernel/nvidia-uvm/uvm8_mmu.h ---- work.orig/kernel/nvidia-uvm/uvm8_mmu.h 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_mmu.h 2016-02-10 12:09:05.463637996 +0100 -@@ -24,7 +24,6 @@ - #ifndef __UVM8_MMU_H__ - #define __UVM8_MMU_H__ - --#include "uvm8_forward_decl.h" - #include "uvm8_pmm_gpu.h" - #include "uvmtypes.h" - #include "uvm_common.h" -diff -urp work.orig/kernel/nvidia-uvm/uvm_common.c work/kernel/nvidia-uvm/uvm_common.c ---- work.orig/kernel/nvidia-uvm/uvm_common.c 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm_common.c 2016-02-10 11:45:58.008501609 +0100 -@@ -74,7 +74,6 @@ static int uvmnext_activated(void) - #endif - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - static char* uvm_driver_mode = "lite"; - -@@ -198,12 +197,17 @@ static NV_STATUS uvmSetupGpuProvider(voi - { - NV_STATUS status = NV_OK; - -- g_exportedUvmOps.startDevice = uvm_gpu_event_start_device; -- g_exportedUvmOps.stopDevice = uvm_gpu_event_stop_device; -+ static struct UvmOpsUvmEvents g_exportedUvmOps = { -+ .startDevice = uvm_gpu_event_start_device, -+ .stopDevice = uvm_gpu_event_stop_device, -+ }; -+ -+ pax_open_kernel(); - if (uvmnext_activated()) -- g_exportedUvmOps.isrTopHalf = uvmnext_isr_top_half; -+ *(void **)&g_exportedUvmOps.isrTopHalf = uvmnext_isr_top_half; - else if (uvmfull_activated()) -- g_exportedUvmOps.isrTopHalf = uvmfull_isr_top_half; -+ *(void **)&g_exportedUvmOps.isrTopHalf = uvmfull_isr_top_half; -+ pax_close_kernel(); - - // call RM to exchange the function pointers. - status = nvUvmInterfaceRegisterUvmCallbacks(&g_exportedUvmOps); -diff -urp work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h work/kernel/nvidia-uvm/uvm_full_fault_buffer.h ---- work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-02-03 23:32:32.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-02-10 11:26:28.143422741 +0100 -@@ -31,6 +31,7 @@ - #define _UVM_FULL_FAULT_BUFFER_H_ - - #include "uvmtypes.h" -+#include "linux/compiler.h" - - #define MAXWELL_FAULT_BUFFER_A (0xb069) - #define MEM_RD32(a) (*(const volatile NvU32 *)(a)) -@@ -303,7 +304,7 @@ typedef struct - NvUvmControlPrefetch_t controlPrefetch; - NvUvmTestFaultBufferOverflow_t testFaultBufferOverflow; - NvUvmClearFaultBufferOverflow_t clearFaultBufferOverflow; --} UvmFaultBufferOps; -+} __no_const UvmFaultBufferOps; - - /****************************************************************************** - uvmfull_fault_buffer_init diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-364.12-pax.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-364.12-pax.patch deleted file mode 100644 index 18c316282bc7..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-364.12-pax.patch +++ /dev/null @@ -1,398 +0,0 @@ -diff -urp work.orig/kernel/common/inc/nv-linux.h work/kernel/common/inc/nv-linux.h ---- work.orig/kernel/common/inc/nv-linux.h 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/common/inc/nv-linux.h 2016-03-22 13:51:58.637292065 +0100 -@@ -1307,6 +1307,9 @@ extern void *nvidia_stack_t_cache; - #define NV_KMEM_CACHE_CREATE(name, type) \ - NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, 0, NULL) - -+#define NV_KMEM_CACHE_CREATE_USERCOPY(name, type) \ -+ NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, SLAB_USERCOPY, NULL) -+ - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ - kmem_cache_destroy(kmem_cache) - -diff -urp work.orig/kernel/common/inc/nv-modeset-interface.h work/kernel/common/inc/nv-modeset-interface.h ---- work.orig/kernel/common/inc/nv-modeset-interface.h 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/common/inc/nv-modeset-interface.h 2016-03-22 13:51:58.637292065 +0100 -@@ -72,7 +72,7 @@ typedef struct { - * mix nvidia and nvidia-modeset kernel modules from different - * releases. - */ -- const char *version_string; -+// const char *version_string; - - /* - * Allocate and free an nvidia_stack_t to pass into -@@ -115,6 +115,6 @@ typedef struct { - - } nvidia_modeset_rm_ops_t; - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops); -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string); - - #endif /* _NV_MODESET_INTERFACE_H_ */ -diff -urp work.orig/kernel/common/inc/nv-register-module.h work/kernel/common/inc/nv-register-module.h ---- work.orig/kernel/common/inc/nv-register-module.h 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/common/inc/nv-register-module.h 2016-03-22 13:51:58.637292065 +0100 -@@ -34,7 +34,7 @@ typedef struct nvidia_module_s { - int (*ioctl)(struct inode *, struct file * file, unsigned int cmd, unsigned long arg); - unsigned int (*poll)(struct file * file, poll_table *wait); - --} nvidia_module_t; -+} __do_const nvidia_module_t; - - int nvidia_register_module(nvidia_module_t *); - int nvidia_unregister_module(nvidia_module_t *); -diff -urp work.orig/kernel/nvidia/nv.c work/kernel/nvidia/nv.c ---- work.orig/kernel/nvidia/nv.c 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/nvidia/nv.c 2016-03-22 13:51:58.637292065 +0100 -@@ -654,7 +654,7 @@ int __init nvidia_init_module(void) - NV_SPIN_LOCK_INIT(&km_lock); - #endif - -- nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -+ nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE_USERCOPY(nvidia_stack_cache_name, - nvidia_stack_t); - if (nvidia_stack_t_cache == NULL) - { -diff -urp work.orig/kernel/nvidia/nv-chrdev.c work/kernel/nvidia/nv-chrdev.c ---- work.orig/kernel/nvidia/nv-chrdev.c 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/nvidia/nv-chrdev.c 2016-03-22 13:51:58.637292065 +0100 -@@ -20,8 +20,6 @@ int nv_register_chrdev(void *param) - { - nvidia_module_t *module = (nvidia_module_t *)param; - -- module->instance = nv_module_instance; -- - return (nvidia_register_module(module)); - } - -diff -urp work.orig/kernel/nvidia/nv-instance.c work/kernel/nvidia/nv-instance.c ---- work.orig/kernel/nvidia/nv-instance.c 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/nvidia/nv-instance.c 2016-03-22 13:51:58.637292065 +0100 -@@ -51,6 +51,7 @@ struct pci_driver nv_pci_driver = { - nvidia_module_t nv_fops = { - .owner = THIS_MODULE, - .module_name = MODULE_NAME, -+ .instance = MODULE_INSTANCE_NUMBER, - .open = nvidia_open, - .close = nvidia_close, - .ioctl = nvidia_ioctl, -diff -urp work.orig/kernel/nvidia/nv-mmap.c work/kernel/nvidia/nv-mmap.c ---- work.orig/kernel/nvidia/nv-mmap.c 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/nvidia/nv-mmap.c 2016-03-22 13:51:58.637292065 +0100 -@@ -113,12 +113,12 @@ nvidia_vma_release(struct vm_area_struct - } - - #if defined(NV_VM_OPERATIONS_STRUCT_HAS_ACCESS) --static int -+static ssize_t - nvidia_vma_access( - struct vm_area_struct *vma, - unsigned long addr, - void *buffer, -- int length, -+ size_t length, - int write - ) - { -diff -urp work.orig/kernel/nvidia/nv-modeset-interface.c work/kernel/nvidia/nv-modeset-interface.c ---- work.orig/kernel/nvidia/nv-modeset-interface.c 2016-03-17 03:58:29.000000000 +0100 -+++ work/kernel/nvidia/nv-modeset-interface.c 2016-03-22 13:56:37.019870910 +0100 -@@ -100,10 +100,9 @@ static NvU32 nvidia_modeset_enumerate_gp - return count; - } - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops) -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string) - { -- const nvidia_modeset_rm_ops_t local_rm_ops = { -- .version_string = NV_VERSION_STRING, -+ static const nvidia_modeset_rm_ops_t local_rm_ops = { - .alloc_stack = nvidia_modeset_rm_ops_alloc_stack, - .free_stack = nvidia_modeset_rm_ops_free_stack, - .get_gpuid_list = nvidia_get_gpuid_list, -@@ -114,13 +113,13 @@ NV_STATUS nvidia_get_rm_ops(nvidia_modes - .set_callbacks = nvidia_modeset_set_callbacks, - }; - -- if (strcmp(rm_ops->version_string, NV_VERSION_STRING) != 0) -+ if (strcmp(*version_string, NV_VERSION_STRING) != 0) - { -- rm_ops->version_string = NV_VERSION_STRING; -+ *version_string = NV_VERSION_STRING; - return NV_ERR_GENERIC; - } - -- *rm_ops = local_rm_ops; -+ *rm_ops = &local_rm_ops; - - return NV_OK; - } -diff -urp work.orig/kernel/nvidia-drm/nvidia-drm-drv.c work/kernel/nvidia-drm/nvidia-drm-drv.c ---- work.orig/kernel/nvidia-drm/nvidia-drm-drv.c 2016-03-17 03:57:24.000000000 +0100 -+++ work/kernel/nvidia-drm/nvidia-drm-drv.c 2016-03-22 14:23:07.084230003 +0100 -@@ -586,7 +586,7 @@ static const struct drm_ioctl_desc nv_dr - DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED), - }; - --static struct drm_driver nv_drm_driver = { -+static drm_driver_no_const nv_drm_driver __read_only = { - - .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER, - -@@ -643,6 +643,7 @@ static void nvidia_update_drm_driver_fea - return; - } - -+ pax_open_kernel(); - nv_drm_driver.driver_features |= DRIVER_MODESET | DRIVER_ATOMIC; - - nv_drm_driver.master_set = nvidia_drm_master_set; -@@ -651,6 +652,7 @@ static void nvidia_update_drm_driver_fea - nv_drm_driver.dumb_create = nvidia_drm_dumb_create; - nv_drm_driver.dumb_map_offset = nvidia_drm_dumb_map_offset; - nv_drm_driver.dumb_destroy = drm_gem_dumb_destroy; -+ pax_close_kernel(); - - #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - } -diff -urp work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c work/kernel/nvidia-modeset/nvidia-modeset-linux.c ---- work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-03-17 03:57:25.000000000 +0100 -+++ work/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-03-22 13:55:05.208148788 +0100 -@@ -317,29 +317,28 @@ static void nvkms_resume(NvU32 gpuId) - * Interface with resman. - *************************************************************************/ - --static nvidia_modeset_rm_ops_t __rm_ops = { 0 }; -+static const nvidia_modeset_rm_ops_t *__rm_ops; - static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { -- nvkms_suspend, -- nvkms_resume -+ .suspend = nvkms_suspend, -+ .resume = nvkms_resume - }; - - static int nvkms_alloc_rm(void) - { - NV_STATUS nvstatus; - int ret; -+ const char *version_string = NV_VERSION_STRING; - -- __rm_ops.version_string = NV_VERSION_STRING; -- -- nvstatus = nvidia_get_rm_ops(&__rm_ops); -+ nvstatus = nvidia_get_rm_ops(&__rm_ops, &version_string); - - if (nvstatus != NV_OK) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " - "nvidia.ko(%s) nvidia-modeset.ko(%s)\n", -- __rm_ops.version_string, NV_VERSION_STRING); -+ version_string, NV_VERSION_STRING); - return -EINVAL; - } - -- ret = __rm_ops.set_callbacks(&nvkms_rm_callbacks); -+ ret = __rm_ops->set_callbacks(&nvkms_rm_callbacks); - if (ret < 0) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); - return ret; -@@ -350,20 +349,20 @@ static int nvkms_alloc_rm(void) - - static void nvkms_free_rm(void) - { -- __rm_ops.set_callbacks(NULL); -+ __rm_ops->set_callbacks(NULL); - } - - void NVKMS_API_CALL nvkms_call_rm(void *ops) - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.op(stack, ops); -+ __rm_ops->op(stack, ops); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - /************************************************************************* -@@ -685,13 +684,13 @@ NvBool NVKMS_API_CALL nvkms_open_gpu(NvU - nvidia_modeset_stack_ptr stack = NULL; - NvBool ret; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return NV_FALSE; - } - -- ret = __rm_ops.open_gpu(gpuId, stack) == 0; -+ ret = __rm_ops->open_gpu(gpuId, stack) == 0; - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - - return ret; - } -@@ -700,18 +699,18 @@ void NVKMS_API_CALL nvkms_close_gpu(NvU3 - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.close_gpu(gpuId, stack); -+ __rm_ops->close_gpu(gpuId, stack); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - NvU32 NVKMS_API_CALL nvkms_enumerate_gpus(nv_gpu_info_t *gpu_info) - { -- return __rm_ops.enumerate_gpus(gpu_info); -+ return __rm_ops->enumerate_gpus(gpu_info); - } - - /************************************************************************* -diff -urp work.orig/kernel/nvidia-uvm/uvm8_global.c work/kernel/nvidia-uvm/uvm8_global.c ---- work.orig/kernel/nvidia-uvm/uvm8_global.c 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_global.c 2016-03-22 14:00:03.852089935 +0100 -@@ -33,17 +33,17 @@ - #include "nv_uvm_interface.h" - - uvm_global_t g_uvm_global; --static struct UvmOpsUvmEvents g_exported_uvm8_ops; -+static struct UvmOpsUvmEvents g_exported_uvm8_ops = { -+ .startDevice = NULL, -+ .stopDevice = NULL, -+ .isrTopHalf = uvm8_isr_top_half, -+}; - static bool g_ops_registered = false; - - static NV_STATUS uvm8_register_callbacks(void) - { - NV_STATUS status = NV_OK; - -- g_exported_uvm8_ops.startDevice = NULL; -- g_exported_uvm8_ops.stopDevice = NULL; -- g_exported_uvm8_ops.isrTopHalf = uvm8_isr_top_half; -- - // Register the UVM callbacks with the main GPU driver: - status = uvm_rm_locked_call(nvUvmInterfaceRegisterUvmCallbacks(&g_exported_uvm8_ops)); - if (status != NV_OK) -diff -urp work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c ---- work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-03-22 13:51:58.641294799 +0100 -@@ -285,7 +285,7 @@ NvU64 uvm_gpu_semaphore_get_gpu_va(uvm_g - - NvU32 uvm_gpu_semaphore_get_payload(uvm_gpu_semaphore_t *semaphore) - { -- return ACCESS_ONCE(*semaphore->payload); -+ return ACCESS_ONCE_RW(*semaphore->payload); - } - - void uvm_gpu_semaphore_set_payload(uvm_gpu_semaphore_t *semaphore, NvU32 payload) -@@ -301,7 +301,7 @@ void uvm_gpu_semaphore_set_payload(uvm_g - // being optimized out on non-SMP configs (we need them for interacting with - // the GPU correctly even on non-SMP). - mb(); -- ACCESS_ONCE(*semaphore->payload) = payload; -+ ACCESS_ONCE_RW(*semaphore->payload) = payload; - } - - NV_STATUS uvm_gpu_tracking_semaphore_alloc(uvm_gpu_semaphore_pool_t *pool, uvm_gpu_tracking_semaphore_t *tracking_sem) -diff -urp work.orig/kernel/nvidia-uvm/uvm8_hal.h work/kernel/nvidia-uvm/uvm8_hal.h ---- work.orig/kernel/nvidia-uvm/uvm8_hal.h 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_hal.h 2016-03-22 13:55:38.620347598 +0100 -@@ -293,7 +293,7 @@ typedef struct - // fault_buffer_ops: id is a hardware class - uvm_fault_buffer_hal_t fault_buffer_ops; - } u; --} uvm_hal_class_ops_t; -+} __do_const uvm_hal_class_ops_t; - - // When UVM next support is enabled support for future chips in the hal is - // enabled by providing additional hal table entries below. -diff -urp work.orig/kernel/nvidia-uvm/uvm8_mmu.h work/kernel/nvidia-uvm/uvm8_mmu.h ---- work.orig/kernel/nvidia-uvm/uvm8_mmu.h 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm8_mmu.h 2016-03-22 13:57:44.255581049 +0100 -@@ -24,7 +24,6 @@ - #ifndef __UVM8_MMU_H__ - #define __UVM8_MMU_H__ - --#include "uvm8_forward_decl.h" - #include "uvm8_hal_types.h" - #include "uvm8_pmm_gpu.h" - #include "uvmtypes.h" -diff -urp work.orig/kernel/nvidia-uvm/uvm_common.c work/kernel/nvidia-uvm/uvm_common.c ---- work.orig/kernel/nvidia-uvm/uvm_common.c 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm_common.c 2016-03-22 13:59:20.045675359 +0100 -@@ -54,7 +54,6 @@ - #include "uvm8_forward_decl.h" - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - static char* uvm_driver_mode = "lite"; - -@@ -171,10 +170,16 @@ static NV_STATUS uvmSetupGpuProvider(voi - { - NV_STATUS status = NV_OK; - -- g_exportedUvmOps.startDevice = uvm_gpu_event_start_device; -- g_exportedUvmOps.stopDevice = uvm_gpu_event_stop_device; -- if (uvmfull_activated()) -- g_exportedUvmOps.isrTopHalf = uvmfull_isr_top_half; -+ static struct UvmOpsUvmEvents g_exportedUvmOps = { -+ .startDevice = uvm_gpu_event_start_device, -+ .stopDevice = uvm_gpu_event_stop_device, -+ }; -+ -+ if (uvmfull_activated()) { -+ pax_open_kernel(); -+ *(void **)&g_exportedUvmOps.isrTopHalf = uvmfull_isr_top_half; -+ pax_close_kernel(); -+ } - - // call RM to exchange the function pointers. - status = nvUvmInterfaceRegisterUvmCallbacks(&g_exportedUvmOps); -diff -urp work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h work/kernel/nvidia-uvm/uvm_full_fault_buffer.h ---- work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-03-22 13:51:58.645297533 +0100 -@@ -31,6 +31,7 @@ - #define _UVM_FULL_FAULT_BUFFER_H_ - - #include "uvmtypes.h" -+#include "linux/compiler.h" - - #define MAXWELL_FAULT_BUFFER_A (0xb069) - #define MEM_RD32(a) (*(const volatile NvU32 *)(a)) -@@ -303,7 +304,7 @@ typedef struct - NvUvmControlPrefetch_t controlPrefetch; - NvUvmTestFaultBufferOverflow_t testFaultBufferOverflow; - NvUvmClearFaultBufferOverflow_t clearFaultBufferOverflow; --} UvmFaultBufferOps; -+} __no_const UvmFaultBufferOps; - - /****************************************************************************** - uvmfull_fault_buffer_init -diff -urp work.orig/kernel/nvidia-uvm/uvm_linux.h work/kernel/nvidia-uvm/uvm_linux.h ---- work.orig/kernel/nvidia-uvm/uvm_linux.h 2016-03-17 03:59:59.000000000 +0100 -+++ work/kernel/nvidia-uvm/uvm_linux.h 2016-03-22 14:09:14.810534336 +0100 -@@ -485,7 +485,7 @@ static inline NvU64 NV_GETTIME(void) - - // WRITE_ONCE/READ_ONCE have incompatible definitions across versions, which produces warnings. - // Therefore, we define our own macros --#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE(x) = (val)) -+#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE_RW(x) = (val)) - #define UVM_READ_ONCE(x) ACCESS_ONCE(x) - - // Added in 3.11 diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.35-pax.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.35-pax.patch deleted file mode 100644 index b615064ddc42..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.35-pax.patch +++ /dev/null @@ -1,404 +0,0 @@ -diff -urp work.orig/kernel/common/inc/nv-linux.h work/kernel/common/inc/nv-linux.h ---- work.orig/kernel/common/inc/nv-linux.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-linux.h 2016-07-16 22:45:59.870806346 +0200 -@@ -1308,6 +1308,9 @@ extern void *nvidia_stack_t_cache; - #define NV_KMEM_CACHE_CREATE(name, type) \ - NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, 0, NULL) - -+#define NV_KMEM_CACHE_CREATE_USERCOPY(name, type) \ -+ NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, SLAB_USERCOPY, NULL) -+ - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ - kmem_cache_destroy(kmem_cache) - -diff -urp work.orig/kernel/common/inc/nv-modeset-interface.h work/kernel/common/inc/nv-modeset-interface.h ---- work.orig/kernel/common/inc/nv-modeset-interface.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-modeset-interface.h 2016-07-16 22:46:16.223400774 +0200 -@@ -72,7 +72,7 @@ typedef struct { - * mix nvidia and nvidia-modeset kernel modules from different - * releases. - */ -- const char *version_string; -+// const char *version_string; - - /* - * Return system information. -@@ -117,6 +117,6 @@ typedef struct { - - } nvidia_modeset_rm_ops_t; - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops); -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string); - - #endif /* _NV_MODESET_INTERFACE_H_ */ -diff -urp work.orig/kernel/common/inc/nv-register-module.h work/kernel/common/inc/nv-register-module.h ---- work.orig/kernel/common/inc/nv-register-module.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-register-module.h 2016-07-16 22:45:59.870806346 +0200 -@@ -34,7 +34,7 @@ typedef struct nvidia_module_s { - int (*ioctl)(struct inode *, struct file * file, unsigned int cmd, unsigned long arg); - unsigned int (*poll)(struct file * file, poll_table *wait); - --} nvidia_module_t; -+} __do_const nvidia_module_t; - - int nvidia_register_module(nvidia_module_t *); - int nvidia_unregister_module(nvidia_module_t *); -diff -urp work.orig/kernel/nvidia/nv.c work/kernel/nvidia/nv.c ---- work.orig/kernel/nvidia/nv.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv.c 2016-07-16 22:45:59.874809435 +0200 -@@ -654,7 +654,7 @@ int __init nvidia_init_module(void) - NV_SPIN_LOCK_INIT(&km_lock); - #endif - -- nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -+ nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE_USERCOPY(nvidia_stack_cache_name, - nvidia_stack_t); - if (nvidia_stack_t_cache == NULL) - { -diff -urp work.orig/kernel/nvidia/nv-chrdev.c work/kernel/nvidia/nv-chrdev.c ---- work.orig/kernel/nvidia/nv-chrdev.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-chrdev.c 2016-07-16 22:45:59.874809435 +0200 -@@ -20,8 +20,6 @@ int nv_register_chrdev(void *param) - { - nvidia_module_t *module = (nvidia_module_t *)param; - -- module->instance = nv_module_instance; -- - return (nvidia_register_module(module)); - } - -diff -urp work.orig/kernel/nvidia/nv-instance.c work/kernel/nvidia/nv-instance.c ---- work.orig/kernel/nvidia/nv-instance.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-instance.c 2016-07-16 22:45:59.874809435 +0200 -@@ -51,6 +51,7 @@ struct pci_driver nv_pci_driver = { - nvidia_module_t nv_fops = { - .owner = THIS_MODULE, - .module_name = MODULE_NAME, -+ .instance = MODULE_INSTANCE_NUMBER, - .open = nvidia_open, - .close = nvidia_close, - .ioctl = nvidia_ioctl, -diff -urp work.orig/kernel/nvidia/nv-mmap.c work/kernel/nvidia/nv-mmap.c ---- work.orig/kernel/nvidia/nv-mmap.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-mmap.c 2016-07-16 22:45:59.874809435 +0200 -@@ -113,12 +113,12 @@ nvidia_vma_release(struct vm_area_struct - } - - #if defined(NV_VM_OPERATIONS_STRUCT_HAS_ACCESS) --static int -+static ssize_t - nvidia_vma_access( - struct vm_area_struct *vma, - unsigned long addr, - void *buffer, -- int length, -+ size_t length, - int write - ) - { -diff -urp work.orig/kernel/nvidia/nv-modeset-interface.c work/kernel/nvidia/nv-modeset-interface.c ---- work.orig/kernel/nvidia/nv-modeset-interface.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-modeset-interface.c 2016-07-16 22:54:36.567962197 +0200 -@@ -100,10 +100,9 @@ static NvU32 nvidia_modeset_enumerate_gp - return count; - } - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops) -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string) - { -- const nvidia_modeset_rm_ops_t local_rm_ops = { -- .version_string = NV_VERSION_STRING, -+ static const nvidia_modeset_rm_ops_t local_rm_ops = { - .system_info = { - .allow_write_combining = NV_FALSE, - }, -@@ -116,17 +115,26 @@ NV_STATUS nvidia_get_rm_ops(nvidia_modes - .set_callbacks = nvidia_modeset_set_callbacks, - }; - -- if (strcmp(rm_ops->version_string, NV_VERSION_STRING) != 0) -+ static const nvidia_modeset_rm_ops_t local_rm_ops_wc = { -+ .system_info = { -+ .allow_write_combining = NV_TRUE, -+ }, -+ .alloc_stack = nvidia_modeset_rm_ops_alloc_stack, -+ .free_stack = nvidia_modeset_rm_ops_free_stack, -+ .enumerate_gpus = nvidia_modeset_enumerate_gpus, -+ .open_gpu = nvidia_dev_get, -+ .close_gpu = nvidia_dev_put, -+ .op = rm_kernel_rmapi_op, /* provided by nv-kernel.o */ -+ .set_callbacks = nvidia_modeset_set_callbacks, -+ }; -+ -+ if (strcmp(*version_string, NV_VERSION_STRING) != 0) - { -- rm_ops->version_string = NV_VERSION_STRING; -+ *version_string = NV_VERSION_STRING; - return NV_ERR_GENERIC; - } - -- *rm_ops = local_rm_ops; -- -- if (NV_ALLOW_WRITE_COMBINING(NV_MEMORY_TYPE_FRAMEBUFFER)) { -- rm_ops->system_info.allow_write_combining = NV_TRUE; -- } -+ *rm_ops = NV_ALLOW_WRITE_COMBINING(NV_MEMORY_TYPE_FRAMEBUFFER) ? &local_rm_ops_wc : &local_rm_ops; - - return NV_OK; - } -diff -urp work.orig/kernel/nvidia-drm/nvidia-drm-drv.c work/kernel/nvidia-drm/nvidia-drm-drv.c ---- work.orig/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-12 06:53:45.000000000 +0200 -+++ work/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-16 22:45:59.878812524 +0200 -@@ -592,7 +592,7 @@ static const struct drm_ioctl_desc nv_dr - DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED), - }; - --static struct drm_driver nv_drm_driver = { -+static drm_driver_no_const nv_drm_driver __read_only = { - - .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER, - -@@ -649,6 +649,7 @@ static void nvidia_update_drm_driver_fea - return; - } - -+ pax_open_kernel(); - nv_drm_driver.driver_features |= DRIVER_MODESET | DRIVER_ATOMIC; - - nv_drm_driver.master_set = nvidia_drm_master_set; -@@ -657,6 +658,7 @@ static void nvidia_update_drm_driver_fea - nv_drm_driver.dumb_create = nvidia_drm_dumb_create; - nv_drm_driver.dumb_map_offset = nvidia_drm_dumb_map_offset; - nv_drm_driver.dumb_destroy = drm_gem_dumb_destroy; -+ pax_close_kernel(); - - #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - } -diff -urp work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c work/kernel/nvidia-modeset/nvidia-modeset-linux.c ---- work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-07-12 06:53:46.000000000 +0200 -+++ work/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-07-16 22:47:09.334133112 +0200 -@@ -317,29 +317,28 @@ static void nvkms_resume(NvU32 gpuId) - * Interface with resman. - *************************************************************************/ - --static nvidia_modeset_rm_ops_t __rm_ops = { 0 }; -+static const nvidia_modeset_rm_ops_t *__rm_ops; - static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { -- nvkms_suspend, -- nvkms_resume -+ .suspend = nvkms_suspend, -+ .resume = nvkms_resume - }; - - static int nvkms_alloc_rm(void) - { - NV_STATUS nvstatus; - int ret; -+ const char *version_string = NV_VERSION_STRING; - -- __rm_ops.version_string = NV_VERSION_STRING; -- -- nvstatus = nvidia_get_rm_ops(&__rm_ops); -+ nvstatus = nvidia_get_rm_ops(&__rm_ops, &version_string); - - if (nvstatus != NV_OK) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " - "nvidia.ko(%s) nvidia-modeset.ko(%s)\n", -- __rm_ops.version_string, NV_VERSION_STRING); -+ version_string, NV_VERSION_STRING); - return -EINVAL; - } - -- ret = __rm_ops.set_callbacks(&nvkms_rm_callbacks); -+ ret = __rm_ops->set_callbacks(&nvkms_rm_callbacks); - if (ret < 0) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); - return ret; -@@ -350,20 +349,20 @@ static int nvkms_alloc_rm(void) - - static void nvkms_free_rm(void) - { -- __rm_ops.set_callbacks(NULL); -+ __rm_ops->set_callbacks(NULL); - } - - void NVKMS_API_CALL nvkms_call_rm(void *ops) - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.op(stack, ops); -+ __rm_ops->op(stack, ops); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - /************************************************************************* -@@ -685,13 +684,13 @@ NvBool NVKMS_API_CALL nvkms_open_gpu(NvU - nvidia_modeset_stack_ptr stack = NULL; - NvBool ret; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return NV_FALSE; - } - -- ret = __rm_ops.open_gpu(gpuId, stack) == 0; -+ ret = __rm_ops->open_gpu(gpuId, stack) == 0; - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - - return ret; - } -@@ -700,23 +699,23 @@ void NVKMS_API_CALL nvkms_close_gpu(NvU3 - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.close_gpu(gpuId, stack); -+ __rm_ops->close_gpu(gpuId, stack); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - NvU32 NVKMS_API_CALL nvkms_enumerate_gpus(nv_gpu_info_t *gpu_info) - { -- return __rm_ops.enumerate_gpus(gpu_info); -+ return __rm_ops->enumerate_gpus(gpu_info); - } - - NvBool NVKMS_API_CALL nvkms_allow_write_combining(void) - { -- return __rm_ops.system_info.allow_write_combining; -+ return __rm_ops->system_info.allow_write_combining; - } - - /************************************************************************* -diff -urp work.orig/kernel/nvidia-uvm/uvm8_global.c work/kernel/nvidia-uvm/uvm8_global.c ---- work.orig/kernel/nvidia-uvm/uvm8_global.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_global.c 2016-07-16 22:45:59.878812524 +0200 -@@ -35,17 +35,17 @@ - #include "nv_uvm_interface.h" - - uvm_global_t g_uvm_global; --static struct UvmOpsUvmEvents g_exported_uvm8_ops; -+static struct UvmOpsUvmEvents g_exported_uvm8_ops = { -+ .startDevice = NULL, -+ .stopDevice = NULL, -+ .isrTopHalf = uvm8_isr_top_half, -+}; - static bool g_ops_registered = false; - - static NV_STATUS uvm8_register_callbacks(void) - { - NV_STATUS status = NV_OK; - -- g_exported_uvm8_ops.startDevice = NULL; -- g_exported_uvm8_ops.stopDevice = NULL; -- g_exported_uvm8_ops.isrTopHalf = uvm8_isr_top_half; -- - // Register the UVM callbacks with the main GPU driver: - status = uvm_rm_locked_call(nvUvmInterfaceRegisterUvmCallbacks(&g_exported_uvm8_ops)); - if (status != NV_OK) -diff -urp work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c ---- work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-07-16 22:45:59.878812524 +0200 -@@ -368,7 +368,7 @@ void uvm_gpu_semaphore_set_payload(uvm_g - // being optimized out on non-SMP configs (we need them for interacting with - // the GPU correctly even on non-SMP). - mb(); -- ACCESS_ONCE(*semaphore->payload) = payload; -+ ACCESS_ONCE_RW(*semaphore->payload) = payload; - } - - // This function is intended to catch channels which have been left dangling in -diff -urp work.orig/kernel/nvidia-uvm/uvm8_hal.h work/kernel/nvidia-uvm/uvm8_hal.h ---- work.orig/kernel/nvidia-uvm/uvm8_hal.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_hal.h 2016-07-16 22:45:59.878812524 +0200 -@@ -310,7 +310,7 @@ typedef struct - // fault_buffer_ops: id is a hardware class - uvm_fault_buffer_hal_t fault_buffer_ops; - } u; --} uvm_hal_class_ops_t; -+} __do_const uvm_hal_class_ops_t; - - // When UVM next support is enabled support for future chips in the hal is - // enabled by providing additional hal table entries below. -diff -urp work.orig/kernel/nvidia-uvm/uvm8_mmu.h work/kernel/nvidia-uvm/uvm8_mmu.h ---- work.orig/kernel/nvidia-uvm/uvm8_mmu.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_mmu.h 2016-07-16 22:45:59.878812524 +0200 -@@ -24,7 +24,6 @@ - #ifndef __UVM8_MMU_H__ - #define __UVM8_MMU_H__ - --#include "uvm8_forward_decl.h" - #include "uvm8_hal_types.h" - #include "uvm8_pmm_gpu.h" - #include "uvmtypes.h" -diff -urp work.orig/kernel/nvidia-uvm/uvm_common.c work/kernel/nvidia-uvm/uvm_common.c ---- work.orig/kernel/nvidia-uvm/uvm_common.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_common.c 2016-07-16 22:45:59.878812524 +0200 -@@ -51,7 +51,6 @@ - #define UVM_SPIN_LOOP_PRINT_TIMEOUT_SEC 30ULL - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - static char* uvm_driver_mode = "8"; - -@@ -175,8 +174,10 @@ static NV_STATUS uvmSetupGpuProvider(voi - { - NV_STATUS status = NV_OK; - -- g_exportedUvmOps.startDevice = uvm_gpu_event_start_device; -- g_exportedUvmOps.stopDevice = uvm_gpu_event_stop_device; -+ static struct UvmOpsUvmEvents g_exportedUvmOps = { -+ .startDevice = uvm_gpu_event_start_device, -+ .stopDevice = uvm_gpu_event_stop_device, -+ }; - - // call RM to exchange the function pointers. - status = nvUvmInterfaceRegisterUvmCallbacks(&g_exportedUvmOps); -diff -urp work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h work/kernel/nvidia-uvm/uvm_full_fault_buffer.h ---- work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-07-16 22:45:59.878812524 +0200 -@@ -31,6 +31,7 @@ - #define _UVM_FULL_FAULT_BUFFER_H_ - - #include "uvmtypes.h" -+#include "linux/compiler.h" - - #define MAXWELL_FAULT_BUFFER_A (0xb069) - #define MEM_RD32(a) (*(const volatile NvU32 *)(a)) -@@ -303,7 +304,7 @@ typedef struct - NvUvmControlPrefetch_t controlPrefetch; - NvUvmTestFaultBufferOverflow_t testFaultBufferOverflow; - NvUvmClearFaultBufferOverflow_t clearFaultBufferOverflow; --} UvmFaultBufferOps; -+} __no_const UvmFaultBufferOps; - - /****************************************************************************** - uvmfull_fault_buffer_init -diff -urp work.orig/kernel/nvidia-uvm/uvm_linux.h work/kernel/nvidia-uvm/uvm_linux.h ---- work.orig/kernel/nvidia-uvm/uvm_linux.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_linux.h 2016-07-16 22:45:59.882815613 +0200 -@@ -508,7 +508,7 @@ static inline NvU64 NV_GETTIME(void) - - // WRITE_ONCE/READ_ONCE have incompatible definitions across versions, which produces warnings. - // Therefore, we define our own macros --#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE(x) = (val)) -+#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE_RW(x) = (val)) - #define UVM_READ_ONCE(x) ACCESS_ONCE(x) - - // Added in 3.11 diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-pax.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-pax.patch deleted file mode 100644 index bf2013265ad2..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-pax.patch +++ /dev/null @@ -1,391 +0,0 @@ -diff -urp work.orig/kernel/common/inc/nv-linux.h work/kernel/common/inc/nv-linux.h ---- work.orig/kernel/common/inc/nv-linux.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-linux.h 2016-07-16 22:45:59.870806346 +0200 -@@ -1308,6 +1308,9 @@ extern void *nvidia_stack_t_cache; - #define NV_KMEM_CACHE_CREATE(name, type) \ - NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, 0, NULL) - -+#define NV_KMEM_CACHE_CREATE_USERCOPY(name, type) \ -+ NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, SLAB_USERCOPY, NULL) -+ - #define NV_KMEM_CACHE_DESTROY(kmem_cache) \ - kmem_cache_destroy(kmem_cache) - -diff -urp work.orig/kernel/common/inc/nv-modeset-interface.h work/kernel/common/inc/nv-modeset-interface.h ---- work.orig/kernel/common/inc/nv-modeset-interface.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-modeset-interface.h 2016-07-16 22:46:16.223400774 +0200 -@@ -72,7 +72,7 @@ typedef struct { - * mix nvidia and nvidia-modeset kernel modules from different - * releases. - */ -- const char *version_string; -+// const char *version_string; - - /* - * Return system information. -@@ -117,6 +117,6 @@ typedef struct { - - } nvidia_modeset_rm_ops_t; - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops); -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string); - - #endif /* _NV_MODESET_INTERFACE_H_ */ -diff -urp work.orig/kernel/common/inc/nv-register-module.h work/kernel/common/inc/nv-register-module.h ---- work.orig/kernel/common/inc/nv-register-module.h 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/common/inc/nv-register-module.h 2016-07-16 22:45:59.870806346 +0200 -@@ -34,7 +34,7 @@ typedef struct nvidia_module_s { - int (*ioctl)(struct inode *, struct file * file, unsigned int cmd, unsigned long arg); - unsigned int (*poll)(struct file * file, poll_table *wait); - --} nvidia_module_t; -+} __do_const nvidia_module_t; - - int nvidia_register_module(nvidia_module_t *); - int nvidia_unregister_module(nvidia_module_t *); -diff -urp work.orig/kernel/nvidia/nv.c work/kernel/nvidia/nv.c ---- work.orig/kernel/nvidia/nv.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv.c 2016-07-16 22:45:59.874809435 +0200 -@@ -654,7 +654,7 @@ int __init nvidia_init_module(void) - NV_SPIN_LOCK_INIT(&km_lock); - #endif - -- nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name, -+ nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE_USERCOPY(nvidia_stack_cache_name, - nvidia_stack_t); - if (nvidia_stack_t_cache == NULL) - { -diff -urp work.orig/kernel/nvidia/nv-chrdev.c work/kernel/nvidia/nv-chrdev.c ---- work.orig/kernel/nvidia/nv-chrdev.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-chrdev.c 2016-07-16 22:45:59.874809435 +0200 -@@ -20,8 +20,6 @@ int nv_register_chrdev(void *param) - { - nvidia_module_t *module = (nvidia_module_t *)param; - -- module->instance = nv_module_instance; -- - return (nvidia_register_module(module)); - } - -diff -urp work.orig/kernel/nvidia/nv-instance.c work/kernel/nvidia/nv-instance.c ---- work.orig/kernel/nvidia/nv-instance.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-instance.c 2016-07-16 22:45:59.874809435 +0200 -@@ -51,6 +51,7 @@ struct pci_driver nv_pci_driver = { - nvidia_module_t nv_fops = { - .owner = THIS_MODULE, - .module_name = MODULE_NAME, -+ .instance = MODULE_INSTANCE_NUMBER, - .open = nvidia_open, - .close = nvidia_close, - .ioctl = nvidia_ioctl, -diff -urp work.orig/kernel/nvidia/nv-mmap.c work/kernel/nvidia/nv-mmap.c ---- work.orig/kernel/nvidia/nv-mmap.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-mmap.c 2016-07-16 22:45:59.874809435 +0200 -@@ -113,12 +113,12 @@ nvidia_vma_release(struct vm_area_struct - } - - #if defined(NV_VM_OPERATIONS_STRUCT_HAS_ACCESS) --static int -+static ssize_t - nvidia_vma_access( - struct vm_area_struct *vma, - unsigned long addr, - void *buffer, -- int length, -+ size_t length, - int write - ) - { -diff -urp work.orig/kernel/nvidia/nv-modeset-interface.c work/kernel/nvidia/nv-modeset-interface.c ---- work.orig/kernel/nvidia/nv-modeset-interface.c 2016-07-12 06:52:21.000000000 +0200 -+++ work/kernel/nvidia/nv-modeset-interface.c 2016-07-16 22:54:36.567962197 +0200 -@@ -100,10 +100,9 @@ static NvU32 nvidia_modeset_enumerate_gp - return count; - } - --NV_STATUS nvidia_get_rm_ops(nvidia_modeset_rm_ops_t *rm_ops) -+NV_STATUS nvidia_get_rm_ops(const nvidia_modeset_rm_ops_t **rm_ops, const char **version_string) - { -- const nvidia_modeset_rm_ops_t local_rm_ops = { -- .version_string = NV_VERSION_STRING, -+ static const nvidia_modeset_rm_ops_t local_rm_ops = { - .system_info = { - .allow_write_combining = NV_FALSE, - }, -@@ -116,17 +115,26 @@ NV_STATUS nvidia_get_rm_ops(nvidia_modes - .set_callbacks = nvidia_modeset_set_callbacks, - }; - -- if (strcmp(rm_ops->version_string, NV_VERSION_STRING) != 0) -+ static const nvidia_modeset_rm_ops_t local_rm_ops_wc = { -+ .system_info = { -+ .allow_write_combining = NV_TRUE, -+ }, -+ .alloc_stack = nvidia_modeset_rm_ops_alloc_stack, -+ .free_stack = nvidia_modeset_rm_ops_free_stack, -+ .enumerate_gpus = nvidia_modeset_enumerate_gpus, -+ .open_gpu = nvidia_dev_get, -+ .close_gpu = nvidia_dev_put, -+ .op = rm_kernel_rmapi_op, /* provided by nv-kernel.o */ -+ .set_callbacks = nvidia_modeset_set_callbacks, -+ }; -+ -+ if (strcmp(*version_string, NV_VERSION_STRING) != 0) - { -- rm_ops->version_string = NV_VERSION_STRING; -+ *version_string = NV_VERSION_STRING; - return NV_ERR_GENERIC; - } - -- *rm_ops = local_rm_ops; -- -- if (NV_ALLOW_WRITE_COMBINING(NV_MEMORY_TYPE_FRAMEBUFFER)) { -- rm_ops->system_info.allow_write_combining = NV_TRUE; -- } -+ *rm_ops = NV_ALLOW_WRITE_COMBINING(NV_MEMORY_TYPE_FRAMEBUFFER) ? &local_rm_ops_wc : &local_rm_ops; - - return NV_OK; - } -diff -urp work.orig/kernel/nvidia-drm/nvidia-drm-drv.c work/kernel/nvidia-drm/nvidia-drm-drv.c ---- work.orig/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-12 06:53:45.000000000 +0200 -+++ work/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-16 22:45:59.878812524 +0200 -@@ -592,7 +592,7 @@ static const struct drm_ioctl_desc nv_dr - DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED), - }; - --static struct drm_driver nv_drm_driver = { -+static drm_driver_no_const nv_drm_driver __read_only = { - - .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER, - -@@ -649,6 +649,7 @@ static void nvidia_update_drm_driver_fea - return; - } - -+ pax_open_kernel(); - nv_drm_driver.driver_features |= DRIVER_MODESET | DRIVER_ATOMIC; - - nv_drm_driver.master_set = nvidia_drm_master_set; -@@ -657,6 +658,7 @@ static void nvidia_update_drm_driver_fea - nv_drm_driver.dumb_create = nvidia_drm_dumb_create; - nv_drm_driver.dumb_map_offset = nvidia_drm_dumb_map_offset; - nv_drm_driver.dumb_destroy = drm_gem_dumb_destroy; -+ pax_close_kernel(); - - #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - } -diff -urp work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c work/kernel/nvidia-modeset/nvidia-modeset-linux.c ---- work.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-07-12 06:53:46.000000000 +0200 -+++ work/kernel/nvidia-modeset/nvidia-modeset-linux.c 2016-07-16 22:47:09.334133112 +0200 -@@ -317,29 +317,28 @@ static void nvkms_resume(NvU32 gpuId) - * Interface with resman. - *************************************************************************/ - --static nvidia_modeset_rm_ops_t __rm_ops = { 0 }; -+static const nvidia_modeset_rm_ops_t *__rm_ops; - static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { -- nvkms_suspend, -- nvkms_resume -+ .suspend = nvkms_suspend, -+ .resume = nvkms_resume - }; - - static int nvkms_alloc_rm(void) - { - NV_STATUS nvstatus; - int ret; -+ const char *version_string = NV_VERSION_STRING; - -- __rm_ops.version_string = NV_VERSION_STRING; -- -- nvstatus = nvidia_get_rm_ops(&__rm_ops); -+ nvstatus = nvidia_get_rm_ops(&__rm_ops, &version_string); - - if (nvstatus != NV_OK) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " - "nvidia.ko(%s) nvidia-modeset.ko(%s)\n", -- __rm_ops.version_string, NV_VERSION_STRING); -+ version_string, NV_VERSION_STRING); - return -EINVAL; - } - -- ret = __rm_ops.set_callbacks(&nvkms_rm_callbacks); -+ ret = __rm_ops->set_callbacks(&nvkms_rm_callbacks); - if (ret < 0) { - printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); - return ret; -@@ -350,20 +349,20 @@ static int nvkms_alloc_rm(void) - - static void nvkms_free_rm(void) - { -- __rm_ops.set_callbacks(NULL); -+ __rm_ops->set_callbacks(NULL); - } - - void NVKMS_API_CALL nvkms_call_rm(void *ops) - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.op(stack, ops); -+ __rm_ops->op(stack, ops); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - /************************************************************************* -@@ -685,13 +684,13 @@ NvBool NVKMS_API_CALL nvkms_open_gpu(NvU - nvidia_modeset_stack_ptr stack = NULL; - NvBool ret; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return NV_FALSE; - } - -- ret = __rm_ops.open_gpu(gpuId, stack) == 0; -+ ret = __rm_ops->open_gpu(gpuId, stack) == 0; - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - - return ret; - } -@@ -700,23 +699,23 @@ void NVKMS_API_CALL nvkms_close_gpu(NvU3 - { - nvidia_modeset_stack_ptr stack = NULL; - -- if (__rm_ops.alloc_stack(&stack) != 0) { -+ if (__rm_ops->alloc_stack(&stack) != 0) { - return; - } - -- __rm_ops.close_gpu(gpuId, stack); -+ __rm_ops->close_gpu(gpuId, stack); - -- __rm_ops.free_stack(stack); -+ __rm_ops->free_stack(stack); - } - - NvU32 NVKMS_API_CALL nvkms_enumerate_gpus(nv_gpu_info_t *gpu_info) - { -- return __rm_ops.enumerate_gpus(gpu_info); -+ return __rm_ops->enumerate_gpus(gpu_info); - } - - NvBool NVKMS_API_CALL nvkms_allow_write_combining(void) - { -- return __rm_ops.system_info.allow_write_combining; -+ return __rm_ops->system_info.allow_write_combining; - } - - /************************************************************************* -diff -urp work.orig/kernel/nvidia-uvm/uvm8_global.c work/kernel/nvidia-uvm/uvm8_global.c ---- work.orig/kernel/nvidia-uvm/uvm8_global.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_global.c 2016-07-16 22:45:59.878812524 +0200 -@@ -35,17 +35,17 @@ - #include "nv_uvm_interface.h" - - uvm_global_t g_uvm_global; --static struct UvmOpsUvmEvents g_exported_uvm8_ops; -+static struct UvmOpsUvmEvents g_exported_uvm8_ops = { -+ .startDevice = NULL, -+ .stopDevice = NULL, -+ .isrTopHalf = uvm8_isr_top_half, -+}; - static bool g_ops_registered = false; - - static NV_STATUS uvm8_register_callbacks(void) - { - NV_STATUS status = NV_OK; - -- g_exported_uvm8_ops.startDevice = NULL; -- g_exported_uvm8_ops.stopDevice = NULL; -- g_exported_uvm8_ops.isrTopHalf = uvm8_isr_top_half; -- - // Register the UVM callbacks with the main GPU driver: - status = uvm_rm_locked_call(nvUvmInterfaceRegisterUvmCallbacks(&g_exported_uvm8_ops)); - if (status != NV_OK) -diff -urp work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c ---- work.orig/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_gpu_semaphore.c 2016-07-16 22:45:59.878812524 +0200 -@@ -368,7 +368,7 @@ void uvm_gpu_semaphore_set_payload(uvm_g - // being optimized out on non-SMP configs (we need them for interacting with - // the GPU correctly even on non-SMP). - mb(); -- ACCESS_ONCE(*semaphore->payload) = payload; -+ ACCESS_ONCE_RW(*semaphore->payload) = payload; - } - - // This function is intended to catch channels which have been left dangling in -diff -urp work.orig/kernel/nvidia-uvm/uvm8_hal.h work/kernel/nvidia-uvm/uvm8_hal.h ---- work.orig/kernel/nvidia-uvm/uvm8_hal.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_hal.h 2016-07-16 22:45:59.878812524 +0200 -@@ -310,7 +310,7 @@ typedef struct - // fault_buffer_ops: id is a hardware class - uvm_fault_buffer_hal_t fault_buffer_ops; - } u; --} uvm_hal_class_ops_t; -+} __do_const uvm_hal_class_ops_t; - - // When UVM next support is enabled support for future chips in the hal is - // enabled by providing additional hal table entries below. -diff -urp work.orig/kernel/nvidia-uvm/uvm8_mmu.h work/kernel/nvidia-uvm/uvm8_mmu.h ---- work.orig/kernel/nvidia-uvm/uvm8_mmu.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm8_mmu.h 2016-07-16 22:45:59.878812524 +0200 -@@ -24,7 +24,6 @@ - #ifndef __UVM8_MMU_H__ - #define __UVM8_MMU_H__ - --#include "uvm8_forward_decl.h" - #include "uvm8_hal_types.h" - #include "uvm8_pmm_gpu.h" - #include "uvmtypes.h" -diff -urp work.orig/kernel/nvidia-uvm/uvm_common.c work/kernel/nvidia-uvm/uvm_common.c ---- work.orig/kernel/nvidia-uvm/uvm_common.c 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_common.c 2016-07-16 22:45:59.878812524 +0200 -@@ -51,7 +51,6 @@ - #define UVM_SPIN_LOOP_PRINT_TIMEOUT_SEC 30ULL - - static dev_t g_uvmBaseDev; --struct UvmOpsUvmEvents g_exportedUvmOps; - - static char* uvm_driver_mode = "8"; - -diff -urp work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h work/kernel/nvidia-uvm/uvm_full_fault_buffer.h ---- work.orig/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_full_fault_buffer.h 2016-07-16 22:45:59.878812524 +0200 -@@ -31,6 +31,7 @@ - #define _UVM_FULL_FAULT_BUFFER_H_ - - #include "uvmtypes.h" -+#include "linux/compiler.h" - - #define MAXWELL_FAULT_BUFFER_A (0xb069) - #define MEM_RD32(a) (*(const volatile NvU32 *)(a)) -@@ -303,7 +304,7 @@ typedef struct - NvUvmControlPrefetch_t controlPrefetch; - NvUvmTestFaultBufferOverflow_t testFaultBufferOverflow; - NvUvmClearFaultBufferOverflow_t clearFaultBufferOverflow; --} UvmFaultBufferOps; -+} __no_const UvmFaultBufferOps; - - /****************************************************************************** - uvmfull_fault_buffer_init -diff -urp work.orig/kernel/nvidia-uvm/uvm_linux.h work/kernel/nvidia-uvm/uvm_linux.h ---- work.orig/kernel/nvidia-uvm/uvm_linux.h 2016-07-12 06:52:17.000000000 +0200 -+++ work/kernel/nvidia-uvm/uvm_linux.h 2016-07-16 22:45:59.882815613 +0200 -@@ -508,7 +508,7 @@ static inline NvU64 NV_GETTIME(void) - - // WRITE_ONCE/READ_ONCE have incompatible definitions across versions, which produces warnings. - // Therefore, we define our own macros --#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE(x) = (val)) -+#define UVM_WRITE_ONCE(x, val) (ACCESS_ONCE_RW(x) = (val)) - #define UVM_READ_ONCE(x) ACCESS_ONCE(x) - - // Added in 3.11 diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-profiles-rc.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-profiles-rc.patch deleted file mode 100644 index b29895c3dff6..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-367.57-profiles-rc.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/nvidia-application-profiles-367.57-rc -+++ b/nvidia-application-profiles-367.57-rc -@@ -44,7 +44,7 @@ - { - "name" : "NamedVertexAttributesApplyDivisor", - "settings" : [ "GL23cd0e", 1 ] -- }, -+ } - ], - "rules" : [ - { diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-370.28-profiles-rc.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-370.28-profiles-rc.patch deleted file mode 100644 index cec890b28ccf..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-370.28-profiles-rc.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/nvidia-application-profiles-370.28-rc -+++ b/nvidia-application-profiles-370.28-rc -@@ -44,7 +44,7 @@ - { - "name" : "NamedVertexAttributesApplyDivisor", - "settings" : [ "GL23cd0e", 1 ] -- }, -+ } - ], - "rules" : [ - { diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-settings.desktop b/x11-drivers/nvidia-drivers/files/nvidia-drivers-settings.desktop deleted file mode 100644 index 773a5af24668..000000000000 --- a/x11-drivers/nvidia-drivers/files/nvidia-drivers-settings.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Type=Application -Name=NVIDIA X Server Settings -Comment=Configure NVIDIA X Server Settings -Exec=/opt/bin/nvidia-settings -Icon=nvidia-drivers-settings -Categories=System;Settings; |