x11-drivers/nvidia-drivers-340.65 patch for 3.18 kernels
This commit is contained in:
2
x11-drivers/nvidia-drivers/files/95-nvidia-settings
Normal file
2
x11-drivers/nvidia-drivers/files/95-nvidia-settings
Normal file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
/opt/bin/nvidia-settings --load-config-only
|
||||
14
x11-drivers/nvidia-drivers/files/nvidia-169.07
Normal file
14
x11-drivers/nvidia-drivers/files/nvidia-169.07
Normal file
@@ -0,0 +1,14 @@
|
||||
# Nvidia drivers support
|
||||
alias char-major-195 nvidia
|
||||
alias /dev/nvidiactl char-major-195
|
||||
|
||||
# To tweak the driver the following options can be used, note that
|
||||
# you should be careful, as it could cause instability!! For more
|
||||
# options see /usr/share/doc/PACKAGE/README
|
||||
#
|
||||
# !!! SECURITY WARNING !!!
|
||||
# DO NOT MODIFY OR REMOVE THE DEVICE FILE RELATED OPTIONS UNLESS YOU KNOW
|
||||
# WHAT YOU ARE DOING.
|
||||
# ONLY ADD TRUSTED USERS TO THE VIDEO GROUP, THESE USERS MAY BE ABLE TO CRASH,
|
||||
# COMPROMISE, OR IRREPARABLY DAMAGE THE MACHINE.
|
||||
options nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=VIDEOGID NVreg_ModifyDeviceFiles=1
|
||||
@@ -0,0 +1,52 @@
|
||||
--- a/kernel/nv-linux.h
|
||||
+++ b/kernel/nv-linux.h
|
||||
@@ -757,16 +757,16 @@
|
||||
|
||||
#if defined(NV_KMEM_CACHE_CREATE_PRESENT)
|
||||
#if (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 6)
|
||||
-#define NV_KMEM_CACHE_CREATE(kmem_cache, name, type) \
|
||||
+#define NV_KMEM_CACHE_CREATE(kmem_cache, name, type, flags) \
|
||||
{ \
|
||||
kmem_cache = kmem_cache_create(name, sizeof(type), \
|
||||
- 0, 0, NULL, NULL); \
|
||||
+ 0, flags, NULL, NULL); \
|
||||
}
|
||||
#elif (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 5)
|
||||
-#define NV_KMEM_CACHE_CREATE(kmem_cache, name, type) \
|
||||
+#define NV_KMEM_CACHE_CREATE(kmem_cache, name, type, flags) \
|
||||
{ \
|
||||
kmem_cache = kmem_cache_create(name, sizeof(type), \
|
||||
- 0, 0, NULL); \
|
||||
+ 0, flags, NULL); \
|
||||
}
|
||||
#else
|
||||
#error "NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT value unrecognized!"
|
||||
--- a/kernel/nv.c
|
||||
+++ b/kernel/nv.c
|
||||
@@ -794,7 +794,7 @@
|
||||
NV_SPIN_LOCK_INIT(&km_lock);
|
||||
#endif
|
||||
|
||||
- NV_KMEM_CACHE_CREATE(nv_stack_t_cache, NV_STACK_CACHE_STR, nv_stack_t);
|
||||
+ NV_KMEM_CACHE_CREATE(nv_stack_t_cache, NV_STACK_CACHE_STR, nv_stack_t, SLAB_USERCOPY);
|
||||
if (nv_stack_t_cache == NULL)
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: stack cache allocation failed!\n");
|
||||
@@ -924,7 +924,7 @@
|
||||
nv->os_state = (void *) &nv_ctl_device;
|
||||
nv_lock_init_locks(nv);
|
||||
|
||||
- NV_KMEM_CACHE_CREATE(nv_pte_t_cache, NV_PTE_CACHE_STR, nv_pte_t);
|
||||
+ NV_KMEM_CACHE_CREATE(nv_pte_t_cache, NV_PTE_CACHE_STR, nv_pte_t, 0);
|
||||
if (nv_pte_t_cache == NULL)
|
||||
{
|
||||
rc = -ENOMEM;
|
||||
@@ -935,7 +935,7 @@
|
||||
if (NV_BUILD_MODULE_INSTANCES == 0)
|
||||
{
|
||||
NV_KMEM_CACHE_CREATE(nvidia_p2p_page_t_cache, "nvidia_p2p_page_t",
|
||||
- nvidia_p2p_page_t);
|
||||
+ nvidia_p2p_page_t, 0);
|
||||
if (nvidia_p2p_page_t_cache == NULL)
|
||||
{
|
||||
rc = -ENOMEM;
|
||||
@@ -0,0 +1,25 @@
|
||||
--- a/kernel/uvm/nvidia_uvm_common.c
|
||||
+++ b/kernel/uvm/nvidia_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);
|
||||
@@ -0,0 +1,48 @@
|
||||
--- kernel/nv-drm.c~ 2014-11-08 00:57:53.000000000 +0100
|
||||
+++ kernel/nv-drm.c 2014-11-13 21:03:37.589650873 +0100
|
||||
@@ -128,6 +128,10 @@ static struct drm_driver nv_drm_driver =
|
||||
.gem_prime_vmap = nv_gem_prime_vmap,
|
||||
.gem_prime_vunmap = nv_gem_prime_vunmap,
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0)
|
||||
+ .set_busid = drm_pci_set_busid,
|
||||
+#endif
|
||||
+
|
||||
.name = "nvidia-drm",
|
||||
.desc = "NVIDIA DRM driver",
|
||||
.date = "20130102",
|
||||
diff --git a/nv-frontend.c~ b/nv-frontend.c
|
||||
index c8c8af1..00f0973 100644
|
||||
--- kernel/nv-frontend.c~
|
||||
+++ kernel/nv-frontend.c
|
||||
@@ -327,7 +327,7 @@ long nvidia_frontend_unlocked_ioctl(
|
||||
unsigned long i_arg
|
||||
)
|
||||
{
|
||||
- return nvidia_frontend_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
|
||||
+ return nvidia_frontend_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
|
||||
}
|
||||
|
||||
long nvidia_frontend_compat_ioctl(
|
||||
@@ -336,7 +336,7 @@ long nvidia_frontend_compat_ioctl(
|
||||
unsigned long i_arg
|
||||
)
|
||||
{
|
||||
- return nvidia_frontend_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
|
||||
+ return nvidia_frontend_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
|
||||
}
|
||||
|
||||
int nvidia_frontend_mmap(
|
||||
diff --git a/nv.c~ b/nv.c
|
||||
index 6b31000..3db114e 100644
|
||||
--- kernel/nv.c~
|
||||
+++ kernel/nv.c
|
||||
@@ -1796,7 +1796,7 @@ nvidia_unlocked_ioctl(
|
||||
unsigned long i_arg
|
||||
)
|
||||
{
|
||||
- return nvidia_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
|
||||
+ return nvidia_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -0,0 +1,7 @@
|
||||
[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;
|
||||
@@ -0,0 +1,8 @@
|
||||
# run-time configuration file for /etc/init.d/nvidia-persistenced
|
||||
|
||||
# NVPD_USER: The user nvidia-persistenced is intended to run for
|
||||
NVPD_USER=""
|
||||
|
||||
# ARGS: Additional arguments to set the default persistence mode
|
||||
# (see nvidia-persistenced(1))
|
||||
ARGS=""
|
||||
25
x11-drivers/nvidia-drivers/files/nvidia-persistenced.init
Executable file
25
x11-drivers/nvidia-drivers/files/nvidia-persistenced.init
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/sbin/runscript
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/files/nvidia-persistenced.init,v 1.2 2014/09/19 22:09:28 jer Exp $
|
||||
|
||||
pidfile="/var/run/nvidia-persistenced/nvidia-persistenced.pid"
|
||||
|
||||
start() {
|
||||
if ! [ "${NVPD_USER}x" = x ]; then
|
||||
ebegin "Starting nvidia-persistenced for ${NVPD_USER}"
|
||||
NVPD_USER_ARG="--user ${NVPD_USER}"
|
||||
else
|
||||
ebegin "Starting nvidia-persistenced"
|
||||
fi
|
||||
start-stop-daemon --start --quiet --pidfile ${pidfile} \
|
||||
--background --exec /opt/bin/nvidia-persistenced \
|
||||
-- ${NVPD_USER_ARG} ${ARGS}
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping nvidia-persistenced"
|
||||
start-stop-daemon --stop --quiet --pidfile ${pidfile}
|
||||
eend $?
|
||||
}
|
||||
25
x11-drivers/nvidia-drivers/files/nvidia-smi.init
Normal file
25
x11-drivers/nvidia-drivers/files/nvidia-smi.init
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/sbin/runscript
|
||||
# Copyright 1999-2013 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/files/nvidia-smi.init,v 1.2 2013/05/09 16:32:00 jer Exp $
|
||||
|
||||
pidfile="/run/nvidia-smi.pid"
|
||||
|
||||
depend() {
|
||||
after modules
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting NVIDIA System Management Interface"
|
||||
rm -f ${pidfile}
|
||||
start-stop-daemon --start --quiet --pidfile ${pidfile} \
|
||||
--make-pidfile --background --exec /opt/bin/nvidia-smi -- \
|
||||
-q -l 300
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping NVIDIA System Management Interface"
|
||||
start-stop-daemon --stop --quiet --pidfile ${pidfile}
|
||||
eend $?
|
||||
}
|
||||
17
x11-drivers/nvidia-drivers/files/nvidia-udev.sh
Normal file
17
x11-drivers/nvidia-drivers/files/nvidia-udev.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Invalid args" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
add|ADD)
|
||||
/opt/bin/nvidia-smi > /dev/null
|
||||
;;
|
||||
remove|REMOVE)
|
||||
rm -f /dev/nvidia*
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
3
x11-drivers/nvidia-drivers/files/nvidia-uvm.conf
Normal file
3
x11-drivers/nvidia-drivers/files/nvidia-uvm.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
# Nvidia UVM support
|
||||
|
||||
remove nvidia modprobe -r --ignore-remove nvidia-uvm nvidia
|
||||
6
x11-drivers/nvidia-drivers/files/nvidia.udev-rule
Normal file
6
x11-drivers/nvidia-drivers/files/nvidia.udev-rule
Normal file
@@ -0,0 +1,6 @@
|
||||
ACTION=="add", DEVPATH=="/module/nvidia", SUBSYSTEM=="module", RUN+="nvidia-udev.sh $env{ACTION}"
|
||||
# Previously the ACTION was "add|remove" but one user on bug #376527 had a
|
||||
# problem until he recompiled udev-171-r5, which is one of the versions I
|
||||
# tested with and it was fine. I'm breaking the rules out just to be safe
|
||||
# so someone else doesn't have an issue
|
||||
ACTION=="remove", DEVPATH=="/module/nvidia", SUBSYSTEM=="module", RUN+="nvidia-udev.sh $env{ACTION}"
|
||||
Reference in New Issue
Block a user