NVIDIA – Driver for Kernel 4.7.. Patch for 4.8 Still Works
NVIDIA have released their latest driver – 370.23 – which (finally!) works with Kernel 4.7, without any patches..
The driver fails to compile with Kernel 4.8, but the previous 367.35 patch fixes this (See article here: http://rglinuxtech.com/?p=1788).
Tested with 4.8-rc2:
.............. ld -r -o /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-modeset/nv-modeset-interface.o /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-modeset/nvidia-modeset-linux.o Building modules, stage 2. MODPOST 4 modules CC /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-drm.mod.o LD [M] /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-drm.ko CC /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-modeset.mod.o LD [M] /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-modeset.ko CC /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-uvm.mod.o LD [M] /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia-uvm.ko CC /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia.mod.o LD [M] /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-370.23-patched/kernel/nvidia.ko make[2]: Leaving directory '/usr/src/linux-4.8-rc2' make[1]: Leaving directory '/usr/src/linux-4.8-rc2'
Robert Gadsdon. August 16, 2016.
no it doesn’t, build failure reported on rc4+
Used this patch on 367.44 Driver and on 370.23 Beta Driver. Both drivers installed on 4.8 Kernel
— NVIDIA-Linux-x86_64-370.23/kernel/nvidia-drm/nvidia-drm-drv.c 2016-08-09 01:43:19.000000000 +0200
+++ NVIDIA-Linux-x86_64-370.23.patched/kernel/nvidia-drm/nvidia-drm-drv.c 2016-08-16 20:15:01.058822359 +0200
@@ -37,6 +37,7 @@
#include “nvidia-drm-ioctl.h”
#include
+#include
#include
@@ -420,7 +421,7 @@
static
void nvidia_drm_master_drop(struct drm_device *dev,
– struct drm_file *file_priv, bool from_release)
+ struct drm_file *file_priv)
{
struct nvidia_drm_device *nv_dev = dev->dev_private;
int ret;
@@ -453,7 +454,7 @@
mutex_lock(&dev->master_mutex);
if (!file_priv->is_master ||
– !file_priv->minor->master)
+ !file_priv->master)
{
goto done;
}
@@ -474,7 +475,7 @@
* NVKMS modeset ownership, because nvidia_drm_master_set()’s call to
* grabOwnership() will fail.
*/
– drm_master_put(&file_priv->minor->master);
+ drm_master_put(&file_priv->master);
file_priv->is_master = 0;
ret = 0;
— NVIDIA-Linux-x86_64-370.23/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-08-09 01:43:19.000000000 +0200
+++ NVIDIA-Linux-x86_64-370.23.patched/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-08-16 20:15:01.058822359 +0200
@@ -675,7 +675,7 @@
goto failed;
}
– drm_atomic_helper_swap_state(dev, state);
+ drm_atomic_helper_swap_state(state, true);
nvidia_drm_update_head_mode_config(state, requested_config);