diff --git a/kernel/drivers/module-nvidia-current/actions.py b/kernel/drivers/module-nvidia-current/actions.py
old mode 100644
new mode 100755
index 7c38889227..1b38d32c3d
--- a/kernel/drivers/module-nvidia-current/actions.py
+++ b/kernel/drivers/module-nvidia-current/actions.py
@@ -22,19 +22,21 @@ nvlibdir = "%s/%s" % (libdir, driver_dir_name)
xorglibdir= "%s/xorg" % libdir
def setup():
- shelltools.system("sh NVIDIA-Linux-%s-%s.run -x --target tmp"
- % (arch, get.srcVERSION()))
+ shelltools.system("sh NVIDIA-Linux-x86_64-%s.run -x --target tmp"
+ % get.srcVERSION())
shelltools.move("tmp/*", ".")
#shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch")
#shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch")
+ #shelltools.system("patch -p1 < header-fix.patch")
+
# Our libc is TLS enabled so use TLS library
#shelltools.unlink("*-tls.so*")
#shelltools.move("tls/*", ".")
# xorg-server provides libwfb.so
- shelltools.unlink("libnvidia-wfb.so.*")
+ #shelltools.unlink("libnvidia-wfb.so.*")
shelltools.echo("ld.so.conf", nvlibdir)
shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
@@ -46,11 +48,8 @@ def build():
shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
shelltools.cd("kernel")
-
- autotools.make("module")
+ autotools.make("module")
- #shelltools.cd("uvm")
- #autotools.make("module")
def install():
@@ -58,6 +57,9 @@ def install():
# Kernel driver
pisitools.insinto("/lib/modules/%s/extra" % KDIR,
"kernel/nvidia.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-drm.ko")
pisitools.insinto("/lib/modules/%s/extra" % KDIR,
"kernel/nvidia-uvm.ko")
@@ -84,89 +86,188 @@ def install():
### Libraries
- # OpenGl library
- pisitools.dolib("libGL.so.%s" % version, nvlibdir)
- pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
- pisitools.dolib("libGL.so.%s" % version, libdir)
- pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
- pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so.1" % nvlibdir)
- pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
- pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
- pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
-
- # OpenCL
- pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
- pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
- pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+ # 32-bit libraries
+ if get.buildTYPE() == 'emul32':
+ pisitools.dolib("32/libGL.so.1.7.0", nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1.2.0" % nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1" % nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so" % nvlibdir)
+
+ pisitools.dolib("32/libEGL.so.1.1.0", nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.1.0" % libdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.0.0" % nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1" % nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so" % nvlibdir)
+
+ pisitools.dolib("32/libEGL_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libEGL_nvidia.so.%s" % version, "%s/libEGL_nvidia.so.1" %libdir)
+ pisitools.dosym("libEGL_nvidia.so.%s" % version, "%s/libEGL_nvidia.so" %libdir)
+
+ pisitools.dolib("32/libGLESv1_CM_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("32/libGLESv2_nvidia.so.%s" % version, libdir)
+
+ pisitools.dolib("32/libnvidia-compiler.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
+
+ #pisitools.dolib("32/libOpenCL.so.1.0.0", libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
+
+ pisitools.dolib("32/libnvidia-opencl.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
+ pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
+
+ pisitools.dolib("32/libcuda.so.%s" % version, libdir)
+ pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
+ pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
+
+ pisitools.dolib("32/libnvcuvid.so.%s" % version, libdir)
+ pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
+ pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
+
+ pisitools.dolib("32/libnvidia-ml.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
+
+ for lib in ("eglcore", "encode", "fatbinaryloader", "fbc", "glcore", "glsi", \
+ "glvkspirv", "ifr", "opticalflow", "ptxjitcompiler", "tls", "allocator" ):
+ pisitools.dolib("32/libnvidia-%s.so.%s" % (lib, version), libdir)
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
+
+ pisitools.dolib("32/libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
+ pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
+
- pisitools.dolib("libOpenCL.so.1.0.0", libdir)
- pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
- pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
-
- pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
- pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
- pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
-
+ pisitools.dolib("32/libGLX_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so" % libdir)
+
+ pisitools.dolib("32/libGLdispatch.so.0", libdir)
+ pisitools.dosym("libGLdispatch.so.0", "%s/ibGLdispatch.so" % libdir)
+
+ pisitools.dolib("32/libGLX.so.0", libdir)
+ pisitools.dosym("libGLX.so.0", "%s/libGLX.so" % libdir)
+
+ pisitools.dolib("32/libOpenGL.so.0", libdir)
+ pisitools.dosym("libOpenGL.so.0", "%s/libOpenGL.so" % libdir)
+
+ else:
+ # OpenGl library
+ pisitools.dolib("libGL.so.1.7.0", nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1.2.0" % nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1" % nvlibdir)
+ pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so" % nvlibdir)
+
+ pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.1.0" % libdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.0.0" % nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1" % nvlibdir)
+ #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so" % nvlibdir)
+ pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libEGL.so.%s" % version, libdir)
+
+ pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
+
+ pisitools.dolib("libGLdispatch.so.0", libdir)
+ pisitools.dosym("libGLdispatch.so.0", "%s/libGLdispatch.so" % libdir)
+
+ pisitools.dolib("libGLX.so.0", libdir)
+ pisitools.dosym("libGLX.so.0", "%s/libGLX.so" % libdir)
+
+ pisitools.dolib("libOpenGL.so.0", libdir)
+ pisitools.dosym("libOpenGL.so.0", "%s/libOpenGL.so" % libdir)
+
+ # OpenCL
+ pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
+ pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
+
+ #pisitools.dolib("libOpenCL.so.1.0.0", libdir)
+ #pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
+
+ pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
+ pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
+
# CUDA
- pisitools.dolib("libcuda.so.%s" % version, libdir)
- pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
- pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
-
- pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
- pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
- pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
-
- # NVML
- # Provides programmatic access to static information and monitoring
- # data for NVIDIA GPUs, as well as limited managment capabilities
- pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
- pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
-
- pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
- pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
-
+ pisitools.dolib("libcuda.so.%s" % version, libdir)
+ pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
+ pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
+
+ pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
+ pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
+ pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
+
+ # NVML
+ # Provides programmatic access to static information and monitoring
+ # data for NVIDIA GPUs, as well as limited managment capabilities
+ pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
+
+ pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
+
+ pisitools.dolib("libnvoptix.so.%s" % version, libdir)
+ pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so.1" % libdir)
+ pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so" % libdir)
+ pisitools.dolib("libnvidia-egl-wayland.so.1.1.4", libdir)
+ pisitools.dosym("libnvidia-egl-wayland.so.1.1.4", "%s/libnvidia-egl-wayland.so.1" % libdir)
+ pisitools.dosym("libnvidia-egl-wayland.so.1.1.4", "%s/libnvidia-egl-wayland.so" % libdir)
+
+ # OpenGL core library and others
+ for lib in ("allocator", "cbl", "eglcore", "encode", "fatbinaryloader", "fbc", "glcore", "glsi", \
+ "glvkspirv", "ifr", "opticalflow", "ptxjitcompiler", "rtcore", "tls" ):
+ pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
- # OpenGL core library and others
- for lib in ("glcore", "tls", "encode", "fbc", "glsi", "ifr", "eglcore"):
- pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
- pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+ # VDPAU driver
+ pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
+ pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
- # VDPAU driver
- pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
- pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
-
- # nvidia-tls library
- pisitools.dolib("libnvidia-tls.so.%s" % version, libdir)
- pisitools.dolib("tls/libnvidia-tls.so.%s" % version, "%s/tls" % libdir)
-
- # X modules
- pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
- pisitools.dolib("libglx.so.%s" % version, "%s/modules/extensions" % xorglibdir)
- pisitools.dosym("libglx.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
-
- pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
- pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
-
- # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
- pisitools.dolib("libnvidia-ptxjitcompiler.so.%s" % version, libdir)
-
- # Fat (multiarchitecture) binary loader
- pisitools.dolib("libnvidia-fatbinaryloader.so.%s" % version, libdir)
-
- pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
- # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
+ # X modules
+ pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
+ pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions" % nvlibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions/libglx.so.1" % nvlibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions/libglx.so" % nvlibdir)
+ pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions" % xorglibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
+
+ # Vulkan driver
+ pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so" % libdir)
+ pisitools.insinto("/etc/vulkan/icd.d", "nvidia_icd.json")
+ pisitools.insinto("/etc/vulkan/icd.d", "nvidia_layers.json")
+
+ pisitools.insinto("/usr/share/glvnd/egl_vendor.d", "10_nvidia.json")
+
+ #pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
+ # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
# pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
- pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
+ pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
+
+ pisitools.dolib("libnvidia-gtk2.so.%s" % version, libdir)
+ pisitools.dolib("libnvidia-gtk3.so.%s" % version, libdir)
+
+
- pisitools.dolib("libnvidia-gtk2.so.%s" % version, libdir)
- pisitools.dolib("libnvidia-gtk3.so.%s" % version, libdir)
# Exit time for emul32 build
- if get.buildTYPE() == 'emul32':
- pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
- return
+ #if get.buildTYPE() == 'emul32':
+ #pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
+ #return
pisitools.insinto(datadir, "ld.so.conf")
pisitools.insinto(datadir, "XvMCConfig")
diff --git a/kernel/drivers/module-nvidia-current/files/NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch b/kernel/drivers/module-nvidia-current/files/NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia-current/files/NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch b/kernel/drivers/module-nvidia-current/files/NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia-current/files/modprobe.conf b/kernel/drivers/module-nvidia-current/files/modprobe.conf
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia-current/files/nvidia-settings.desktop b/kernel/drivers/module-nvidia-current/files/nvidia-settings.desktop
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia-current/pspec.xml b/kernel/drivers/module-nvidia-current/pspec.xml
index a22192d392..3b7dbc8ef2 100644
--- a/kernel/drivers/module-nvidia-current/pspec.xml
+++ b/kernel/drivers/module-nvidia-current/pspec.xml
@@ -11,14 +11,13 @@
NVIDIA
NVIDIA drivers for GeForce 6xxx and newer GPUs
NVIDIA graphics drivers provide optimized 2D/3D performance.
- http://download.nvidia.com/XFree86/Linux-x86/390.116/NVIDIA-Linux-x86-390.116.run
- http://download.nvidia.com/XFree86/Linux-x86_64/390.116/NVIDIA-Linux-x86_64-390.116.run
-
+ http://http.download.nvidia.com/XFree86/Linux-x86_64/440.36/NVIDIA-Linux-x86_64-440.44.run
+
- kernel-module-headers
+ kernel-module-headers
libX11-devel
gtk2-devel
gtk3-devel
@@ -30,7 +29,7 @@
driver
Kernel module for current NVIDIA graphics driver releases
- kernel
+ kernel
@@ -164,6 +163,13 @@
+
+ 2019-12-28
+ 440.44
+ Version bump
+ İdris Kalp
+ idriskalp@gmail.com
+
2019-08-14
390.116
diff --git a/kernel/drivers/module-nvidia304/files/NVIDIA-Linux-x86_64-304.125-kernel-3.19.patch b/kernel/drivers/module-nvidia304/files/NVIDIA-Linux-x86_64-304.125-kernel-3.19.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia304/files/kernel-4.14.patch b/kernel/drivers/module-nvidia304/files/kernel-4.14.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia304/files/linux-4.6.patch b/kernel/drivers/module-nvidia304/files/linux-4.6.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia304/files/linux-5.3.patch b/kernel/drivers/module-nvidia304/files/linux-5.3.patch
new file mode 100755
index 0000000000..8b636324b8
--- /dev/null
+++ b/kernel/drivers/module-nvidia304/files/linux-5.3.patch
@@ -0,0 +1,78 @@
+--- kernel/os-interface.c 2017-09-14 23:51:09.000000000 +0300
++++ kernel/os-interface.c 2019-11-05 19:23:48.332089532 +0300
+@@ -24,6 +24,7 @@
+
+ #include "os-interface.h"
+ #include "nv-linux.h"
++#include
+
+ void NV_API_CALL os_disable_preemption(void)
+ {
+
+--- kernel/os-interface.c 2019-11-05 19:34:40.868104129 +0300
++++ kernel/os-interface.c 2019-11-05 19:38:43.529109557 +0300
+@@ -26,6 +26,14 @@
+ #include "nv-linux.h"
+ #include
+
++void do_gettimeofday(struct timeval *tv)
++{
++struct timespec64 ts;
++ktime_get_real_ts64(&ts);
++tv->tv_sec = ts.tv_sec;
++tv->tv_usec = ts.tv_nsec;
++}
++
+ void NV_API_CALL os_disable_preemption(void)
+ {
+ #if defined(preempt_disable)
+diff --git kernel/nv-linux.h kernel/nv-linux.h
+index 4043bf1..62f0874 100644
+--- kernel/nv-linux.h
++++ kernel/nv-linux.h
+@@ -877,12 +877,21 @@ extern void *nv_stack_t_cache;
+ __ret; \
+ })
+ #elif (NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT == 3)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ #define NV_SMP_CALL_FUNCTION(func, info, wait) \
+ ({ \
+ int __ret = smp_call_function(func, info, wait); \
+ __ret; \
+ })
+ #else
++#define NV_SMP_CALL_FUNCTION(func, info, wait) \
++ ({ \
++ int __ret = 0; \
++ smp_call_function(func, info, wait); \
++ __ret; \
++ })
++#endif
++#else
+ #error "NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT value unrecognized!"
+ #endif
+ #elif defined(CONFIG_SMP)
+@@ -897,12 +906,21 @@ extern void *nv_stack_t_cache;
+ __ret; \
+ })
+ #elif (NV_ON_EACH_CPU_ARGUMENT_COUNT == 3)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ #define NV_ON_EACH_CPU(func, info, wait) \
+ ({ \
+ int __ret = on_each_cpu(func, info, wait); \
+ __ret; \
+ })
+ #else
++#define NV_ON_EACH_CPU(func, info, wait) \
++ ({ \
++ int __ret = 0; \
++ on_each_cpu(func, info, wait); \
++ __ret; \
++ })
++#endif
++#else
+ #error "NV_ON_EACH_CPU_ARGUMENT_COUNT value unrecognized!"
+ #endif
+ #elif defined(CONFIG_SMP)
+
+
diff --git a/kernel/drivers/module-nvidia304/files/nv-drm.patch b/kernel/drivers/module-nvidia304/files/nv-drm.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia304/files/nvidia-304.137-bionic-18.04.patch b/kernel/drivers/module-nvidia304/files/nvidia-304.137-bionic-18.04.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia304/pspec.xml b/kernel/drivers/module-nvidia304/pspec.xml
index 91b21370d5..b769c80a72 100644
--- a/kernel/drivers/module-nvidia304/pspec.xml
+++ b/kernel/drivers/module-nvidia304/pspec.xml
@@ -17,9 +17,10 @@
kernel-4.14.patch
nvidia-304.137-bionic-18.04.patch
+ linux-5.3.patch
- kernel-module-headers
+ kernel-module-headers
@@ -27,7 +28,7 @@
module-nvidia304
Kernel module for NVIDIA driver 304.xx releases
2
- kernel
+ kernel
/lib/modules
@@ -67,6 +68,13 @@
+
+ 2019-12-28
+ 304.137
+ Rebuild for new kernel.
+ Idris Kalp
+ idriskalp@gmail.com
+
2019-08-14
304.137
diff --git a/kernel/drivers/module-nvidia340/files/Makefile-kernel b/kernel/drivers/module-nvidia340/files/Makefile-kernel
new file mode 100755
index 0000000000..4c941c940d
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/Makefile-kernel
@@ -0,0 +1,207 @@
+#
+# This Makefile was automatically generated; do not edit.
+# Generated on 'swio-display-x64-rhel04-13' on Thu May 24 21:16:20 PDT 2018.
+#
+
+#
+# KBUILD Makefile for the NVIDIA Linux kernel module.
+#
+# The motivation for replacing the original Makefile is the hope that this
+# version will simplify the build and installation process. In the past,
+# many architectural and cosmetic changes to the Linux kernel have made it
+# difficult to maintain compatibility or required duplication of logic.
+#
+# Linux 2.6 introduces numerous such changes, many of which impact modules.
+# Relying on KBUILD, some aspects of the build system otherwise difficult
+# to support (for example, module versioning) are abstracted away and dealt
+# with elsewhere, making life significantly easier here.
+#
+# The new approach currently has its own share of problems, some of which
+# are architectural difficulties with KBUILD, others minor annoyances. For
+# this reason, an improved version of the NVIDIA Makefile is available to
+# those experiencing difficulties.
+#
+# kbuild Makefile originally developed by:
+#
+# Alistair J Strachan (alistair@devzero.co.uk) (first pass, enhancements)
+# Christian Zander (zander@mail.minion.de) (enhancements)
+#
+
+#
+# The NVIDIA kernel module base name.
+#
+
+MODULE_BASENAME := nvidia
+
+#
+# This suffix is used to construct the name of the NVIDIA kernel module
+# in case of multiple kernel module builds. This suffix can either take the
+# numeric value 0-7 or the string "frontend". For normal NVIDIA kernel module
+# builds, this variable is empty and hence the module name is identical to
+# the base names.
+#
+
+NV_MODULE_SUFFIX ?=
+
+#
+# The NVIDIA kernel module name and static file names. In case of multiple
+# NVIDIA kernel module builds, $(NV_MODULE_SUFFIX) is appended to the
+# module basename to construct the module name of the concerned module.
+# KBUILD will go ahead and append ".o" or ".ko" to form the module file name.
+#
+
+ifeq ($(NV_MODULE_SUFFIX),frontend)
+ MODULE_NAME := $(MODULE_BASENAME)-$(NV_MODULE_SUFFIX)
+else
+ MODULE_NAME := $(MODULE_BASENAME)$(NV_MODULE_SUFFIX)
+endif
+VERSION_HEADER := nv_compiler.h
+
+#
+# List of object files to link into NVIDIA kernel module; this list
+# is assigned depending on the value of $(NV_MODULE_SUFFIX) being passed.
+# Make sure KBUILD understands that we want a module.
+#
+
+CORE_OBJS := nv-kernel.o
+
+ifdef NV_BUILD_MODULE_INSTANCES
+ ifeq ($(NV_MODULE_SUFFIX),frontend)
+ MODULE_GLUE_OBJS := $(patsubst %.c,%.o,nv-frontend.c)
+ $(MODULE_NAME)-objs := $(MODULE_GLUE_OBJS)
+ else
+ MODULE_GLUE_OBJS := $(patsubst %.c,%.o, nv.c nv-acpi.c nv-chrdev.c nv-cray.c nv-dma.c nv-drm.c nv-gvi.c nv-i2c.c nv-mempool.c nv-mmap.c nv-p2p.c nv-pat.c nv-procfs.c nv-usermap.c nv-vm.c nv-vtophys.c os-interface.c os-mlock.c os-pci.c os-registry.c os-smp.c os-usermap.c nv_uvm_interface.c)
+ $(MODULE_NAME)-objs := $(CORE_OBJS) $(MODULE_GLUE_OBJS)
+ endif
+else
+ MODULE_GLUE_OBJS := $(patsubst %.c,%.o, nv.c nv-acpi.c nv-chrdev.c nv-cray.c nv-dma.c nv-drm.c nv-gvi.c nv-i2c.c nv-mempool.c nv-mmap.c nv-p2p.c nv-pat.c nv-procfs.c nv-usermap.c nv-vm.c nv-vtophys.c os-interface.c os-mlock.c os-pci.c os-registry.c os-smp.c os-usermap.c nv_uvm_interface.c) $(patsubst %.c,%.o,nv-frontend.c)
+ $(MODULE_NAME)-objs := $(CORE_OBJS) $(MODULE_GLUE_OBJS)
+endif
+
+#
+# List of targets to build in case of multiple NVIDIA kernel module builds.
+# The actual target is constructed by prefixing nvidia/nvidia- to every
+# item in the list $(BUILD_MODULES_LIST)/$(BUILD_MODULE_FRONTEND).
+#
+
+ifdef NV_BUILD_MODULE_INSTANCES
+ BUILD_MODULES_LIST := $(shell seq 0 `expr $(NV_BUILD_MODULE_INSTANCES) - 1`)
+ BUILD_MODULE_FRONTEND := frontend
+endif
+
+COMPILE_TESTS = \
+ remap_pfn_range \
+ vmap \
+ set_pages_uc \
+ set_memory_uc \
+ set_memory_array_uc \
+ change_page_attr \
+ i2c_adapter \
+ pci_get_class \
+ pm_message_t \
+ irq_handler_t \
+ pci_choose_state \
+ vm_insert_page \
+ acpi_device_ops \
+ acpi_op_remove \
+ acpi_device_id \
+ acquire_console_sem \
+ console_lock \
+ kmem_cache_create \
+ outer_flush_all \
+ on_each_cpu \
+ smp_call_function \
+ nvmap_support \
+ acpi_evaluate_integer \
+ ioremap_cache \
+ ioremap_wc \
+ proc_dir_entry \
+ INIT_WORK \
+ acpi_walk_namespace \
+ scatterlist \
+ pci_domain_nr \
+ pci_dma_mapping_error \
+ file_operations \
+ sg_alloc_table \
+ sg_init_table \
+ pci_get_domain_bus_and_slot \
+ get_num_physpages \
+ efi_enabled \
+ dom0_kernel_present \
+ drm_available \
+ proc_create_data \
+ pde_data \
+ proc_remove \
+ sg_table \
+ pm_vt_switch_required \
+ pci_save_state \
+ file_inode \
+ drm_pci_set_busid \
+ write_cr4 \
+ for_each_online_node \
+ node_end_pfn \
+ get_user_pages \
+ get_user_pages_remote \
+ register_cpu_notifier \
+ cpuhp_setup_state \
+ vm_fault_present \
+ vm_fault_has_address \
+ drm_driver_unload_has_int_return_type \
+ drm_gem_object_get \
+ do_gettimeofday \
+ drm_legacy_pci_init \
+ timer_setup
+#
+# CFLAGS dependent on the type of builds (e.g. single/muliple module, debug)
+#
+
+ifdef NV_BUILD_MODULE_INSTANCES
+ EXTRA_CFLAGS += -DNV_BUILD_MODULE_INSTANCES=1
+ ifneq ($(NV_MODULE_SUFFIX),frontend)
+ EXTRA_CFLAGS += -DNV_MODULE_INSTANCE=$(NV_MODULE_SUFFIX)
+ endif
+else
+ EXTRA_CFLAGS += -DNV_MODULE_INSTANCE=0
+ EXTRA_CFLAGS += -DNV_BUILD_MODULE_INSTANCES=0
+endif
+
+EXTRA_CFLAGS += -UDEBUG -U_DEBUG -DNDEBUG
+
+#
+# Include common definitions; we rely on the definition of the source path to
+# find the file; set to a reasonable default if unset (e.g. for top-level
+# passes). The source path is also used in the common file.
+#
+
+src ?= .
+include $(src)/nvidia-modules-common.mk
+
+#
+# Generate multiple targets at runtime depending on the items present in
+# the lists $(BUILD_MODULES_LIST) and $(BUILD_MODULE_FRONTEND) for multiple
+# NVIDIA kernel module builds.
+#
+# For normal builds, generate the target $(MODULE_BASENAME).ko.
+#
+# Multiple-RM builds require GNU Make v3.81 or later, due to a bug in earlier
+# versions of GNU Make that prevents the use of $(eval) within a $(foreach):
+#
+# http://savannah.gnu.org/bugs/?func=detailitem&item_id=1517
+#
+
+$(foreach obj_file, $(BUILD_MODULES_LIST), $(eval $(call BUILD_MODULE_RULE,$(MODULE_BASENAME)$(obj_file).ko,$(obj_file),$(MODULE_BASENAME)-$(BUILD_MODULE_FRONTEND).ko)))
+$(eval $(call BUILD_MODULE_RULE,$(MODULE_BASENAME)-$(BUILD_MODULE_FRONTEND).ko,$(BUILD_MODULE_FRONTEND),))
+$(eval $(call BUILD_MODULE_RULE,$(MODULE_BASENAME).ko,,))
+
+#
+# Add dependencies for the generated targets, depending on whether we are
+# building multiple RM instances or a single RM.
+#
+
+ifdef NV_BUILD_MODULE_INSTANCES
+ NV_MODULE_TARGET_DEPS := $(addsuffix .ko,$(addprefix $(MODULE_BASENAME),$(BUILD_MODULES_LIST) -$(BUILD_MODULE_FRONTEND)))
+else
+ NV_MODULE_TARGET_DEPS := $(MODULE_OBJECT)
+endif
+
+module: $(NV_MODULE_TARGET_DEPS)
diff --git a/kernel/drivers/module-nvidia340/files/Makefile-uvm b/kernel/drivers/module-nvidia340/files/Makefile-uvm
new file mode 100755
index 0000000000..5c7b4667e5
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/Makefile-uvm
@@ -0,0 +1,234 @@
+################################################################################
+# Copyright (c) 2013 NVidia Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+################################################################################
+
+#
+# UVM kernel module makefile
+#
+
+# The following UVM_BUILD_TYPEs are supported: debug, release, and develop.
+# The first two are nearly self-explanatory, but "develop" deserves a little
+# more explanation (below).
+#
+# Description of the UVM build types (UVM_BUILD_TYPE):
+#
+# debug builds: these get debug symbols, no optimization (in order to allow
+# easier stepping through of functions), and debug printing.
+#
+# develop builds: these are "printing" builds, normally without debug symbols.
+# These builds must run at close to normal speeds, so they are optimized, and
+# do not have any debug symbols. However, they do have debug printing output.
+# This allows a convenient way for QA (or anyone) to get a slightly deeper look
+# at what the driver is doing, without the hassle of setting up kernel
+# debugging.
+#
+# release builds: these are just the usual speed-optimized, no-debug,
+# no-printing builds that you would expect most users to run.
+#
+UVM_BUILD_TYPE ?= release
+
+ifeq ($(UVM_BUILD_TYPE),debug)
+ EXTRA_CFLAGS += -DDEBUG -O0 -g
+else
+ ifeq ($(UVM_BUILD_TYPE),develop)
+ # -DDEBUG is required, in order to allow pr_devel() print statements to
+ # work:
+ EXTRA_CFLAGS += -DDEBUG -O2
+ else
+ EXTRA_CFLAGS += -O2
+ endif
+endif
+
+NV_HOST_OS := $(shell uname)
+NV_HOST_ARCH := $(shell uname -m)
+
+NV_TARGET_DEFINES ?=
+NV_DEFINES=
+
+# In addition to the UVM_BUILD_TYPE (release, debug) choice, there is also a
+# UVM_PROJECT choice. Choices include UVM_NEXT and UVM_LITE, and ALL. The
+# default is UVM_LITE.
+#
+# Unless you are working (inside NVIDIA) on the "next" version of UVM, you want
+# to use the default choice here.
+UVM_PROJECT ?= UVM_LITE
+
+UVM_LITE ?= 0
+UVM_NEXT ?= 0
+RM_ENABLED ?= 1
+
+ifeq ($(UVM_PROJECT),ALL)
+ UVM_LITE = 1
+ UVM_NEXT = 1
+else
+ ifeq ($(UVM_PROJECT),UVM_LITE)
+ UVM_LITE = 1
+ else
+ ifeq ($(UVM_PROJECT),UVM_NEXT)
+ UVM_NEXT = 1
+ else
+ $(error "Invalid UVM_PROJECT: $(UVM_PROJECT)")
+ endif
+ endif
+endif
+
+ifeq ($(UVM_LITE),0)
+ ifeq ($(UVM_NEXT),0)
+ $(error "Cannot build with both UVM_LITE and UVM_NEXT disabled")
+ endif
+endif
+
+ifneq ($(UVM_LITE),0)
+ NV_DEFINES += -DNVIDIA_UVM_LITE_ENABLED
+endif
+ifneq ($(UVM_NEXT),0)
+ NV_DEFINES += -DNVIDIA_UVM_NEXT_ENABLED
+endif
+
+NV_DEFINES += -D$(NV_HOST_OS)
+
+ifneq ($(findstring $(NV_HOST_OS),"Linux"),)
+ NV_HOST_OS_FAMILY = Unix
+ NV_HOST_OS_FAMILY_LOWER_CASE = unix
+ NV_DEFINES+= -D__linux__
+endif
+
+ifneq ($(findstring $(NV_HOST_OS),"macosx"),)
+ NV_HOST_OS_FAMILY = MacOSX
+ NV_HOST_OS_FAMILY_LOWER_CASE = macosx
+endif
+
+ifeq ($(NV_HOST_OS_FAMILY),)
+ $(error "Unrecognized NV_HOST_OS: $(NV_HOST_OS)")
+endif
+
+ifneq ($(findstring $(NV_HOST_OS_FAMILY),"Unix MacOSX"),)
+ # For Unix and MacOS, use the host platform as the default target platform.
+ NV_TARGET_OS ?= $(NV_HOST_OS)
+ NV_TARGET_ARCH ?= $(NV_HOST_ARCH)
+endif
+
+#
+# Determine NV_TARGET_OS_FAMILY
+#
+NV_TARGET_OS_FAMILY =
+
+ifneq ($(findstring $(NV_TARGET_OS),"Linux"),)
+ NV_TARGET_OS_FAMILY = Unix
+ NV_TARGET_OS_FAMILY_LOWER_CASE = unix
+endif
+
+ifneq ($(findstring $(NV_TARGET_OS),"macosx"),)
+ NV_TARGET_OS_FAMILY = MacOSX
+ NV_TARGET_OS_FAMILY_LOWER_CASE = macosx
+endif
+
+ifeq ($(NV_TARGET_OS_FAMILY),)
+ $(error "NV_TARGET_OS_FAMILY has not been set.")
+endif
+
+src ?= .
+obj ?= $(src)
+
+# In both internal builds, and installation (public) builds, the UVM open-source
+# files (that's all of them, for UVM) are in a subdirectory below the RM
+# open-source files.
+RM_OUT_DIR ?= $(src)/..
+
+VERSION_HEADER := $(RM_OUT_DIR)/nv_compiler.h
+
+COMPILE_TESTS = \
+ remap_page_range \
+ remap_pfn_range \
+ irq_handler_t \
+ vm_insert_page \
+ kmem_cache_create \
+ outer_flush_all \
+ vm_operations_struct \
+ file_operations \
+ task_struct \
+ address_space \
+ address_space_init_once \
+ kbasename \
+ fatal_signal_pending \
+ kuid_t \
+ do_gettimeofday \
+ vm_fault_has_address
+
+MODULE_NAME:= nvidia-uvm
+
+MODULE_GLUE_OBJS := nvidia_uvm_linux.o \
+ nvidia_uvm_common.o \
+ nvidia_uvm_utils.o
+
+ifneq ($(UVM_LITE),0)
+ MODULE_GLUE_OBJS += nvidia_uvm_lite.o \
+ nvidia_uvm_page_cache.o \
+ nvidia_uvm_lite_api.o \
+ nvidia_uvm_lite_counters.o \
+ nvidia_page_migration.o \
+ nvidia_page_migration_kepler.o \
+ nvidia_uvm_lite_events.o \
+ uvm_gpu_ops_tests.o
+endif
+
+NV_INCLUDES:= -I$(PWD) -I$(RM_OUT_DIR)
+
+ifneq ($(UVM_NEXT),0)
+ include $(src)/uvmnext.mk
+endif
+
+ifneq ($(RM_ENABLED),0)
+ NV_DEFINES += -DNVIDIA_UVM_RM_ENABLED
+endif
+
+EXTRA_CFLAGS += $(NV_DEFINES) $(NV_TARGET_DEFINES) $(NV_INCLUDES)
+
+ccflags-y += $(EXTRA_CFLAGS)
+
+RM_MODULE_SYMVERS:= $(RM_OUT_DIR)/Module.symvers
+UVM_MODULE_SYMVERS:= $(obj)/Module.symvers
+
+module $(MODULE_NAME).ko: $(UVM_MODULE_SYMVERS) debug_diagnostics_printing
+
+$(MODULE_NAME)-y := $(MODULE_GLUE_OBJS)
+
+include $(RM_OUT_DIR)/nvidia-modules-common.mk
+
+$(eval $(call BUILD_MODULE_RULE, $(MODULE_OBJECT),"uvm",))
+module: $(MODULE_OBJECT)
+
+$(RM_MODULE_SYMVERS):
+ cd $(RM_OUT_DIR); make module SYSSRC=$(KERNEL_SOURCES) SYSOUT=$(KERNEL_OUTPUT) KBUILD_EXTMOD=$(RM_OUT_DIR)
+
+$(UVM_MODULE_SYMVERS): $(RM_MODULE_SYMVERS)
+ cp $< $@
+
+debug_diagnostics_printing:
+ifeq ($(NV_VERBOSE),1)
+ @echo "NVIDIA UVM: CC=$(CC), HOST_CC=$(HOST_CC) NV_TARGET_ARCH=$(NV_TARGET_ARCH)"
+ @echo "NVIDIA UVM: CONFTEST=$(CONFTEST)"
+ @echo "KERNEL_SOURCES: $(KERNEL_SOURCES)"
+ @echo "EXTRA_CFLAGS: $(EXTRA_CFLAGS)"
+endif
+
+.PHONY: debug_diagnostics_printing
diff --git a/kernel/drivers/module-nvidia340/files/fs52243.patch b/kernel/drivers/module-nvidia340/files/fs52243.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia340/files/kernel-4.11.patch b/kernel/drivers/module-nvidia340/files/kernel-4.11.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia340/files/kernel-5.1.patch b/kernel/drivers/module-nvidia340/files/kernel-5.1.patch
new file mode 100755
index 0000000000..3cd3624b16
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/kernel-5.1.patch
@@ -0,0 +1,43 @@
+diff --git kernel/uvm/nvidia_uvm_lite.c kernel/uvm/nvidia_uvm_lite.c
+index 65b9a4d..f5ea5d7 100644
+--- a/kernel/uvm/nvidia_uvm_lite.c
++++ b/kernel/uvm/nvidia_uvm_lite.c
+@@ -830,8 +830,10 @@ done:
+ #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
+ int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+-#else
+-int _fault(struct vm_fault *vmf)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
++int _fault(struct vm_fault *vmf)
++#else
++vm_fault_t _fault(struct vm_fault *vmf)
+ #endif
+ {
+ #if defined(NV_VM_FAULT_HAS_ADDRESS)
+@@ -886,8 +888,10 @@ static struct vm_operations_struct uvmlite_vma_ops =
+ #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
+ int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+-#else
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ int _sigbus_fault(struct vm_fault *vmf)
++#else
++vm_fault_t _sigbus_fault(struct vm_fault *vmf)
+ #endif
+ {
+ vmf->page = NULL;
+diff --git kernel/nv-drm.c kernel/nv-drm.c
+index 122ba7d..1be5733 100644
+--- a/kernel/nv-drm.c
++++ b/kernel/nv-drm.c
+@@ -146,7 +146,7 @@ static const struct file_operations nv_drm_fops = {
+ };
+
+ static struct drm_driver nv_drm_driver = {
+-#if defined(DRIVER_LEGACY)
++#if defined(DRIVER_LEGACY) || LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+ .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_LEGACY,
+ #else
+ .driver_features = DRIVER_GEM | DRIVER_PRIME,
+
diff --git a/kernel/drivers/module-nvidia340/files/kernel-5.3.patch b/kernel/drivers/module-nvidia340/files/kernel-5.3.patch
new file mode 100755
index 0000000000..c51a41d5d8
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/kernel-5.3.patch
@@ -0,0 +1,49 @@
+diff --git kernel/nv-linux.h kernel/nv-linux.h
+index 4043bf1..62f0874 100644
+--- kernel/nv-linux.h
++++ kernel/nv-linux.h
+@@ -877,12 +877,21 @@ extern void *nv_stack_t_cache;
+ __ret; \
+ })
+ #elif (NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT == 3)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ #define NV_SMP_CALL_FUNCTION(func, info, wait) \
+ ({ \
+ int __ret = smp_call_function(func, info, wait); \
+ __ret; \
+ })
+ #else
++#define NV_SMP_CALL_FUNCTION(func, info, wait) \
++ ({ \
++ int __ret = 0; \
++ smp_call_function(func, info, wait); \
++ __ret; \
++ })
++#endif
++#else
+ #error "NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT value unrecognized!"
+ #endif
+ #elif defined(CONFIG_SMP)
+@@ -897,12 +906,21 @@ extern void *nv_stack_t_cache;
+ __ret; \
+ })
+ #elif (NV_ON_EACH_CPU_ARGUMENT_COUNT == 3)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ #define NV_ON_EACH_CPU(func, info, wait) \
+ ({ \
+ int __ret = on_each_cpu(func, info, wait); \
+ __ret; \
+ })
+ #else
++#define NV_ON_EACH_CPU(func, info, wait) \
++ ({ \
++ int __ret = 0; \
++ on_each_cpu(func, info, wait); \
++ __ret; \
++ })
++#endif
++#else
+ #error "NV_ON_EACH_CPU_ARGUMENT_COUNT value unrecognized!"
+ #endif
+ #elif defined(CONFIG_SMP)
+
diff --git a/kernel/drivers/module-nvidia340/files/kernel-5.4.patch b/kernel/drivers/module-nvidia340/files/kernel-5.4.patch
new file mode 100644
index 0000000000..cdbbe791fd
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/kernel-5.4.patch
@@ -0,0 +1,113 @@
+From f90c388c755a6bd9b72cb51c712a0ae686e0b377 Mon Sep 17 00:00:00 2001
+From: Alberto Milone
+Date: Wed, 27 Nov 2019 13:01:18 +0100
+Subject: [PATCH 1/1] Add support for Linux 5.4
+
+---
+ conftest.sh | 46 ++++++++++++++++++++++++++++++++++++++++
+ nv-drm.c | 9 +++++---
+ nvidia-modules-common.mk | 2 +-
+ 3 files changed, 53 insertions(+), 4 deletions(-)
+
+diff --git a/conftest.sh b/conftest.sh
+index fb0bf60..babbb50 100755
+--- a/kernel/conftest.sh
++++ b/kernel/conftest.sh
+@@ -265,6 +265,23 @@ build_cflags() {
+ if [ -n "$BUILD_PARAMS" ]; then
+ CFLAGS="$CFLAGS -D$BUILD_PARAMS"
+ fi
++
++ # Check if gcc supports asm goto and set CC_HAVE_ASM_GOTO if it does.
++ # Older kernels perform this check and set this flag in Kbuild, and since
++ # conftest.sh runs outside of Kbuild it ends up building without this flag.
++ # Starting with commit e9666d10a5677a494260d60d1fa0b73cc7646eb3 this test
++ # is done within Kconfig, and the preprocessor flag is no longer needed.
++
++ GCC_GOTO_SH="$SOURCES/build/gcc-goto.sh"
++
++ if [ -f "$GCC_GOTO_SH" ]; then
++ # Newer versions of gcc-goto.sh don't print anything on success, but
++ # this is okay, since it's no longer necessary to set CC_HAVE_ASM_GOTO
++ # based on the output of those versions of gcc-goto.sh.
++ if [ `/bin/sh "$GCC_GOTO_SH" "$CC"` = "y" ]; then
++ CFLAGS="$CFLAGS -DCC_HAVE_ASM_GOTO"
++ fi
++ fi
+ }
+
+ CONFTEST_PREAMBLE="#include \"conftest.h\"
+@@ -1521,6 +1538,35 @@ compile_test() {
+ compile_check_conftest "$CODE" "NV_DRM_AVAILABLE" "" "generic"
+ ;;
+
++ drm_driver_prime_flag_present)
++ #
++ # Determine whether driver feature flag DRIVER_PRIME is present.
++ #
++ # The DRIVER_PRIME flag was added by commit 3248877ea179 (drm:
++ # base prime/dma-buf support (v5)) in v3.4 (2011-11-25) and is
++ # removed by commit 0424fdaf883a (drm/prime: Actually remove
++ # DRIVER_PRIME everywhere) on 2019-06-17.
++ #
++ # DRIVER_PRIME definition moved from drmP.h to drm_drv.h by
++ # commit 85e634bce01a (drm: Extract drm_drv.h) in v4.10
++ # (2016-11-14).
++ #
++ # DRIVER_PRIME define is changed to enum value by commit
++ # 0e2a933b02c9 (drm: Switch DRIVER_ flags to an enum) in v5.1
++ # (2019-01-29).
++ #
++ CODE="
++ #include
++ #if defined(NV_DRM_DRM_DRV_H_PRESENT)
++ #include
++ #endif
++ unsigned int drm_driver_prime_flag_present_conftest(void) {
++ return DRIVER_PRIME;
++ }"
++
++ compile_check_conftest "$CODE" "NV_DRM_DRIVER_PRIME_FLAG_PRESENT" "" "types"
++ ;;
++
+ proc_create_data)
+ #
+ # Determine if the proc_create_data() function is present.
+diff --git a/nv-drm.c b/nv-drm.c
+index 76719bb..12f7029 100644
+--- a/kernel/nv-drm.c
++++ b/kernel/nv-drm.c
+@@ -156,11 +156,14 @@ static const struct file_operations nv_drm_fops = {
+ };
+
+ static struct drm_driver nv_drm_driver = {
++ .driver_features =
++#if defined(NV_DRM_DRIVER_PRIME_FLAG_PRESENT)
++ DRIVER_PRIME |
++#endif
+ #if defined(DRIVER_LEGACY) || LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+- .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_LEGACY,
+-#else
+- .driver_features = DRIVER_GEM | DRIVER_PRIME,
++ DRIVER_LEGACY |
+ #endif
++ DRIVER_GEM,
+ .load = nv_drm_load,
+ .unload = nv_drm_unload,
+ .fops = &nv_drm_fops,
+diff --git a/nvidia-modules-common.mk b/nvidia-modules-common.mk
+index 8ac7058..7418005 100644
+--- a/kernel/nvidia-modules-common.mk
++++ b/kernel/nvidia-modules-common.mk
+@@ -180,7 +180,7 @@ ifndef NV_VERBOSE
+ endif
+
+ KBUILD_PARAMS += KBUILD_VERBOSE=$(NV_VERBOSE)
+-KBUILD_PARAMS += -C $(KERNEL_SOURCES) SUBDIRS=$(PWD)
++KBUILD_PARAMS += -C $(KERNEL_SOURCES) M=$(PWD)
+ KBUILD_PARAMS += ARCH=$(ARCH)
+
+ #
+--
+2.20.1
+
diff --git a/kernel/drivers/module-nvidia340/files/kmem_cache_create_usercopy.patch b/kernel/drivers/module-nvidia340/files/kmem_cache_create_usercopy.patch
new file mode 100755
index 0000000000..6873cd2ab8
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/kmem_cache_create_usercopy.patch
@@ -0,0 +1,29 @@
+Author: Andreas Beckmann
+Description: use kmem_cache_create_usercopy on 4.16+
+ fixes "Bad or missing usercopy whitelist? Kernel memory exposure attempt
+ detected from SLUB object 'nvidia_stack_cache'" on linux-image-4.16.0-2-*
+ or newer that have disabled CONFIG_HARDENED_USERCOPY_FALLBACK
+Bug-Debian: #901919, #899998
+Bug: https://devtalk.nvidia.com/default/topic/1031067
+
+--- a/kernel/nv-linux.h
++++ b/kernel/nv-linux.h
+@@ -757,11 +757,18 @@ extern nv_spinlock_t km_lock;
+ 0, 0, NULL, NULL); \
+ }
+ #elif (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 5)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
++#define NV_KMEM_CACHE_CREATE(kmem_cache, name, type) \
++ { \
++ kmem_cache = kmem_cache_create_usercopy(name, sizeof(type), 0, 0, 0, sizeof(type), NULL); \
++ }
++#else
+ #define NV_KMEM_CACHE_CREATE(kmem_cache, name, type) \
+ { \
+ kmem_cache = kmem_cache_create(name, sizeof(type), \
+ 0, 0, NULL); \
+ }
++#endif
+ #else
+ #error "NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT value unrecognized!"
+ #endif
diff --git a/kernel/drivers/module-nvidia340/files/linux-4.6.patch b/kernel/drivers/module-nvidia340/files/linux-4.6.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia340/files/modprobe.conf b/kernel/drivers/module-nvidia340/files/modprobe.conf
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia340/files/nv-drm.patch b/kernel/drivers/module-nvidia340/files/nv-drm.patch
old mode 100644
new mode 100755
diff --git a/kernel/drivers/module-nvidia340/files/nv_patch_340.107_linux_kernel_5.0 b/kernel/drivers/module-nvidia340/files/nv_patch_340.107_linux_kernel_5.0
new file mode 100755
index 0000000000..1d26e5027f
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/nv_patch_340.107_linux_kernel_5.0
@@ -0,0 +1,199 @@
+--- kernel/conftest.sh
++++ kernel/conftest.sh
+@@ -168,6 +168,7 @@ test_headers() {
+ FILES="$FILES linux/sched/task.h"
+ FILES="$FILES xen/ioemu.h"
+ FILES="$FILES linux/fence.h"
++ FILES="$FILES linux/ktime.h"
+
+ FILES_ARCH="$FILES_ARCH asm/set_memory.h"
+
+@@ -1971,6 +1972,38 @@ compile_test() {
+ compile_check_conftest "$CODE" "NV_DRM_DRIVER_UNLOAD_HAS_INT_RETURN_TYPE" "" "types"
+ ;;
+
++ drm_gem_object_get)
++ #
++ # Determine if the function drm_gem_object_get() is present.
++ #
++ CODE="
++ #include
++ #if defined(NV_DRM_DRM_GEM_H_PRESENT)
++ #include
++ #endif
++ void conftest_drm_gem_object_get(void) {
++ drm_gem_object_get();
++ }"
++
++ compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_GET_PRESENT" "" "functions"
++ ;;
++
++ do_gettimeofday)
++ #
++ # Determine if the function do_gettimeofday() is present.
++ #
++ CODE="
++ #include
++ #if defined(NV_LINUX_KTIME_H_PRESENT)
++ #include
++ #endif
++ void conftest_do_gettimeofday(void) {
++ do_gettimeofday();
++ }"
++
++ compile_check_conftest "$CODE" "NV_DO_GETTIMEOFDAY_PRESENT" "" "functions"
++ ;;
++
+ drm_legacy_pci_init)
+ #
+ # Determine if drm_legacy_pci_init() is present. drm_pci_init() was
+--- kernel/nv-drm.c
++++ kernel/nv-drm.c
+@@ -37,6 +37,16 @@ struct nv_gem_object {
+ struct page **pages;
+ };
+
++static inline void
++nv_drm_gem_object_unreference_unlocked(struct nv_gem_object *nv_gem)
++{
++#if defined(NV_DRM_GEM_OBJECT_GET_PRESENT)
++ drm_gem_object_put_unlocked(&nv_gem->base);
++#else
++ drm_gem_object_unreference_unlocked(&nv_gem->base);
++#endif
++}
++
+ static int nv_drm_load(
+ struct drm_device *dev,
+ unsigned long flags
+@@ -252,7 +262,7 @@ RM_STATUS NV_API_CALL nv_alloc_os_descriptor_handle(
+ goto done;
+ }
+
+- drm_gem_object_unreference_unlocked(&nv_obj->base);
++ nv_drm_gem_object_unreference_unlocked(nv_obj);
+
+ status = RM_OK;
+
+--- /dev/null
++++ kernel/nv-time.h
+@@ -0,0 +1,24 @@
++#ifndef __NV_TIME_H__
++#define __NV_TIME_H__
++
++#include "conftest.h"
++#include
++
++#if defined(NV_LINUX_KTIME_H_PRESENT)
++#include
++#endif
++
++static inline void nv_gettimeofday(struct timeval *tv)
++{
++#ifdef NV_DO_GETTIMEOFDAY_PRESENT
++ do_gettimeofday(tv);
++#else
++ struct timespec64 now;
++
++ ktime_get_real_ts64(&now);
++ tv->tv_sec = now.tv_sec;
++ tv->tv_usec = now.tv_nsec/1000;
++#endif
++}
++
++#endif
+--- kernel/os-interface.c
++++ kernel/os-interface.c
+@@ -13,6 +13,7 @@
+
+ #include "os-interface.h"
+ #include "nv-linux.h"
++#include "nv-time.h"
+
+ RM_STATUS NV_API_CALL os_disable_console_access(void)
+ {
+@@ -440,7 +441,7 @@ RM_STATUS NV_API_CALL os_get_current_time(
+ {
+ struct timeval tm;
+
+- do_gettimeofday(&tm);
++ nv_gettimeofday(&tm);
+
+ *seconds = tm.tv_sec;
+ *useconds = tm.tv_usec;
+@@ -475,7 +476,7 @@ RM_STATUS NV_API_CALL os_delay_us(NvU32 MicroSeconds)
+ #ifdef NV_CHECK_DELAY_ACCURACY
+ struct timeval tm1, tm2;
+
+- do_gettimeofday(&tm1);
++ nv_gettimeofday(&tm1);
+ #endif
+
+ if (in_irq() && (MicroSeconds > NV_MAX_ISR_DELAY_US))
+@@ -490,7 +491,7 @@ RM_STATUS NV_API_CALL os_delay_us(NvU32 MicroSeconds)
+ udelay(usec);
+
+ #ifdef NV_CHECK_DELAY_ACCURACY
+- do_gettimeofday(&tm2);
++ nv_gettimeofday(&tm2);
+ nv_printf(NV_DBG_ERRORS, "NVRM: osDelayUs %d: 0x%x 0x%x\n",
+ MicroSeconds, tm2.tv_sec - tm1.tv_sec, tm2.tv_usec - tm1.tv_usec);
+ #endif
+@@ -518,7 +519,7 @@ RM_STATUS NV_API_CALL os_delay(NvU32 MilliSeconds)
+ struct timeval tm_start;
+ #endif
+
+- do_gettimeofday(&tm_aux);
++ nv_gettimeofday(&tm_aux);
+ #ifdef NV_CHECK_DELAY_ACCURACY
+ tm_start = tm_aux;
+ #endif
+@@ -552,7 +553,7 @@ RM_STATUS NV_API_CALL os_delay(NvU32 MilliSeconds)
+ do
+ {
+ schedule_timeout(jiffies);
+- do_gettimeofday(&tm_aux);
++ nv_gettimeofday(&tm_aux);
+ if (NV_TIMERCMP(&tm_aux, &tm_end, <))
+ {
+ NV_TIMERSUB(&tm_end, &tm_aux, &tm_aux);
+@@ -574,7 +575,7 @@ RM_STATUS NV_API_CALL os_delay(NvU32 MilliSeconds)
+ udelay(MicroSeconds);
+ }
+ #ifdef NV_CHECK_DELAY_ACCURACY
+- do_gettimeofday(&tm_aux);
++ nv_gettimeofday(&tm_aux);
+ timersub(&tm_aux, &tm_start, &tm_aux);
+ nv_printf(NV_DBG_ERRORS, "NVRM: osDelay %dmsec: %d.%06dsec\n",
+ MilliSeconds, tm_aux.tv_sec, tm_aux.tv_usec);
+--- kernel/uvm/nvidia_uvm_linux.h
++++ kernel/uvm/nvidia_uvm_linux.h
+@@ -146,6 +146,7 @@
+ #include /* tasklets, interrupt helpers */
+ #include
+ #include /* do_gettimeofday()*/
++#include "nv-time.h"
+
+ #include /* do_div() */
+ #if defined(NV_ASM_SYSTEM_H_PRESENT)
+--- kernel/uvm/nvidia_uvm_lite.c
++++ kernel/uvm/nvidia_uvm_lite.c
+@@ -2019,7 +2019,7 @@ static RM_STATUS _check_ecc_errors(UvmGpuMigrationTracking *pMigTracker,
+ {
+ if (!!(rmInterruptSet) && !bEccIncomingError)
+ {
+- do_gettimeofday(&eccErrorStartTime);
++ nv_gettimeofday(&eccErrorStartTime);
+ _set_timeout_in_usec(&eccErrorStartTime, &eccTimeout,
+ UVM_ECC_ERR_TIMEOUT_USEC);
+
+@@ -2051,7 +2051,7 @@ static RM_STATUS _check_ecc_errors(UvmGpuMigrationTracking *pMigTracker,
+ //
+ if (!!(rmInterruptSet) && (eccErrorStartTime.tv_usec != 0))
+ {
+- do_gettimeofday(&eccErrorCurrentTime);
++ nv_gettimeofday(&eccErrorCurrentTime);
+ if ((eccErrorCurrentTime.tv_sec > eccTimeout.tv_sec) ||
+ ((eccErrorCurrentTime.tv_sec == eccTimeout.tv_sec) &&
+ (eccErrorCurrentTime.tv_usec >= eccTimeout.tv_usec)))
+
diff --git a/kernel/drivers/module-nvidia340/files/unregister_procfs_on_failure.patch b/kernel/drivers/module-nvidia340/files/unregister_procfs_on_failure.patch
new file mode 100755
index 0000000000..d220cb3efc
--- /dev/null
+++ b/kernel/drivers/module-nvidia340/files/unregister_procfs_on_failure.patch
@@ -0,0 +1,28 @@
+Author: Andreas Beckmann
+Description: unregister procfs upon module load failure
+ the nvidia module may leave stale proc entries if it refuses to be
+ loaded becase nouveau is already loaded and has claimed the device
+ .
+ the error unwinding in nvidia_init_module() is insane
+ (375.26 looks much better)
+ .
+ this patch is probably not correct in all cases, but the unwinding is
+ not reverse linear in creation and the gotos are all across everything
+ .
+ leaving stale proc entries prevents the nvidia module from loading again
+ .
+ accessing the stale proc entries results in
+ BUG: unable to handle kernel paging request at ...
+Bug-Debian: #764639
+
+--- a/kernel/nv.c
++++ b/kernel/nv.c
+@@ -1038,6 +1038,8 @@ failed3:
+
+ pci_unregister_driver(&nv_pci_driver);
+
++ nv_unregister_procfs();
++
+ failed5:
+ rm_shutdown_rm(sp);
+
diff --git a/kernel/drivers/module-nvidia340/pspec.xml b/kernel/drivers/module-nvidia340/pspec.xml
index b4161bbb30..879a93bf5c 100644
--- a/kernel/drivers/module-nvidia340/pspec.xml
+++ b/kernel/drivers/module-nvidia340/pspec.xml
@@ -15,9 +15,17 @@
http://http.download.nvidia.com/XFree86/Linux-x86_64/340.107/NVIDIA-Linux-x86_64-340.107.run
kernel-4.11.patch
+ kernel-5.3.patch
+ kernel-5.1.patch
+ kernel-5.4.patch
+ kmem_cache_create_usercopy.patch
+ unregister_procfs_on_failure.patch
+ nv_patch_340.107_linux_kernel_5.0
+ Makefile-kernel
+ Makefile-uvm
- kernel-module-headers
+ kernel-module-headers
@@ -26,7 +34,7 @@
driver
Kernel module for NVIDIA driver 340.xx releases
- kernel
+ kernel
/lib/modules
@@ -97,6 +105,13 @@
+
+ 2019-12-28
+ 340.107
+ Rebuild for new kernel.
+ Idris Kalp
+ idriskalp@gmail.com
+
2019-08-14
340.107
diff --git a/kernel/drivers/module-nvidia390/actions.py b/kernel/drivers/module-nvidia390/actions.py
new file mode 100755
index 0000000000..5c2c694ebd
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/actions.py
@@ -0,0 +1,184 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import kerneltools
+
+WorkDir = "."
+KDIR = kerneltools.getKernelVersion()
+NoStrip = ["/lib/modules"]
+
+version = get.srcVERSION()
+driver_dir_name = "nvidia-current"
+datadir = "/usr/share/%s" % driver_dir_name
+libdir = "/usr/lib32" if get.buildTYPE() == 'emul32' else "/usr/lib"
+arch = "x86" if get.buildTYPE() == 'emul32' else get.ARCH().replace("i6", "x")
+nvlibdir = "%s/%s" % (libdir, driver_dir_name)
+xorglibdir= "%s/xorg" % libdir
+
+def setup():
+ shelltools.system("sh NVIDIA-Linux-%s-%s.run -x --target tmp"
+ % (arch, get.srcVERSION()))
+ shelltools.move("tmp/*", ".")
+
+
+ #if get.buildTYPE() != 'emul32':
+ #shelltools.system("patch -p1 < linux-5.1.patch")
+
+
+ # Our libc is TLS enabled so use TLS library
+ #shelltools.unlink("*-tls.so*")
+ #shelltools.move("tls/*", ".")
+
+ # xorg-server provides libwfb.so
+ shelltools.unlink("libnvidia-wfb.so.*")
+
+ shelltools.echo("ld.so.conf", nvlibdir)
+ shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
+
+def build():
+ # We don't need kernel module for emul32 build
+ if get.buildTYPE() == 'emul32':
+ return
+
+ shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
+ shelltools.cd("kernel")
+
+ autotools.make("module")
+
+ #shelltools.cd("uvm")
+ #autotools.make("module")
+
+def install():
+
+ if not get.buildTYPE() == 'emul32':
+ # Kernel driver
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-uvm.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-modeset.ko")
+
+ # Command line tools and their man pages
+ pisitools.dobin("nvidia-smi")
+ pisitools.doman("nvidia-smi.1.gz")
+ pisitools.dobin("nvidia-debugdump")
+ pisitools.dobin("nvidia-xconfig")
+ pisitools.doman("nvidia-xconfig.1.gz")
+ pisitools.dobin("nvidia-bug-report.sh")
+ pisitools.dobin("nvidia-cuda-mps-server")
+ pisitools.dobin("nvidia-cuda-mps-control")
+ pisitools.doman("nvidia-cuda-mps-control.1.gz")
+ pisitools.dobin("nvidia-modprobe")
+ pisitools.doman("nvidia-modprobe.1.gz")
+ pisitools.dobin("nvidia-persistenced")
+ pisitools.doman("nvidia-persistenced.1.gz")
+
+ ### Libraries
+ # OpenGl library
+ pisitools.dolib("libGL.so.%s" % version, nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1" % nvlibdir)
+ pisitools.dolib("libGL.so.%s" % version, libdir)
+
+ pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
+ pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so.1" % nvlibdir)
+ pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
+
+ # OpenCL
+ pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
+ pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+
+ pisitools.dolib("libOpenCL.so.1.0.0", libdir)
+ pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
+ pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
+
+ pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
+ pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
+
+ # CUDA
+ pisitools.dolib("libcuda.so.%s" % version, libdir)
+ pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
+ pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
+
+ pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
+ pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
+ pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
+
+ # NVML
+ # Provides programmatic access to static information and monitoring
+ # data for NVIDIA GPUs, as well as limited managment capabilities
+ pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
+
+ pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
+
+
+
+ # OpenGL core library and others
+ for lib in ("glcore", "tls", "encode", "fbc", "glsi", "ifr", "eglcore"):
+ pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+
+ # VDPAU driver
+ pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
+ pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
+
+ # nvidia-tls library
+ pisitools.dolib("libnvidia-tls.so.%s" % version, libdir)
+ pisitools.dolib("tls/libnvidia-tls.so.%s" % version, "%s/tls" % libdir)
+
+ # X modules
+ pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
+ pisitools.dolib("libglx.so.%s" % version, "%s" % nvlibdir)
+ pisitools.dosym("libglx.so.%s" % version, "%s/libglx.so.1" % nvlibdir)
+ pisitools.dosym("libglx.so.%s" % version, "%s/libglx.so" % nvlibdir)
+ pisitools.dolib("libglx.so.%s" % version, "%s/modules/extensions" % xorglibdir)
+ pisitools.dosym("libglx.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
+
+ pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
+
+ # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
+ pisitools.dolib("libnvidia-ptxjitcompiler.so.%s" % version, libdir)
+
+ # Fat (multiarchitecture) binary loader
+ pisitools.dolib("libnvidia-fatbinaryloader.so.%s" % version, libdir)
+
+ pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
+ # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
+ # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
+ #pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
+
+
+ # Exit time for emul32 build
+ if get.buildTYPE() == 'emul32':
+ pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
+ return
+
+ pisitools.insinto(datadir, "ld.so.conf")
+ pisitools.insinto(datadir, "XvMCConfig")
+
+ # Documentation
+ docdir = "xorg-video-%s" % driver_dir_name
+ pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
+ pisitools.dohtml("html/*", destDir=docdir)
+
+ ### Note
+ # This package includes nvidia-setting and nvidia-xconfig binaries. However
+ # we have seperate packages for each of them. Nvidia provides tarballs for
+ # these binaries. Don't forget to update these package with each NVIDIA
+ # driver update.
diff --git a/kernel/drivers/module-nvidia390/comar/package-emul32.py b/kernel/drivers/module-nvidia390/comar/package-emul32.py
new file mode 100755
index 0000000000..055939ea6b
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/comar/package-emul32.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia390"
+libdir = "/usr/lib32/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib32/libGL.so.1.2.0 libGL-32bit %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib32/xorg/modules/volatile xorg-modules-volatile-32bit %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/ld.so.conf.d/10-nvidia-32bit.conf nvidia-ldsoconf-32bit %(datadir)s/32bit-ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL-32bit") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia390/comar/package.py b/kernel/drivers/module-nvidia390/comar/package.py
new file mode 100755
index 0000000000..c3fc7720e4
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/comar/package.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia390"
+libdir = "/usr/lib/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib/libGL.so.1.2.0 libGL %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib/xorg/modules/volatile xorg-modules-volatile %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/X11/XvMCConfig XvMCConfig %(datadir)s/XvMCConfig \
+# --slave /etc/ld.so.conf.d/10-nvidia.conf nvidia-ldsoconf %(datadir)s/ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch b/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch
new file mode 100755
index 0000000000..08bf281614
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch
@@ -0,0 +1,50 @@
+diff -Nurp NVIDIA-Linux-x86_64-390.87.orig/kernel/nvidia-drm/nvidia-drm-connector.c NVIDIA-Linux-x86_64-390.87/kernel/nvidia-drm/nvidia-drm-connector.c
+--- NVIDIA-Linux-x86_64-390.87.orig/kernel/nvidia-drm/nvidia-drm-connector.c 2018-08-22 03:55:29.000000000 +0300
++++ NVIDIA-Linux-x86_64-390.87/kernel/nvidia-drm/nvidia-drm-connector.c 2018-11-09 19:46:54.625801192 +0200
+@@ -30,6 +30,8 @@
+ #include "nvidia-drm-utils.h"
+ #include "nvidia-drm-encoder.h"
+
++#include
++
+ #include
+
+ #include
+@@ -226,8 +228,13 @@ static int nv_drm_connector_get_modes(st
+
+
+ if (nv_connector->edid != NULL) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
+ drm_mode_connector_update_edid_property(
+ connector, nv_connector->edid);
++#else
++ drm_connector_update_edid_property(
++ connector, nv_connector->edid);
++#endif
+ }
+
+ while (1) {
+diff -Nurp NVIDIA-Linux-x86_64-390.87.orig/kernel/nvidia-drm/nvidia-drm-encoder.c NVIDIA-Linux-x86_64-390.87/kernel/nvidia-drm/nvidia-drm-encoder.c
+--- NVIDIA-Linux-x86_64-390.87.orig/kernel/nvidia-drm/nvidia-drm-encoder.c 2018-08-22 03:55:29.000000000 +0300
++++ NVIDIA-Linux-x86_64-390.87/kernel/nvidia-drm/nvidia-drm-encoder.c 2018-11-09 19:49:34.863861811 +0200
+@@ -30,6 +30,8 @@
+ #include "nvidia-drm-connector.h"
+ #include "nvidia-drm-crtc.h"
+
++#include
++
+ #include
+
+ #include
+@@ -216,7 +218,11 @@ nv_drm_add_encoder(struct drm_device *de
+
+ /* Attach encoder and connector */
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
+ ret = drm_mode_connector_attach_encoder(connector, encoder);
++#else
++ ret = drm_connector_attach_encoder(connector, encoder);
++#endif
+
+ if (ret != 0) {
+ NV_DRM_DEV_LOG_ERR(
diff --git a/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch b/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch
new file mode 100755
index 0000000000..7548fec4fa
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch
@@ -0,0 +1,43 @@
+--- a/kernel/nvidia/os-interface.c
++++ b/kernel/nvidia/os-interface.c
+@@ -1670,7 +1670,7 @@
+
+ struct nv_ipmi_softc
+ {
+- ipmi_user_t p_user; // ptr to ipmi_msghandler user structure
++ struct ipmi_user *p_user;
+ spinlock_t msg_lock;
+ struct list_head msgs;
+ NvU32 seqNum; //request sequence number
+@@ -1679,7 +1679,7 @@
+ static inline int
+ nv_ipmi_set_my_address
+ (
+- ipmi_user_t user,
++ struct ipmi_user *user,
+ unsigned char address
+ )
+ {
+--- a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
++++ b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
+@@ -20,6 +20,8 @@
+ * DEALINGS IN THE SOFTWARE.
+ */
+
++#include
++
+ #include "nvidia-drm-conftest.h"
+
+ #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
+@@ -345,7 +347,11 @@ static int __nv_drm_vma_fault(struct vm_area_struct *vma,
+
+ page_offset = vmf->pgoff - drm_vma_node_start(&gem->vma_node);
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
+ ret = vm_insert_pfn(vma, address, pfn + page_offset);
++#else
++ ret = vmf_insert_pfn(vma, address, pfn + page_offset);
++#endif
+
+ switch (ret) {
+ case 0:
diff --git a/kernel/drivers/module-nvidia390/files/linux-5.1.patch b/kernel/drivers/module-nvidia390/files/linux-5.1.patch
new file mode 100755
index 0000000000..172ff48e9b
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/linux-5.1.patch
@@ -0,0 +1,130 @@
+diff --git a/kernel/common/inc/nv-list-helpers.h b/kernel/common/inc/nv-list-helpers.h
+index 0aed851..d6304c9 100644
+--- a/kernel/common/inc/nv-list-helpers.h
++++ b/kernel/common/inc/nv-list-helpers.h
+@@ -26,6 +26,8 @@
+ #include
+ #include "conftest.h"
+
++#include
++
+ #if !defined (list_for_each)
+ #define list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); pos = (pos)->next)
+@@ -91,10 +93,12 @@
+ list_entry((pos)->member.next, typeof(*(pos)), member)
+ #endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ static inline int list_is_first(const struct list_head *list,
+ const struct list_head *head)
+ {
+ return list->prev == head;
+ }
++#endif
+
+ #endif // __NV_LIST_HELPERS_H__
+diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c
+index 24631c0..ba1497c 100644
+--- a/kernel/nvidia-drm/nvidia-drm-connector.c
++++ b/kernel/nvidia-drm/nvidia-drm-connector.c
+@@ -30,7 +30,12 @@
+ #include "nvidia-drm-utils.h"
+ #include "nvidia-drm-encoder.h"
+
++#include
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ #include
++#else
++#include
++#endif
+
+ #include
+ #include
+diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c
+index 1c2db68..d524d51 100644
+--- a/kernel/nvidia-drm/nvidia-drm-drv.c
++++ b/kernel/nvidia-drm/nvidia-drm-drv.c
+@@ -41,7 +41,12 @@
+
+ #include
+
++#include
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ #include
++#else
++#include
++#endif
+
+ #if defined(NV_DRM_DRM_GEM_H_PRESENT)
+ #include
+diff --git a/kernel/nvidia-drm/nvidia-drm-encoder.c b/kernel/nvidia-drm/nvidia-drm-encoder.c
+index f66bbd7..df38042 100644
+--- a/kernel/nvidia-drm/nvidia-drm-encoder.c
++++ b/kernel/nvidia-drm/nvidia-drm-encoder.c
+@@ -31,7 +31,12 @@
+ #include "nvidia-drm-crtc.h"
+ #include "nvidia-drm-helper.h"
+
++#include
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ #include
++#else
++#include
++#endif
+
+ #include
+ #include
+diff --git a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
+index 8636eff..fd0c8da 100644
+--- a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
++++ b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
+@@ -29,6 +29,8 @@
+
+ #include "nv-mm.h"
+
++#include
++
+ static void __nv_drm_gem_nvkms_memory_free(struct nv_drm_gem_object *nv_gem)
+ {
+ struct nv_drm_device *nv_dev = nv_gem->nv_dev;
+@@ -268,7 +270,11 @@ static int __nv_drm_vma_fault(struct vm_area_struct *vma,
+ */
+
+ #if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ static int nv_drm_vma_fault(struct vm_fault *vmf)
++#else
++static vm_fault_t nv_drm_vma_fault(struct vm_fault *vmf)
++#endif
+ {
+ return __nv_drm_vma_fault(vmf->vma, vmf);
+ }
+diff --git a/kernel/nvidia-uvm/uvm8.c b/kernel/nvidia-uvm/uvm8.c
+index e00923d..2e01e3c 100644
+--- a/kernel/nvidia-uvm/uvm8.c
++++ b/kernel/nvidia-uvm/uvm8.c
+@@ -172,7 +172,11 @@ static int uvm_vm_fault_sigbus(struct vm_area_struct *vma, struct vm_fault *vmf)
+ return VM_FAULT_SIGBUS;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ static int uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
++#else
++static vm_fault_t uvm_vm_fault_sigbus_wrapper(struct vm_fault *vmf)
++#endif
+ {
+ #if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
+ return uvm_vm_fault_sigbus(vmf->vma, vmf);
+@@ -507,7 +511,11 @@ convert_error:
+ }
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+ static int uvm_vm_fault_wrapper(struct vm_fault *vmf)
++#else
++static vm_fault_t uvm_vm_fault_wrapper(struct vm_fault *vmf)
++#endif
+ {
+ #if defined(NV_VM_OPS_FAULT_REMOVED_VMA_ARG)
+ return uvm_vm_fault(vmf->vma, vmf);
diff --git a/kernel/drivers/module-nvidia390/files/modprobe.conf b/kernel/drivers/module-nvidia390/files/modprobe.conf
new file mode 100755
index 0000000000..c9b9bfcf71
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/modprobe.conf
@@ -0,0 +1,2 @@
+blacklist nouveau
+options nouveau modeset=0
diff --git a/kernel/drivers/module-nvidia390/files/nvidia-settings.desktop b/kernel/drivers/module-nvidia390/files/nvidia-settings.desktop
new file mode 100755
index 0000000000..f3dee42865
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/nvidia-settings.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=NVIDIA X Server Settings
+Comment=Configure NVIDIA X Server Settings
+Exec=/usr/bin/nvidia-settings
+Icon=/usr/share/pixmaps/nvidia-settings.png
+Categories=Application;Settings;
+
diff --git a/kernel/drivers/module-nvidia390/files/package-emul32.py b/kernel/drivers/module-nvidia390/files/package-emul32.py
new file mode 100755
index 0000000000..bddedd08c4
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/package-emul32.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia-current"
+libdir = "/usr/lib32/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib32/libGL.so.1.2.0 libGL-32bit %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib32/xorg/modules/volatile xorg-modules-volatile-32bit %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/ld.so.conf.d/10-nvidia-32bit.conf nvidia-ldsoconf-32bit %(datadir)s/32bit-ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL-32bit") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia390/files/package.py b/kernel/drivers/module-nvidia390/files/package.py
new file mode 100755
index 0000000000..71d446b906
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/files/package.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia-current"
+libdir = "/usr/lib/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib/libGL.so.1.2.0 libGL %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib/xorg/modules/volatile xorg-modules-volatile %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/X11/XvMCConfig XvMCConfig %(datadir)s/XvMCConfig \
+# --slave /etc/ld.so.conf.d/10-nvidia.conf nvidia-ldsoconf %(datadir)s/ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia390/pspec.xml b/kernel/drivers/module-nvidia390/pspec.xml
new file mode 100755
index 0000000000..9954037b64
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/pspec.xml
@@ -0,0 +1,141 @@
+
+
+
+
+ module-nvidia390t
+ http://www.nvidia.com
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+ NVIDIA
+ NVIDIA drivers for GeForce 6xxx and newer GPUs
+ NVIDIA graphics drivers provide optimized 2D/3D performance.
+ http://us.download.nvidia.com/XFree86/Linux-x86/390.132/NVIDIA-Linux-x86-390.132.run
+ http://us.download.nvidia.com/XFree86/Linux-x86_64/390.132/NVIDIA-Linux-x86_64-390.132.run
+
+ kernel-module-headers
+ libX11-devel
+ gtk2-devel
+ gtk3-devel
+
+
+
+
+ module-nvidia390
+ driver
+ Kernel module for current NVIDIA graphics driver releases
+
+ kernel
+
+
+
+ /lib/modules
+ /etc/modprobe.d
+
+
+ modprobe.conf
+
+
+ noDelta
+
+
+
+
+
+
+ nvidia-xconfig390
+ app:console
+ hardware.graphics
+ Xconfig file for nvidia390 kernel driver
+
+ module-nvidia-current
+
+
+ /usr/bin/nvidia-xconfig
+ /usr/share/man/man1/nvidia-xconfig.1
+
+
+
+
+ xorg-video-nvidia390
+ driver
+ x11.driver
+
+ libXext
+ libX11
+ mesa
+ xorg-server
+ module-nvidia390
+
+
+ xorg-video-nvidia-current
+ xorg-video-nvidia304
+ xorg-video-nvidia340
+
+
+ /etc/OpenCL
+ /usr/bin
+ /usr/lib
+ /usr/share/X11
+ /usr/share/nvidia-current
+ /usr/share/doc
+ /usr/share/man
+
+
+ System.Package
+
+
+ noDelta
+
+
+
+
+ xorg-video-nvidia390-32bit
+ emul32
+ 32-bit shared libraries for xorg-video-nvidia390
+ emul32
+
+ libvdpau-32bit
+
+
+ zlib-32bit
+ mesa-32bit
+ libX11-32bit
+ libXext-32bit
+ xorg-video-nvidia390
+ atk
+ gtk2
+ gtk3
+ cairo
+ glib2
+ pango
+ gdk-pixbuf
+
+
+ xorg-video-nvidia-current-32bit
+ xorg-video-nvidia304-32bit
+ xorg-video-nvidia340-32bit
+
+
+ /usr/lib32
+ /usr/share/nvidia-current/32bit-ld.so.conf
+
+
+ System.Package
+
+
+ noDelta
+
+
+
+
+
+ 2019-12-12
+ 390.132
+ First release
+ İdris Kalp
+ idriskalp@gmail.com
+
+
+
diff --git a/kernel/drivers/module-nvidia390/translations.xml b/kernel/drivers/module-nvidia390/translations.xml
new file mode 100755
index 0000000000..28509a6e6d
--- /dev/null
+++ b/kernel/drivers/module-nvidia390/translations.xml
@@ -0,0 +1,25 @@
+
+
+
+ module-nvidia-current
+ GeForce 6xxx ve daha yeni NVIDIA ekran kartları için sürücüler
+ NVIDIA grafik sürücüleri daha iyi 2B/3B başarımı sağlar.
+ Controladores de kernel nVIDIA y glx para rendimiento optimizado 2d/3d en Linux (Para NV3X o mejor).
+ Controladores nVIDIA de kernel y glx para tarjetas NV3 o mejor (Geforce FX o mejor)
+
+
+
+ module-nvidia-current
+ Güncel NVIDIA grafik sürücüleri için çekirdek modülü
+
+
+
+ xorg-video-nvidia-current
+ Güncel NVIDIA userspace sürücüleri ve ikili dosyaları
+
+
+
+ xorg-video-nvidia-current-32bit
+ xorg-video-nvidia-current için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/kernel/drivers/module-nvidia430/actions.py b/kernel/drivers/module-nvidia430/actions.py
new file mode 100755
index 0000000000..b5a9cc2c5c
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/actions.py
@@ -0,0 +1,251 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import kerneltools
+
+WorkDir = "."
+KDIR = kerneltools.getKernelVersion()
+NoStrip = ["/lib/modules"]
+
+version = get.srcVERSION()
+driver_dir_name = "nvidia430"
+datadir = "/usr/share/%s" % driver_dir_name
+libdir = "/usr/lib32" if get.buildTYPE() == 'emul32' else "/usr/lib"
+arch = "x86" if get.buildTYPE() == 'emul32' else get.ARCH().replace("i6", "x")
+nvlibdir = "%s/%s" % (libdir, driver_dir_name)
+xorglibdir= "%s/xorg" % libdir
+
+def setup():
+ shelltools.system("sh NVIDIA-Linux-x86_64-%s.run -x --target tmp"
+ % get.srcVERSION())
+ shelltools.move("tmp/*", ".")
+
+ #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-390.87-kernel-4.19.patch")
+ #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-390.87-kernel-4.20.patch")
+
+ #shelltools.system("patch -p1 < header-fix.patch")
+
+ # Our libc is TLS enabled so use TLS library
+ #shelltools.unlink("*-tls.so*")
+ #shelltools.move("tls/*", ".")
+
+ # xorg-server provides libwfb.so
+ #shelltools.unlink("libnvidia-wfb.so.*")
+
+ shelltools.echo("ld.so.conf", nvlibdir)
+ shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
+
+def build():
+ # We don't need kernel module for emul32 build
+ if get.buildTYPE() == 'emul32':
+ return
+
+ shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
+ shelltools.cd("kernel")
+ autotools.make("module")
+
+
+def install():
+
+ if not get.buildTYPE() == 'emul32':
+ # Kernel driver
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-drm.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-uvm.ko")
+
+ pisitools.insinto("/lib/modules/%s/extra" % KDIR,
+ "kernel/nvidia-modeset.ko")
+
+ # Command line tools and their man pages
+ pisitools.dobin("nvidia-smi")
+ pisitools.doman("nvidia-smi.1.gz")
+ pisitools.dobin("nvidia-debugdump")
+ #pisitools.dobin("nvidia-xconfig")
+ #pisitools.doman("nvidia-xconfig.1.gz")
+ pisitools.dobin("nvidia-bug-report.sh")
+ pisitools.dobin("nvidia-cuda-mps-server")
+ pisitools.dobin("nvidia-cuda-mps-control")
+ pisitools.doman("nvidia-cuda-mps-control.1.gz")
+ pisitools.dobin("nvidia-modprobe")
+ pisitools.doman("nvidia-modprobe.1.gz")
+ pisitools.dobin("nvidia-persistenced")
+ pisitools.doman("nvidia-persistenced.1.gz")
+ #pisitools.dobin("nvidia-settings")
+ #pisitools.doman("nvidia-settings.1.gz")
+
+
+ ### Libraries
+
+ # 32-bit libraries
+ if get.buildTYPE() == 'emul32':
+ pisitools.dolib("32/libGL.so.%s" % version, nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1" % nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so" % nvlibdir)
+
+ pisitools.dolib("32/libEGL.so.1.1.0", nvlibdir)
+ pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so.1" % nvlibdir)
+ pisitools.dosym("32/libEGL.so.1.1.0", "%s/libEGL.so" % nvlibdir)
+ pisitools.dolib("32/libEGL_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("32/libGLESv1_CM_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("32/libGLESv2_nvidia.so.%s" % version, libdir)
+
+ pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
+ pisitools.dolib("32/libnvidia-compiler.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
+
+ #pisitools.dolib("32/libOpenCL.so.1.0.0", libdir)
+ #pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
+
+ pisitools.dolib("32/libnvidia-opencl.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
+ pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
+
+ pisitools.dolib("32/libcuda.so.%s" % version, libdir)
+ pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
+ pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
+
+ pisitools.dolib("32/libnvcuvid.so.%s" % version, libdir)
+ pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
+ pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
+
+ pisitools.dolib("32/libnvidia-ml.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
+
+ for lib in ("eglcore", "encode", "fatbinaryloader", "fbc", "glcore", "glsi", \
+ "glvkspirv", "ifr", "opticalflow", "ptxjitcompiler", "tls" ):
+ pisitools.dolib("32/libnvidia-%s.so.%s" % (lib, version), libdir)
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
+
+ pisitools.dolib("32/libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
+ pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
+
+
+ pisitools.dolib("32/libGLX_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
+
+ else:
+ # OpenGl library
+ pisitools.dolib("libGL.so.%s" % version, nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1" % nvlibdir)
+ pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so" % nvlibdir)
+
+ pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
+ pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so.1" % nvlibdir)
+ pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so" % nvlibdir)
+ pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
+ pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
+
+ pisitools.dolib("libGLdispatch.so.0", libdir)
+ pisitools.dosym("libGLdispatch.so.0", "%s/libGLdispatch.so" % libdir)
+
+ # OpenCL
+ pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
+ pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
+ pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
+
+ #pisitools.dolib("libOpenCL.so.1.0.0", libdir)
+ #pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
+ #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
+
+ pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
+ pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
+
+ # CUDA
+ pisitools.dolib("libcuda.so.%s" % version, libdir)
+ pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
+ pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
+
+ pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
+ pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
+ pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
+
+ # NVML
+ # Provides programmatic access to static information and monitoring
+ # data for NVIDIA GPUs, as well as limited managment capabilities
+ pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
+
+ pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
+ pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
+
+ pisitools.dolib("libnvoptix.so.%s" % version, libdir)
+ pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so.1" % libdir)
+ pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so" % libdir)
+
+ pisitools.dolib("libnvidia-egl-wayland.so.1.1.2", libdir)
+ pisitools.dosym("libnvidia-egl-wayland.so.1.1.2", "%s/libnvidia-egl-wayland.so.1" % libdir)
+ pisitools.dosym("libnvidia-egl-wayland.so.1.1.2", "%s/libnvidia-egl-wayland.so" % libdir)
+
+ # OpenGL core library and others
+ for lib in ("cbl", "eglcore", "encode", "fatbinaryloader", "fbc", "glcore", "glsi", \
+ "glvkspirv", "ifr", "opticalflow", "ptxjitcompiler", "rtcore", "tls" ):
+ pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
+ pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
+
+ # VDPAU driver
+ pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
+ pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
+
+ # X modules
+ pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
+ pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s" % nvlibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/libglx.so.1" % nvlibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/libglx.so" % nvlibdir)
+ pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions" % xorglibdir)
+ pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
+ pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
+ pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
+
+ pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
+ # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
+ # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
+ #pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
+
+ #pisitools.dolib("libnvidia-gtk2.so.%s" % version, libdir)
+ #pisitools.dolib("libnvidia-gtk3.so.%s" % version, libdir)
+
+
+
+
+ # Exit time for emul32 build
+ #if get.buildTYPE() == 'emul32':
+ #pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
+ #return
+
+ pisitools.insinto(datadir, "ld.so.conf")
+ pisitools.insinto(datadir, "XvMCConfig")
+
+ # Documentation
+ docdir = "xorg-video-%s" % driver_dir_name
+ pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
+ pisitools.dohtml("html/*", destDir=docdir)
+
+ ### Note
+ # This package includes nvidia-setting and nvidia-xconfig binaries. However
+ # we have seperate packages for each of them. Nvidia provides tarballs for
+ # these binaries. Don't forget to update these package with each NVIDIA
+ # driver update.
diff --git a/kernel/drivers/module-nvidia430/comar/package-emul32.py b/kernel/drivers/module-nvidia430/comar/package-emul32.py
new file mode 100755
index 0000000000..bddedd08c4
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/comar/package-emul32.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia-current"
+libdir = "/usr/lib32/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib32/libGL.so.1.2.0 libGL-32bit %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib32/xorg/modules/volatile xorg-modules-volatile-32bit %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/ld.so.conf.d/10-nvidia-32bit.conf nvidia-ldsoconf-32bit %(datadir)s/32bit-ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL-32bit") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL-32bit %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia430/comar/package.py b/kernel/drivers/module-nvidia430/comar/package.py
new file mode 100755
index 0000000000..71d446b906
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/comar/package.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+
+import os
+
+driver_dir_name = "nvidia-current"
+libdir = "/usr/lib/%s" % driver_dir_name
+datadir = "/usr/share/%s" % driver_dir_name
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system(" /usr/sbin/alternatives \
+ --install /usr/lib/libGL.so.1.2.0 libGL %(libdir)s/libGL.so.1.2.0 50 \
+ --slave /usr/lib/xorg/modules/volatile xorg-modules-volatile %(libdir)s/modules"
+ % {"libdir": libdir, "datadir": datadir})
+# --slave /etc/X11/XvMCConfig XvMCConfig %(datadir)s/XvMCConfig \
+# --slave /etc/ld.so.conf.d/10-nvidia.conf nvidia-ldsoconf %(datadir)s/ld.so.conf"
+
+ # If this driver is in use, refresh links after installation.
+ if os.readlink("/etc/alternatives/libGL") == "%s/libGL.so.1.2.0" % libdir:
+ os.system("/usr/sbin/alternatives --set libGL %s/libGL.so.1.2.0" % libdir)
+ os.system("/sbin/ldconfig -X")
+
+def preRemove():
+ # FIXME This is not needed when upgrading package; but pisi does not
+ # provide a way to learn operation type.
+ #os.system("/usr/sbin/alternatives --remove libGL %s/libGL.so.1.2.0" % libdir)
+ pass
diff --git a/kernel/drivers/module-nvidia430/files/modprobe.conf b/kernel/drivers/module-nvidia430/files/modprobe.conf
new file mode 100755
index 0000000000..c9b9bfcf71
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/files/modprobe.conf
@@ -0,0 +1,2 @@
+blacklist nouveau
+options nouveau modeset=0
diff --git a/kernel/drivers/module-nvidia430/pspec.xml b/kernel/drivers/module-nvidia430/pspec.xml
new file mode 100755
index 0000000000..27b499fb2b
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/pspec.xml
@@ -0,0 +1,177 @@
+
+
+
+
+ module-nvidia430
+ http://www.nvidia.com
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+ NVIDIA
+ NVIDIA drivers for GeForce 6xxx and newer GPUs
+ NVIDIA graphics drivers provide optimized 2D/3D performance.
+ http://http.download.nvidia.com/XFree86/Linux-x86_64/430.64/NVIDIA-Linux-x86_64-430.64.run
+
+ kernel-module-headers
+ libX11-devel
+ gtk2-devel
+ gtk3-devel
+
+
+
+
+
+
+
+ module-nvidia430
+ driver
+ Kernel module for current NVIDIA graphics driver releases
+
+ kernel
+
+
+
+ /lib/modules
+ /etc/modprobe.d
+
+
+ modprobe.conf
+
+
+ noDelta
+
+
+
+
+
+
+
+
+ xorg-video-nvidia430
+ driver
+ x11.driver
+
+ libXext
+ libX11
+ mesa
+ xorg-server
+ opencl-icd
+ vulkan
+ module-nvidia430
+
+
+ /etc/OpenCL
+ /usr/bin
+ /usr/lib
+ /usr/share/X11
+ /usr/share/nvidia430
+ /usr/share/doc
+ /usr/share/man
+
+
+ System.Package
+
+
+ noDelta
+
+
+
+
+ xorg-video-nvidia430-32bit
+ emul32
+ 32-bit shared libraries for xorg-video-nvidia430
+ emul32
+
+ libvdpau-32bit
+
+
+ zlib-32bit
+ mesa-32bit
+ libX11-32bit
+ libXext-32bit
+ opencl-icd-32bit
+ vulkan-32bit
+ xorg-video-nvidia430
+ atk
+ gtk2
+ gtk3
+ cairo
+ glib2
+ pango
+ gdk-pixbuf
+
+
+ /usr/lib32
+ /usr/share/nvidia430/32bit-ld.so.conf
+
+
+ System.Package
+
+
+ noDelta
+
+
+
+
+
+ 2019-11-03
+ 430.64
+ First release
+ İdris Kalp
+ idriskalp@gmail.com
+
+
+
diff --git a/kernel/drivers/module-nvidia430/translations.xml b/kernel/drivers/module-nvidia430/translations.xml
new file mode 100755
index 0000000000..dec069b65a
--- /dev/null
+++ b/kernel/drivers/module-nvidia430/translations.xml
@@ -0,0 +1,25 @@
+
+
+
+ module-nvidia430
+ GeForce 6xxx ve daha yeni NVIDIA ekran kartları için sürücüler
+ NVIDIA grafik sürücüleri daha iyi 2B/3B başarımı sağlar.
+ Controladores de kernel nVIDIA y glx para rendimiento optimizado 2d/3d en Linux (Para NV3X o mejor).
+ Controladores nVIDIA de kernel y glx para tarjetas NV3 o mejor (Geforce FX o mejor)
+
+
+
+ module-nvidia430
+ Güncel NVIDIA grafik sürücüleri için çekirdek modülü
+
+
+
+ xorg-video-nvidia430
+ Güncel NVIDIA userspace sürücüleri ve ikili dosyaları
+
+
+
+ xorg-video-nvidia430-32bit
+ xorg-video-nvidia-current için 32-bit paylaşımlı kitaplıklar
+
+