diff options
author | Jason Stryker | 2020-04-06 18:59:07 -0400 |
---|---|---|
committer | Jason Stryker | 2020-04-06 18:59:07 -0400 |
commit | f88767b69ae3c9600378b0cfabf64d92cc95ca97 (patch) | |
tree | ac3ff827d808bbe145ec0f7fa277139027c69b4d | |
parent | baf6517e04f97c748c87ed8a4cd284c341cd259a (diff) | |
download | aur-f88767b69ae3c9600378b0cfabf64d92cc95ca97.tar.gz |
kernel 5.6 support
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | kernel-5.1.patch | 258 | ||||
-rw-r--r-- | kernel-5.6.patch | 503 | ||||
-rw-r--r-- | nvidia-drm-outputclass.conf | 7 |
5 files changed, 518 insertions, 276 deletions
@@ -1,7 +1,7 @@ pkgbase = nvidia-vulkan pkgdesc = NVIDIA drivers for linux (vulkan developer branch) pkgver = 440.66.08 - pkgrel = 1 + pkgrel = 2 url = https://developer.nvidia.com/vulkan-driver arch = x86_64 license = custom @@ -12,9 +12,11 @@ pkgbase = nvidia-vulkan source = NVIDIA-Linux-x86_64-440.66.08.run::https://developer.nvidia.com/vulkan-beta-4406608-linux source = nvidia-drm-outputclass.conf source = nvidia-vulkan-utils.sysusers + source = kernel-5.6.patch sha512sums = 9ac38192cfcb4791f0644e3561c046e5c9e29267b4f48c04d861d5b2da70f6df0353d726b5ed256d402a68c6589044c646d9ec97c540c031c36a5f4ad1146451 - sha512sums = c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48 + sha512sums = de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770 sha512sums = 4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499 + sha512sums = a622f4d784103d58f30c584976060ba499f794a0852c469da202314842495bdfbbcae8a510b534eec4477590a1181cae1b98d239a54a60ef2bd752b6ca8ebd1b pkgname = nvidia-vulkan pkgdesc = NVIDIA drivers for linux (vulkan developer branch) @@ -29,8 +31,6 @@ pkgname = nvidia-vulkan-dkms depends = dkms depends = nvidia-vulkan-utils=440.66.08 depends = libglvnd - optdepends = linux-headers: Build the module for Arch kernel - optdepends = linux-lts-headers: Build the module for LTS Arch kernel provides = nvidia=440.66.08 conflicts = nvidia @@ -1,5 +1,5 @@ # $Id$ -# Maintainer: jcstryker <inbox at jasonstryker dot com> +# Maintainer: jcstryker <public at jasonstryker dot com> # Contributor: Sven-Hendrik Haase <sh@lutzhaase.com> # Contributor: Felix Yan <felixonmars@archlinux.org> # Contributor: Thomas Baechler <thomas@archlinux.org> @@ -9,7 +9,7 @@ pkgbase=nvidia-vulkan pkgname=('nvidia-vulkan' 'nvidia-vulkan-dkms' 'nvidia-vulkan-utils' 'opencl-nvidia-vulkan' 'lib32-nvidia-vulkan-utils' 'lib32-opencl-nvidia-vulkan') pkgver=440.66.08 -pkgrel=1 +pkgrel=2 pkgdesc="NVIDIA drivers for linux (vulkan developer branch)" arch=('x86_64') url="https://developer.nvidia.com/vulkan-driver" @@ -19,10 +19,12 @@ options=('!strip') _pkg="NVIDIA-Linux-x86_64-${pkgver}" source=("${_pkg}.run::https://developer.nvidia.com/vulkan-beta-${pkgver//.}-linux" 'nvidia-drm-outputclass.conf' - 'nvidia-vulkan-utils.sysusers') + 'nvidia-vulkan-utils.sysusers' + 'kernel-5.6.patch') sha512sums=('9ac38192cfcb4791f0644e3561c046e5c9e29267b4f48c04d861d5b2da70f6df0353d726b5ed256d402a68c6589044c646d9ec97c540c031c36a5f4ad1146451' - 'c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48' - '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499') + 'de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770' + '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499' + 'a622f4d784103d58f30c584976060ba499f794a0852c469da202314842495bdfbbcae8a510b534eec4477590a1181cae1b98d239a54a60ef2bd752b6ca8ebd1b') create_links() { # create soname links @@ -40,6 +42,9 @@ prepare() { bsdtar -xf nvidia-persistenced-init.tar.bz2 + # https://gitlab.com/snippets/1945940 (Thanks to https://gitlab.com/EULA) + patch -Np1 -i ../kernel-5.6.patch + # Fixing regex pattern for Module.symvers sed -i "s/${TAB}vmlinux/${TAB}*vmlinux/g" kernel/conftest.sh sed -i "s/TAB=' '/TAB='\\\t'/g" kernel/conftest.sh @@ -90,8 +95,6 @@ package_nvidia-vulkan() { package_nvidia-vulkan-dkms() { pkgdesc="NVIDIA driver sources for linux (vulkan developer branch)" depends=('dkms' "nvidia-vulkan-utils=${pkgver}" 'libglvnd') - optdepends=('linux-headers: Build the module for Arch kernel' - 'linux-lts-headers: Build the module for LTS Arch kernel') provides=("nvidia=$pkgver") conflicts+=('nvidia') @@ -171,6 +174,7 @@ package_nvidia-vulkan-utils() { # Vulkan ICD install -D -m644 "nvidia_icd.json" "${pkgdir}/usr/share/vulkan/icd.d/nvidia_icd.json" + install -D -m644 "nvidia_layers.json" "${pkgdir}/usr/share/vulkan/implicit_layer.d/nvidia_layers.json" # VDPAU install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}" diff --git a/kernel-5.1.patch b/kernel-5.1.patch deleted file mode 100644 index 0a51ea695827..000000000000 --- a/kernel-5.1.patch +++ /dev/null @@ -1,258 +0,0 @@ -diff --git a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c -index 1db7777..863bb77 100644 ---- 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 <linux/version.h> -+ - #include "nvidia-drm-conftest.h" - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -diff --git a/kernel/nvidia-drm/nvidia-drm-encoder.c b/kernel/nvidia-drm/nvidia-drm-encoder.c -index f66bbd7c9..4de87a271 100644 ---- a/kernel/nvidia-drm/nvidia-drm-encoder.c -+++ b/kernel/nvidia-drm/nvidia-drm-encoder.c -@@ -20,6 +20,8 @@ - * DEALINGS IN THE SOFTWARE. - */ - -+#include <linux/version.h> -+ - #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c -index 58fd2724a..fc9169a96 100644 ---- a/kernel/nvidia-drm/nvidia-drm-drv.c -+++ b/kernel/nvidia-drm/nvidia-drm-drv.c -@@ -20,6 +20,8 @@ - * DEALINGS IN THE SOFTWARE. - */ - -+#include <linux/version.h> -+ - #include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE and NV_DRM_DRM_GEM_H_PRESENT */ - - #include "nvidia-drm-priv.h" - -diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c -index 4dd12d112..44c9d8ed3 100644 ---- a/kernel/nvidia-drm/nvidia-drm-connector.c -+++ b/kernel/nvidia-drm/nvidia-drm-connector.c -@@ -20,6 +20,8 @@ - * DEALINGS IN THE SOFTWARE. - */ - -+#include <linux/version.h> -+ - #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -diff --git a/kernel/common/inc/nv.h b/kernel/common/inc/nv.h -index d52c2a1ef..f6dc2dc32 100644 ---- a/kernel/common/inc/nv.h -+++ b/kernel/common/inc/nv.h -@@ -18,6 +18,8 @@ - #include <stdarg.h> - #include <nv-kernel-interface-api.h> - -+#include <linux/version.h> -+ - #if !defined(NV_MIN) - #define NV_MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b)) - #endif - -diff --git a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h -index f276588db..7cbdbe632 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem.h -+++ b/kernel/nvidia-drm/nvidia-drm-gem.h -@@ -38,6 +38,8 @@ - - #endif - -+#include <linux/version.h> -+ - struct nv_drm_gem_object; - - struct nv_drm_gem_object_funcs { - -diff --git a/kernel/nvidia-drm/nvidia-drm-helper.c b/kernel/nvidia-drm/nvidia-drm-helper.c -index 4ccf81929..7fb59bbb3 100644 ---- a/kernel/nvidia-drm/nvidia-drm-helper.c -+++ b/kernel/nvidia-drm/nvidia-drm-helper.c -@@ -29,6 +29,8 @@ - - #include "nvidia-drm-helper.h" - -+#include <linux/version.h> -+ - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - - #include <drm/drmP.h> - -diff --git a/kernel/nvidia-drm/nvidia-drm-linux.c b/kernel/nvidia-drm/nvidia-drm-linux.c -index 5a2bbc18c..133d8fe64 100644 ---- a/kernel/nvidia-drm/nvidia-drm-linux.c -+++ b/kernel/nvidia-drm/nvidia-drm-linux.c -@@ -20,6 +20,8 @@ - * DEALINGS IN THE SOFTWARE. - */ - -+#include <linux/version.h> -+ - #include <linux/module.h> - #include <linux/slab.h> - #include <linux/err.h> - -diff --git a/kernel/nvidia-uvm/uvm_linux.h b/kernel/nvidia-uvm/uvm_linux.h -index 8707ac070..990cefbd4 100644 ---- a/kernel/nvidia-uvm/uvm_linux.h -+++ b/kernel/nvidia-uvm/uvm_linux.h -@@ -29,6 +29,8 @@ - // - // - -+#include <linux/version.h> -+ - #ifndef _UVM_LINUX_H - #define _UVM_LINUX_H - -diff --git a/kernel/nvidia/nvlink_linux.c b/kernel/nvidia/nvlink_linux.c -index c13b72515..db691679c 100644 ---- a/kernel/nvidia/nvlink_linux.c -+++ b/kernel/nvidia/nvlink_linux.c -@@ -37,6 +37,8 @@ - #include <linux/string.h> - #include <linux/mutex.h> - -+#include <linux/version.h> -+ - #define MAX_ERROR_STRING 512 - - #define NV_MAX_ISR_DELAY_US 20000 - -diff --git a/kernel/nvidia/os-interface.c b/kernel/nvidia/os-interface.c -index d1c889f69..88c57b2da 100644 ---- a/kernel/nvidia/os-interface.c -+++ b/kernel/nvidia/os-interface.c -@@ -14,6 +14,8 @@ - #include "os-interface.h" - #include "nv-linux.h" - -+#include <linux/version.h> -+ - #define MAX_ERROR_STRING 512 - static char nv_error_string[MAX_ERROR_STRING]; - nv_spinlock_t nv_error_string_lock; - -diff --git a/kernel/nvidia-modeset/nvidia-modeset-linux.c b/kernel/nvidia-modeset/nvidia-modeset-linux.c -index 1b9148ee7..4c1bd3617 100644 ---- a/kernel/nvidia-modeset/nvidia-modeset-linux.c -+++ b/kernel/nvidia-modeset/nvidia-modeset-linux.c -@@ -8,6 +8,8 @@ - * _NVRM_COPYRIGHT_END_ - */ - -+#include <linux/version.h> -+ - #include <linux/module.h> - #include <linux/kernel.h> - #include <linux/slab.h> - -diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c -index 4dd12d112..44c9d8ed3 100644 ---- a/kernel/nvidia-drm/nvidia-drm-connector.c -+++ b/kernel/nvidia-drm/nvidia-drm-connector.c -@@ -201,6 +203,12 @@ nv_drm_connector_detect(struct drm_connector *connector, bool force) - return __nv_drm_connector_detect_internal(connector); - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) -+int drm_helper_probe_single_connector_modes(struct drm_connector -+ *connector, uint32_t maxX, -+ uint32_t maxY); -+#endif -+ - static struct drm_connector_funcs nv_connector_funcs = { - #if defined NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT - .dpms = drm_atomic_helper_connector_dpms, -diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c -index 58fd2724a..fc9169a96 100644 ---- a/kernel/nvidia-drm/nvidia-drm-drv.c -+++ b/kernel/nvidia-drm/nvidia-drm-drv.c -@@ -35,6 +37,13 @@ - #include "nvidia-drm-gem-nvkms-memory.h" - #include "nvidia-drm-gem-user-memory.h" - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) -+void drm_kms_helper_poll_init(struct drm_device *dev); -+void drm_kms_helper_poll_fini(struct drm_device *dev); -+bool drm_helper_hpd_irq_event(struct drm_device *dev); -+void drm_kms_helper_poll_disable(struct drm_device *dev); -+#endif -+ - #if defined(NV_DRM_AVAILABLE) - - #include "nvidia-drm-ioctl.h" -diff --git a/kernel/nvidia-drm/nvidia-drm-encoder.c b/kernel/nvidia-drm/nvidia-drm-encoder.c -index f66bbd7c9..4de87a271 100644 ---- a/kernel/nvidia-drm/nvidia-drm-encoder.c -+++ b/kernel/nvidia-drm/nvidia-drm-encoder.c -@@ -36,6 +38,10 @@ - #include <drm/drm_atomic.h> - #include <drm/drm_atomic_helper.h> - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) -+void drm_kms_helper_hotplug_event(struct drm_device *dev); -+#endif -+ - static void nv_drm_encoder_destroy(struct drm_encoder *encoder) - { - struct nv_drm_encoder *nv_encoder = to_nv_encoder(encoder); -@@ -152,6 +158,12 @@ nv_drm_encoder_new(struct drm_device *dev, - return &nv_encoder->base; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) -+int drm_helper_probe_single_connector_modes(struct drm_connector -+ *connector, uint32_t maxX, -+ uint32_t maxY); -+#endif -+ - /* - * Add encoder for given NvKmsKapiDisplay - */ -diff --git a/kernel/nvidia-uvm/uvm8.c b/kernel/nvidia-uvm/uvm8.c -index 44467988e..4cba5dc33 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-5.6.patch b/kernel-5.6.patch new file mode 100644 index 000000000000..1fc5b31bd821 --- /dev/null +++ b/kernel-5.6.patch @@ -0,0 +1,503 @@ +diff --git a/kernel/common/inc/nv-procfs.h b/kernel/common/inc/nv-procfs.h +index 8b53f86..4c5aceb 100644 +--- a/kernel/common/inc/nv-procfs.h ++++ b/kernel/common/inc/nv-procfs.h +@@ -28,6 +28,18 @@ + + #define IS_EXERCISE_ERROR_FORWARDING_ENABLED() (EXERCISE_ERROR_FORWARDING) + ++#if defined(NV_HAVE_PROC_OPS) ++#define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ ++ ({ \ ++ struct proc_dir_entry *__entry; \ ++ int mode = (S_IFREG | S_IRUGO); \ ++ const struct proc_ops *fops = &nv_procfs_##__name##_fops; \ ++ if (fops->proc_write != 0) \ ++ mode |= S_IWUSR; \ ++ __entry = proc_create_data(filename, mode, parent, fops, __data);\ ++ __entry; \ ++ }) ++#else + #define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ + ({ \ + struct proc_dir_entry *__entry; \ +@@ -38,6 +50,7 @@ + __entry = proc_create_data(filename, mode, parent, fops, __data);\ + __entry; \ + }) ++#endif + + /* + * proc_mkdir_mode exists in Linux 2.6.9, but isn't exported until Linux 3.0. +@@ -77,6 +90,44 @@ + remove_proc_entry(entry->name, entry->parent); + #endif + ++#if defined(NV_HAVE_PROC_OPS) ++#define NV_DEFINE_SINGLE_PROCFS_FILE(name, open_callback, close_callback) \ ++ static int nv_procfs_open_##name( \ ++ struct inode *inode, \ ++ struct file *filep \ ++ ) \ ++ { \ ++ int ret; \ ++ ret = single_open(filep, nv_procfs_read_##name, \ ++ NV_PDE_DATA(inode)); \ ++ if (ret < 0) \ ++ { \ ++ return ret; \ ++ } \ ++ ret = open_callback(); \ ++ if (ret < 0) \ ++ { \ ++ single_release(inode, filep); \ ++ } \ ++ return ret; \ ++ } \ ++ \ ++ static int nv_procfs_release_##name( \ ++ struct inode *inode, \ ++ struct file *filep \ ++ ) \ ++ { \ ++ close_callback(); \ ++ return single_release(inode, filep); \ ++ } \ ++ \ ++ static const struct proc_ops nv_procfs_##name##_fops = { \ ++ .proc_open = nv_procfs_open_##name, \ ++ .proc_read = seq_read, \ ++ .proc_lseek = seq_lseek, \ ++ .proc_release = nv_procfs_release_##name, \ ++ }; ++#else + #define NV_DEFINE_SINGLE_PROCFS_FILE(name, open_callback, close_callback) \ + static int nv_procfs_open_##name( \ + struct inode *inode, \ +@@ -114,6 +165,7 @@ + .llseek = seq_lseek, \ + .release = nv_procfs_release_##name, \ + }; ++#endif + + #endif /* CONFIG_PROC_FS */ + +diff --git a/kernel/common/inc/nv-time.h b/kernel/common/inc/nv-time.h +index 968b873..f03c7b0 100644 +--- a/kernel/common/inc/nv-time.h ++++ b/kernel/common/inc/nv-time.h +@@ -27,7 +27,12 @@ + + #include <linux/ktime.h> + +-static inline void nv_gettimeofday(struct timeval *tv) ++struct nv_timeval { ++ __kernel_long_t tv_sec; ++ __kernel_suseconds_t tv_usec; ++}; ++ ++static inline void nv_gettimeofday(struct nv_timeval *tv) + { + #ifdef NV_DO_GETTIMEOFDAY_PRESENT + do_gettimeofday(tv); +@@ -36,7 +41,7 @@ static inline void nv_gettimeofday(struct timeval *tv) + + ktime_get_real_ts64(&now); + +- *tv = (struct timeval) { ++ *tv = (struct nv_timeval) { + .tv_sec = now.tv_sec, + .tv_usec = now.tv_nsec/1000, + }; +diff --git a/kernel/conftest.sh b/kernel/conftest.sh +index 57d85a4..4eb703f 100755 +--- a/kernel/conftest.sh ++++ b/kernel/conftest.sh +@@ -806,6 +806,46 @@ compile_test() { + compile_check_conftest "$CODE" "NV_FILE_OPERATIONS_HAS_IOCTL" "" "types" + ;; + ++ proc_ops) ++ CODE=" ++ #include <linux/proc_fs.h> ++ int conftest_proc_ops(void) { ++ return offsetof(struct proc_ops, proc_open); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_HAVE_PROC_OPS" "" "types" ++ ;; ++ ++ ktime_get_raw_ts64) ++ # ++ # Determine if the ktime_get_raw_ts64() function is present. ++ # ++ CODE=" ++ #include <linux/ktime.h> ++ int conftest_ktime_get_raw_ts64(void) { ++ struct timespec64 ts = {0}; ++ ++ ktime_get_raw_ts64(&ts64); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_KTIME_GET_RAW_TS64_PRESENT" "" "functions" ++ ;; ++ ++ ktime_get_real_ts64) ++ # ++ # Determine if the ktime_get_real_ts64() function is present. ++ # ++ CODE=" ++ #include <linux/ktime.h> ++ int conftest_ktime_get_raw_ts64(void) { ++ struct timespec64 ts = {0}; ++ ++ ktime_get_real_ts64(&ts64); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_KTIME_GET_REAL_TS64_PRESENT" "" "functions" ++ ;; ++ + sg_alloc_table) + # + # sg_alloc_table_from_pages added by commit efc42bc98058 +diff --git a/kernel/nvidia-modeset/nvidia-modeset-linux.c b/kernel/nvidia-modeset/nvidia-modeset-linux.c +index 0ca2c7d..8902143 100644 +--- a/kernel/nvidia-modeset/nvidia-modeset-linux.c ++++ b/kernel/nvidia-modeset/nvidia-modeset-linux.c +@@ -266,7 +266,7 @@ void NVKMS_API_CALL nvkms_usleep(NvU64 usec) + + NvU64 NVKMS_API_CALL nvkms_get_usec(void) + { +- struct timeval tv; ++ struct nv_timeval tv; + + nv_gettimeofday(&tv); + +diff --git a/kernel/nvidia-uvm/uvm_linux.h b/kernel/nvidia-uvm/uvm_linux.h +index 30a9dea..1a20eff 100644 +--- a/kernel/nvidia-uvm/uvm_linux.h ++++ b/kernel/nvidia-uvm/uvm_linux.h +@@ -301,7 +301,16 @@ static inline uint64_t NV_DIV64(uint64_t dividend, uint64_t divisor, uint64_t *r + } + #endif + +-#if defined(CLOCK_MONOTONIC_RAW) ++#if defined(NV_KTIME_GET_RAW_TS64_PRESENT) ++static inline NvU64 NV_GETTIME(void) ++{ ++ struct timespec64 ts; ++ ++ ktime_get_raw_ts64(&ts); ++ ++ return (ts.tv_sec * 1000000000ULL + ts.tv_nsec); ++} ++#elif defined(CLOCK_MONOTONIC_RAW) + /* Return a nanosecond-precise value */ + static inline NvU64 NV_GETTIME(void) + { +@@ -317,7 +326,7 @@ static inline NvU64 NV_GETTIME(void) + * available non-GPL symbols. */ + static inline NvU64 NV_GETTIME(void) + { +- struct timeval tv = {0}; ++ struct nv_timeval tv = {0}; + + nv_gettimeofday(&tv); + +diff --git a/kernel/nvidia/linux_nvswitch.c b/kernel/nvidia/linux_nvswitch.c +index 1d2c1bc..0a0b4e8 100644 +--- a/kernel/nvidia/linux_nvswitch.c ++++ b/kernel/nvidia/linux_nvswitch.c +@@ -1578,10 +1578,17 @@ nvswitch_os_get_platform_time + void + ) + { ++#if defined(NV_KTIME_GET_REAL_TS64_PRESENT) ++ struct timespec64 ts64; ++ ++ ktime_get_real_ts64(&ts64); ++ return ((NvU64)(ts64.tv_sec * NSEC_PER_SEC) + ts64.tv_nsec); ++#else + struct timespec ts; + + getnstimeofday(&ts); + return ((NvU64) timespec_to_ns(&ts)); ++#endif + } + + void +diff --git a/kernel/nvidia/nv-procfs.c b/kernel/nvidia/nv-procfs.c +index 064d727..a7308d3 100644 +--- a/kernel/nvidia/nv-procfs.c ++++ b/kernel/nvidia/nv-procfs.c +@@ -452,6 +452,15 @@ done: + return ((status < 0) ? status : (int)count); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_registry_fops = { ++ .proc_open = nv_procfs_open_registry, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_registry, ++}; ++#else + static struct file_operations nv_procfs_registry_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_registry, +@@ -460,6 +469,7 @@ static struct file_operations nv_procfs_registry_fops = { + .llseek = seq_lseek, + .release = nv_procfs_close_registry, + }; ++#endif + + #if defined(CONFIG_PM) + static int +@@ -531,6 +541,15 @@ nv_procfs_open_suspend_depth( + return single_open(file, nv_procfs_show_suspend_depth, NULL); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_suspend_depth_fops = { ++ .proc_open = nv_procfs_open_suspend_depth, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_suspend_depth, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release ++}; ++#else + static struct file_operations nv_procfs_suspend_depth_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_suspend_depth, +@@ -539,6 +558,7 @@ static struct file_operations nv_procfs_suspend_depth_fops = { + .llseek = seq_lseek, + .release = single_release + }; ++#endif + + static int + nv_procfs_show_suspend( +@@ -613,6 +633,15 @@ nv_procfs_open_suspend( + return single_open(file, nv_procfs_show_suspend, NULL); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_suspend_fops = { ++ .proc_open = nv_procfs_open_suspend, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_suspend, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release ++}; ++#else + static struct file_operations nv_procfs_suspend_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_suspend, +@@ -622,6 +651,7 @@ static struct file_operations nv_procfs_suspend_fops = { + .release = single_release + }; + #endif ++#endif + + /* + * Forwards error to nv_log_error which exposes data to vendor callback +@@ -724,12 +754,20 @@ done: + return status; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_exercise_error_forwarding_fops = { ++ .proc_open = nv_procfs_open_exercise_error_forwarding, ++ .proc_write = nv_procfs_write_file, ++ .proc_release = nv_procfs_close_exercise_error_forwarding, ++}; ++#else + static struct file_operations nv_procfs_exercise_error_forwarding_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_exercise_error_forwarding, + .write = nv_procfs_write_file, + .release = nv_procfs_close_exercise_error_forwarding, + }; ++#endif + + static int + nv_procfs_read_unbind_lock( +@@ -851,6 +889,15 @@ done: + return rc; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_unbind_lock_fops = { ++ .proc_open = nv_procfs_open_unbind_lock, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_unbind_lock, ++}; ++#else + static struct file_operations nv_procfs_unbind_lock_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_unbind_lock, +@@ -859,6 +906,7 @@ static struct file_operations nv_procfs_unbind_lock_fops = { + .llseek = seq_lseek, + .release = nv_procfs_close_unbind_lock, + }; ++#endif + + static const char* + numa_status_describe(nv_numa_status_t state) +@@ -1187,6 +1235,22 @@ done: + return retval; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static const struct proc_ops nv_procfs_numa_status_fops = { ++ .proc_open = nv_procfs_open_numa_status, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_numa_status, ++}; ++ ++static const struct proc_ops nv_procfs_offline_pages_fops = { ++ .proc_open = nv_procfs_open_offline_pages, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_offline_pages, ++}; ++#else + static const struct file_operations nv_procfs_numa_status_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_numa_status, +@@ -1203,6 +1267,7 @@ static const struct file_operations nv_procfs_offline_pages_fops = { + .llseek = seq_lseek, + .release = nv_procfs_close_offline_pages, + }; ++#endif + + static int + nv_procfs_read_text_file( +diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild +index 5ec3e65..339a757 100644 +--- a/kernel/nvidia/nvidia.Kbuild ++++ b/kernel/nvidia/nvidia.Kbuild +@@ -150,6 +150,9 @@ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_swiotlb_dma_ops + NV_CONFTEST_TYPE_COMPILE_TESTS += acpi_op_remove + NV_CONFTEST_TYPE_COMPILE_TESTS += outer_flush_all + NV_CONFTEST_TYPE_COMPILE_TESTS += file_operations ++NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops ++NV_CONFTEST_TYPE_COMPILE_TESTS += ktime_get_raw_ts64 ++NV_CONFTEST_TYPE_COMPILE_TESTS += ktime_get_real_ts64 + NV_CONFTEST_TYPE_COMPILE_TESTS += file_inode + NV_CONFTEST_TYPE_COMPILE_TESTS += kuid_t + NV_CONFTEST_TYPE_COMPILE_TESTS += dma_ops +diff --git a/kernel/nvidia/nvlink_linux.c b/kernel/nvidia/nvlink_linux.c +index c84b36a..54fe244 100644 +--- a/kernel/nvidia/nvlink_linux.c ++++ b/kernel/nvidia/nvlink_linux.c +@@ -513,8 +513,8 @@ int NVLINK_API_CALL nvlink_memcmp(const void *s1, const void *s2, NvLength size) + + static NvBool nv_timer_less_than + ( +- const struct timeval *a, +- const struct timeval *b ++ const struct nv_timeval *a, ++ const struct nv_timeval *b + ) + { + return (a->tv_sec == b->tv_sec) ? (a->tv_usec < b->tv_usec) +@@ -523,9 +523,9 @@ static NvBool nv_timer_less_than + + static void nv_timeradd + ( +- const struct timeval *a, +- const struct timeval *b, +- struct timeval *result ++ const struct nv_timeval *a, ++ const struct nv_timeval *b, ++ struct nv_timeval *result + ) + { + result->tv_sec = a->tv_sec + b->tv_sec; +@@ -539,9 +539,9 @@ static void nv_timeradd + + static void nv_timersub + ( +- const struct timeval *a, +- const struct timeval *b, +- struct timeval *result ++ const struct nv_timeval *a, ++ const struct nv_timeval *b, ++ struct nv_timeval *result + ) + { + result->tv_sec = a->tv_sec - b->tv_sec; +@@ -561,7 +561,7 @@ void NVLINK_API_CALL nvlink_sleep(unsigned int ms) + unsigned long us; + unsigned long jiffies; + unsigned long mdelay_safe_msec; +- struct timeval tm_end, tm_aux; ++ struct nv_timeval tm_end, tm_aux; + + nv_gettimeofday(&tm_aux); + +diff --git a/kernel/nvidia/os-interface.c b/kernel/nvidia/os-interface.c +index 07f1b77..239be58 100644 +--- a/kernel/nvidia/os-interface.c ++++ b/kernel/nvidia/os-interface.c +@@ -463,7 +463,7 @@ NV_STATUS NV_API_CALL os_get_current_time( + NvU32 *useconds + ) + { +- struct timeval tm; ++ struct nv_timeval tm; + + nv_gettimeofday(&tm); + +@@ -477,9 +477,15 @@ NV_STATUS NV_API_CALL os_get_current_time( + + void NV_API_CALL os_get_current_tick(NvU64 *nseconds) + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0) ++ struct timespec64 ts; ++ ++ jiffies_to_timespec64(jiffies, &ts); ++#else + struct timespec ts; + + jiffies_to_timespec(jiffies, &ts); ++#endif + + *nseconds = ((NvU64)ts.tv_sec * NSEC_PER_SEC + (NvU64)ts.tv_nsec); + } +@@ -549,7 +555,7 @@ NV_STATUS NV_API_CALL os_delay_us(NvU32 MicroSeconds) + unsigned long usec; + + #ifdef NV_CHECK_DELAY_ACCURACY +- struct timeval tm1, tm2; ++ struct nv_timeval tm1, tm2; + + nv_gettimeofday(&tm1); + #endif +@@ -589,9 +595,9 @@ NV_STATUS NV_API_CALL os_delay(NvU32 MilliSeconds) + unsigned long MicroSeconds; + unsigned long jiffies; + unsigned long mdelay_safe_msec; +- struct timeval tm_end, tm_aux; ++ struct nv_timeval tm_end, tm_aux; + #ifdef NV_CHECK_DELAY_ACCURACY +- struct timeval tm_start; ++ struct nv_timeval tm_start; + #endif + + nv_gettimeofday(&tm_aux); +@@ -1954,7 +1960,7 @@ static NV_STATUS NV_API_CALL _os_ipmi_receive_resp + { + struct ipmi_recv_msg *rx_msg; + int err_no; +- struct timeval tv; ++ struct nv_timeval tv; + NvU64 start_time; + + nv_gettimeofday(&tv); diff --git a/nvidia-drm-outputclass.conf b/nvidia-drm-outputclass.conf index dd2936cb5ebf..9c36f59b549e 100644 --- a/nvidia-drm-outputclass.conf +++ b/nvidia-drm-outputclass.conf @@ -1,15 +1,8 @@ Section "OutputClass" - Identifier "intel" - MatchDriver "i915" - Driver "modesetting" -EndSection - -Section "OutputClass" Identifier "nvidia" MatchDriver "nvidia-drm" Driver "nvidia" Option "AllowEmptyInitialConfiguration" - Option "PrimaryGPU" "yes" ModulePath "/usr/lib/nvidia/xorg" ModulePath "/usr/lib/xorg/modules" EndSection |