commit:     f7218d0969f77eb765e88bc4f581fa5a818498ff
Author:     Zero_Chaos <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 18 18:23:26 2015 +0000
Commit:     Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Fri Sep 18 18:23:26 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f7218d09

x11-drivers/nvidia-drivers: fix missing dep 
(/usr/lib64/libnvidia-gtk3.so.355.11 links to /usr/lib64/libcairo.so.2) and pax 
patch wrt bug #557128

Package-Manager: portage-2.2.20.1

 .../files/nvidia-drivers-355.06-pax.patch          | 102 +++++++++++++++++++++
 .../nvidia-drivers/nvidia-drivers-355.11.ebuild    |   4 +-
 2 files changed, 104 insertions(+), 2 deletions(-)

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
new file mode 100644
index 0000000..cc5ebdf
--- /dev/null
+++ b/x11-drivers/nvidia-drivers/files/nvidia-drivers-355.06-pax.patch
@@ -0,0 +1,102 @@
+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/nvidia-drivers-355.11.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11.ebuild
index 102dce3..8fb9df0 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-355.11.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11.ebuild
@@ -35,6 +35,7 @@ REQUIRED_USE="
 
 COMMON="
        app-eselect/eselect-opencl
+       gtk3? ( x11-libs/cairo )
        kernel_linux? ( >=sys-libs/glibc-2.6.1 )
        X? (
                >=app-eselect/eselect-opengl-1.0.9
@@ -168,8 +169,7 @@ src_prepare() {
                ewarn "Using PAX patches is not supported. You will be asked to"
                ewarn "use a standard kernel should you have issues. Should you"
                ewarn "need support with these patches, contact the PaX team."
-               epatch "${FILESDIR}"/${PN}-346.16-pax-usercopy.patch
-               epatch "${FILESDIR}"/${PN}-346.16-pax-constify.patch
+               epatch "${FILESDIR}"/${PN}-355.06-pax.patch
        fi
 
        # Allow user patches so they can support RC kernels and whatever else

Reply via email to