diff options
author | Alonso Rodriguez | 2020-07-07 00:25:52 +0200 |
---|---|---|
committer | Alonso Rodriguez | 2020-07-07 00:25:52 +0200 |
commit | 1ecda39cda41c16545580cf9955d47a4ae054828 (patch) | |
tree | 8baca1476d8b585df2a8530839e7a9ba5b37c20c | |
parent | 37786d370c02e231eace722ab843eea1dc5d2f55 (diff) | |
download | aur-1ecda39cda41c16545580cf9955d47a4ae054828.tar.gz |
Update to 390.138-2 (v2 because some repos used the v1 already)
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | PKGBUILD | 31 | ||||
-rw-r--r-- | kernel-5.5.patch | 1286 | ||||
-rw-r--r-- | kernel-5.6.patch | 415 | ||||
-rw-r--r-- | kernel-5.7.patch | 156 |
5 files changed, 23 insertions, 1887 deletions
@@ -1,37 +1,31 @@ pkgbase = nvidia-390xx pkgdesc = NVIDIA drivers for linux, 390xx legacy branch - pkgver = 390.132 - pkgrel = 38 + pkgver = 390.138 + pkgrel = 2 url = https://www.nvidia.com/ arch = x86_64 license = custom - makedepends = nvidia-390xx-utils=390.132 + makedepends = nvidia-390xx-utils=390.138 makedepends = libglvnd makedepends = linux-headers conflicts = nvidia options = !strip - source = https://us.download.nvidia.com/XFree86/Linux-x86_64/390.132/NVIDIA-Linux-x86_64-390.132-no-compat32.run + source = https://us.download.nvidia.com/XFree86/Linux-x86_64/390.138/NVIDIA-Linux-x86_64-390.138.run source = kernel-4.16.patch - source = kernel-5.5.patch - source = kernel-5.6.patch - source = kernel-5.7.patch - sha256sums = b6b4b8af37e78e026c9ebdf4a5c64ea412dfcb710931dd028c22dac228de659d + sha256sums = 5ffb19e6c86c28e51d710f9679386e3c755161cf747bf3e83647a3486859d666 sha256sums = 622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385 - sha256sums = c72d89546b6dbd332e678800e48acbcdb29c1e1f23f986f77cee2c46b1a91e75 - sha256sums = 9e820398ad71c6ea14a8efc6b0f61a38000971c00a5ac4e5959686569dabb3c7 - sha256sums = c3654116dc68284e98bcb45d6e94ce872985c98943b4031dacf67cfe8a7e0c56 pkgname = nvidia-390xx pkgdesc = NVIDIA drivers for linux, 390xx legacy branch depends = linux - depends = nvidia-390xx-utils=390.132 + depends = nvidia-390xx-utils=390.138 depends = libglvnd pkgname = nvidia-390xx-dkms pkgdesc = NVIDIA driver sources for linux, 390xx legacy branch depends = dkms - depends = nvidia-390xx-utils=390.132 + depends = nvidia-390xx-utils=390.138 depends = libglvnd - provides = nvidia-390xx=390.132 + provides = nvidia-390xx=390.138 conflicts = nvidia conflicts = nvidia-390xx @@ -5,8 +5,8 @@ pkgbase=nvidia-390xx pkgname=(nvidia-390xx nvidia-390xx-dkms) -pkgver=390.132 -pkgrel=38 +pkgver=390.138 +pkgrel=2 pkgdesc="NVIDIA drivers for linux, 390xx legacy branch" arch=('x86_64') url="https://www.nvidia.com/" @@ -14,34 +14,33 @@ makedepends=("nvidia-390xx-utils=${pkgver}" 'libglvnd' 'linux-headers') conflicts=('nvidia') license=('custom') options=('!strip') -_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" +_pkg="NVIDIA-Linux-x86_64-${pkgver}" source=("https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run" - 'kernel-4.16.patch' - 'kernel-5.5.patch' - 'kernel-5.6.patch' - 'kernel-5.7.patch') -sha256sums=('b6b4b8af37e78e026c9ebdf4a5c64ea412dfcb710931dd028c22dac228de659d' - '622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385' - 'c72d89546b6dbd332e678800e48acbcdb29c1e1f23f986f77cee2c46b1a91e75' - '9e820398ad71c6ea14a8efc6b0f61a38000971c00a5ac4e5959686569dabb3c7' - 'c3654116dc68284e98bcb45d6e94ce872985c98943b4031dacf67cfe8a7e0c56') + 'kernel-4.16.patch') +sha256sums=('5ffb19e6c86c28e51d710f9679386e3c755161cf747bf3e83647a3486859d666' + '622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385') prepare() { sh "${_pkg}.run" --extract-only cd "${_pkg}" - # Restore phys_to_dma support (still needed for 396.18) + # Restore phys_to_dma support (still needed for 396.18) (and still needed for 390.138) # https://bugs.archlinux.org/task/58074 patch -Np1 -i ../kernel-4.16.patch + + ## OLD PATCHES [390.132] ## + # Patch to avoid screen tearing on Optimus Systems [Geeko] - patch -Np1 -i ../kernel-5.5.patch + # patch -Np1 -i ../kernel-5.5.patch # Patch to make it compile under linux 5.6 - patch -Np1 -i ../kernel-5.6.patch + # patch -Np1 -i ../kernel-5.6.patch # Patch to make it compile under linux 5.7 - Courtesy of openglfreak - patch -Np1 -i ../kernel-5.7.patch + # patch -Np1 -i ../kernel-5.7.patch + + ########################### cp -a kernel kernel-dkms cd kernel-dkms diff --git a/kernel-5.5.patch b/kernel-5.5.patch deleted file mode 100644 index 9f582c32d53b..000000000000 --- a/kernel-5.5.patch +++ /dev/null @@ -1,1286 +0,0 @@ -diff --git a/.manifest b/.manifest -index 56186f6..82ed5a4 100644 ---- a/.manifest -+++ b/.manifest -@@ -397,6 +397,7 @@ kernel/nvidia-drm/nvidia-drm.c 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODUL - kernel/nvidia-drm/nvidia-drm.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm - kernel/nvidia-drm/nvidia-drm-helper.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm - kernel/nvidia-drm/nvidia-dma-fence-helper.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm -+kernel/nvidia-drm/nvidia-dma-resv-helper.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm - kernel/nvidia-drm/nvidia-drm-priv.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm - kernel/nvidia-drm/nvidia-drm-connector.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm - kernel/nvidia-drm/nvidia-drm-crtc.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:nvidia_drm -diff --git a/kernel/conftest.sh b/kernel/conftest.sh -index cc25806..ec9e093 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -108,6 +108,12 @@ test_headers() { - FILES="$FILES drm/drm_framebuffer.h" - FILES="$FILES drm/drm_connector.h" - FILES="$FILES drm/drm_probe_helper.h" -+ FILES="$FILES drm/drm_prime.h" -+ FILES="$FILES drm/drm_plane.h" -+ FILES="$FILES drm/drm_vblank.h" -+ FILES="$FILES drm/drm_file.h" -+ FILES="$FILES drm/drm_ioctl.h" -+ FILES="$FILES drm/drm_device.h" - FILES="$FILES generated/autoconf.h" - FILES="$FILES generated/compile.h" - FILES="$FILES generated/utsrelease.h" -@@ -126,7 +132,9 @@ test_headers() { - FILES="$FILES linux/sched/task_stack.h" - FILES="$FILES xen/ioemu.h" - FILES="$FILES linux/fence.h" -+ FILES="$FILES linux/dma-resv.h" - FILES="$FILES linux/ktime.h" -+ FILES="$FILES sound/hdaudio.h" - - # Arch specific headers which need testing - FILES_ARCH="asm/book3s/64/hash-64k.h" -@@ -1679,9 +1687,19 @@ compile_test() { - #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> - #endif -+ -+ #if defined(NV_DRM_DRM_DRV_H_PRESENT) -+ #include <drm/drm_drv.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_PRIME_H_PRESENT) -+ #include <drm/drm_prime.h> -+ #endif -+ - #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE) - #error DRM not enabled - #endif -+ - void conftest_drm_available(void) { - struct drm_driver drv; - -@@ -2318,7 +2336,10 @@ compile_test() { - # removed: 2014-08-29 c5786fe5f1c50941dbe27fc8b4aa1afee46ae893 - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - void conftest_drm_bus_present(void) { - struct drm_bus bus; - }" -@@ -2334,7 +2355,10 @@ compile_test() { - # removed: 2013-11-03 42b21049fc26513ca8e732f47559b1525b04a992 - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - int conftest_drm_bus_has_bus_type(void) { - return offsetof(struct drm_bus, bus_type); - }" -@@ -2350,7 +2374,10 @@ compile_test() { - # removed: 2013-11-03 b2a21aa25a39837d06eb24a7f0fef1733f9843eb - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - int conftest_drm_bus_has_get_irq(void) { - return offsetof(struct drm_bus, get_irq); - }" -@@ -2366,7 +2393,10 @@ compile_test() { - # removed: 2013-11-03 9de1b51f1fae6476155350a0670dc637c762e718 - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - int conftest_drm_bus_has_get_name(void) { - return offsetof(struct drm_bus, get_name); - }" -@@ -2384,7 +2414,14 @@ compile_test() { - # 2013-12-11 b3f2333de8e81b089262b26d52272911523e605f - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_DRV_H_PRESENT) -+ #include <drm/drm_drv.h> -+ #endif -+ - int conftest_drm_driver_has_legacy_dev_list(void) { - return offsetof(struct drm_driver, legacy_dev_list); - }" -@@ -2408,7 +2445,13 @@ compile_test() { - # 2017-07-23 e6fc3b68558e4c6d8d160b5daf2511b99afa8814 - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_CRTC_H_PRESENT) -+ #include <drm/drm_crtc.h> -+ #endif - - int conftest_drm_crtc_init_with_planes_has_name_arg(void) { - return -@@ -2424,7 +2467,13 @@ compile_test() { - compile_check_conftest "$CODE" "NV_DRM_CRTC_INIT_WITH_PLANES_HAS_NAME_ARG" "" "types" - - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_ENCODER_H_PRESENT) -+ #include <drm/drm_encoder.h> -+ #endif - - int conftest_drm_encoder_init_has_name_arg(void) { - return -@@ -2439,7 +2488,13 @@ compile_test() { - compile_check_conftest "$CODE" "NV_DRM_ENCODER_INIT_HAS_NAME_ARG" "" "types" - - echo "$CONFTEST_PREAMBLE -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_PLANE_H_PRESENT) -+ #include <drm/drm_plane.h> -+ #endif - - int conftest_drm_universal_plane_init_has_format_modifiers_arg(void) { - return -@@ -2466,7 +2521,13 @@ compile_test() { - echo "#undef NV_DRM_UNIVERSAL_PLANE_INIT_HAS_FORMAT_MODIFIERS_ARG" | append_conftest "types" - - echo "$CONFTEST_PREAMBLE -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_DRM_PLANE_H_PRESENT) -+ #include <drm/drm_plane.h> -+ #endif - - int conftest_drm_universal_plane_init_has_name_arg(void) { - return -@@ -2535,7 +2596,10 @@ compile_test() { - # 2014-08-29 915b4d11b8b9e7b84ba4a4645b6cc7fbc0c071cf - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - int conftest_drm_driver_has_set_busid(void) { - return offsetof(struct drm_driver, set_busid); - }" -@@ -3087,7 +3151,10 @@ compile_test() { - # 2016-06-21 : d6ed682eba54915ea56315bc2e5a33fca5922997 - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - void conftest_drm_master_drop_has_from_release_arg(struct drm_driver *drv) { - drv->master_drop(NULL, NULL, false); - }" -@@ -3195,7 +3262,9 @@ compile_test() { - # 2017-01-06 11b3c20bdd15d17382068be569740de1dccb173d - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif - - int conftest_drm_driver_unload_has_int_return_type(struct drm_driver *drv) { - return drv->unload(NULL /* dev */); -@@ -3605,10 +3674,14 @@ compile_test() { - # Introduce drm_framebuffer_{get,put}()) on 2017-02-28. - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - #if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT) - #include <drm/drm_framebuffer.h> - #endif -+ - void conftest_drm_framebuffer_get(void) { - drm_framebuffer_get(); - }" -@@ -3624,7 +3697,10 @@ compile_test() { - # Introduce drm_gem_object_{get,put}()) on 2017-02-28. - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - #if defined(NV_DRM_DRM_GEM_H_PRESENT) - #include <drm/drm_gem.h> - #endif -@@ -3643,7 +3719,10 @@ compile_test() { - # introduce drm_dev_{get/put} functions) on 2017-09-26. - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - #if defined(NV_DRM_DRM_DRV_H_PRESENT) - #include <drm/drm_drv.h> - #endif -@@ -3768,10 +3847,14 @@ compile_test() { - # (2019-01-29). - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif -+ - #if defined(NV_DRM_DRM_DRV_H_PRESENT) - #include <drm/drm_drv.h> - #endif -+ - unsigned int drm_driver_prime_flag_present_conftest(void) { - return DRIVER_PRIME; - }" -@@ -3779,6 +3862,68 @@ compile_test() { - compile_check_conftest "$CODE" "NV_DRM_DRIVER_PRIME_FLAG_PRESENT" "" "types" - ;; - -+ drm_connector_for_each_possible_encoder) -+ # -+ # Determine the number of arguments of the -+ # drm_connector_for_each_possible_encoder() macro. -+ # -+ # drm_connector_for_each_possible_encoder() is added by commit -+ # 83aefbb887b5 (drm: Add drm_connector_for_each_possible_encoder()) -+ # in v4.19. The definition and prorotype is changed to take only -+ # two arguments connector and encoder, by commit 62afb4ad425a -+ # (drm/connector: Allow max possible encoders to attach to a -+ # connector) in v5.5rc1. -+ # -+ echo "$CONFTEST_PREAMBLE -+ #if defined(NV_DRM_DRMP_H_PRESENT) -+ #include <drm/drmP.h> -+ #endif -+ -+ #if defined(NV_DRM_CONNECTOR_H_PRESENT) -+ #include <drm/drm_connector.h> -+ #endif -+ -+ void conftest_drm_connector_for_each_possible_encoder( -+ struct drm_connector *connector, -+ struct drm_encoder *encoder, -+ int i) { -+ -+ drm_connector_for_each_possible_encoder(connector, encoder, i) { -+ } -+ }" > conftest$$.c -+ -+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 -+ rm -f conftest$$.c -+ -+ if [ -f conftest$$.o ]; then -+ echo "#define NV_DRM_CONNECTOR_FOR_EACH_POSSIBLE_ENCODER_ARGUMENT_COUNT 3" | append_conftest "functions" -+ rm -f conftest$$.o -+ return -+ else -+ echo "#define NV_DRM_CONNECTOR_FOR_EACH_POSSIBLE_ENCODER_ARGUMENT_COUNT 2" | append_conftest "functions" -+ fi -+ ;; -+ -+ drm_gem_object_has_resv) -+ # -+ # Determine if the 'drm_gem_object' structure has a 'resv' field. -+ # -+ # A 'resv' filed in the 'drm_gem_object' structure, is added by -+ # commit 1ba627148ef5 (drm: Add reservation_object to -+ # drm_gem_object) in v5.2. -+ # -+ CODE="$CONFTEST_PREAMBLE -+ #if defined(NV_DRM_DRM_GEM_H_PRESENT) -+ #include <drm/drm_gem.h> -+ #endif -+ -+ int conftest_drm_gem_object_has_resv(void) { -+ return offsetof(struct drm_gem_object, resv); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_HAS_RESV" "" "types" -+ ;; -+ - drm_gem_prime_export_has_dev_arg) - # - # Determine if drm_driver::gem_prime_export() has 'dev' argument. -@@ -3789,7 +3934,9 @@ compile_test() { - # (2019-06-14). - # - CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+ #endif - #if defined(NV_DRM_DRM_DRV_H_PRESENT) - #include <drm/drm_drv.h> - #endif -diff --git a/kernel/nvidia-drm/nvidia-dma-fence-helper.h b/kernel/nvidia-drm/nvidia-dma-fence-helper.h -index 0aa5a4f..a09ab76 100644 ---- a/kernel/nvidia-drm/nvidia-dma-fence-helper.h -+++ b/kernel/nvidia-drm/nvidia-dma-fence-helper.h -@@ -25,7 +25,7 @@ - - #include "nvidia-drm-conftest.h" - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -+#if defined(NV_DRM_FENCE_AVAILABLE) - - /* - * Fence headers are moved to file dma-fence.h and struct fence has -@@ -40,8 +40,6 @@ - #include <linux/dma-fence.h> - #endif - --#include <linux/reservation.h> -- - #if defined(NV_LINUX_FENCE_H_PRESENT) - typedef struct fence nv_dma_fence_t; - typedef struct fence_ops nv_dma_fence_ops_t; -@@ -118,6 +116,6 @@ nv_dma_fence_init(nv_dma_fence_t *fence, - #endif - } - --#endif /* defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) */ -+#endif /* defined(NV_DRM_FENCE_AVAILABLE) */ - - #endif /* __NVIDIA_DMA_FENCE_HELPER_H__ */ -diff --git a/kernel/nvidia-drm/nvidia-dma-resv-helper.h b/kernel/nvidia-drm/nvidia-dma-resv-helper.h -new file mode 100644 -index 0000000..ad8800d ---- /dev/null -+++ b/kernel/nvidia-drm/nvidia-dma-resv-helper.h -@@ -0,0 +1,80 @@ -+/* -+ * Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. -+ * -+ * 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. -+ */ -+ -+#ifndef __NVIDIA_DMA_RESV_HELPER_H__ -+#define __NVIDIA_DMA_RESV_HELPER_H__ -+ -+#include "nvidia-drm-conftest.h" -+ -+#if defined(NV_DRM_FENCE_AVAILABLE) -+ -+/* -+ * linux/reservation.h is renamed to linux/dma-resv.h, by commit -+ * 52791eeec1d9 (dma-buf: rename reservation_object to dma_resv) -+ * in v5.4. -+ */ -+ -+#if defined(NV_LINUX_DMA_RESV_H_PRESENT) -+#include <linux/dma-resv.h> -+#else -+#include <linux/reservation.h> -+#endif -+ -+#include <nvidia-dma-fence-helper.h> -+ -+#if defined(NV_LINUX_DMA_RESV_H_PRESENT) -+typedef struct dma_resv nv_dma_resv_t; -+#else -+typedef struct reservation_object nv_dma_resv_t; -+#endif -+ -+static inline void nv_dma_resv_init(nv_dma_resv_t *obj) -+{ -+#if defined(NV_LINUX_DMA_RESV_H_PRESENT) -+ dma_resv_init(obj); -+#else -+ reservation_object_init(obj); -+#endif -+} -+ -+static inline void nv_dma_resv_fini(nv_dma_resv_t *obj) -+{ -+#if defined(NV_LINUX_DMA_RESV_H_PRESENT) -+ dma_resv_fini(obj); -+#else -+ reservation_object_init(obj); -+#endif -+} -+ -+static inline void nv_dma_resv_add_excl_fence(nv_dma_resv_t *obj, -+ nv_dma_fence_t *fence) -+{ -+#if defined(NV_LINUX_DMA_RESV_H_PRESENT) -+ dma_resv_add_excl_fence(obj, fence); -+#else -+ reservation_object_add_excl_fence(obj, fence); -+#endif -+} -+ -+#endif /* defined(NV_DRM_FENCE_AVAILABLE) */ -+ -+#endif /* __NVIDIA_DMA_RESV_HELPER_H__ */ -diff --git a/kernel/nvidia-drm/nvidia-drm-conftest.h b/kernel/nvidia-drm/nvidia-drm-conftest.h -index 7775ed2..bed8d81 100644 ---- a/kernel/nvidia-drm/nvidia-drm-conftest.h -+++ b/kernel/nvidia-drm/nvidia-drm-conftest.h -@@ -54,5 +54,11 @@ - - #endif - -+#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) || \ -+ defined(NV_DRM_GEM_OBJECT_HAS_RESV) -+#define NV_DRM_FENCE_AVAILABLE -+#else -+#undef NV_DRM_FENCE_AVAILABLE -+#endif - - #endif /* defined(__NVIDIA_DRM_CONFTEST_H__) */ -diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c -index 857bb2c..54167a7 100644 ---- a/kernel/nvidia-drm/nvidia-drm-connector.c -+++ b/kernel/nvidia-drm/nvidia-drm-connector.c -@@ -58,20 +58,100 @@ static void nv_drm_connector_destroy(struct drm_connector *connector) - nv_drm_free(nv_connector); - } - -+static bool -+__nv_drm_detect_encoder(struct NvKmsKapiDynamicDisplayParams *pDetectParams, -+ struct drm_connector *connector, -+ struct drm_encoder *encoder) -+{ -+ struct nv_drm_connector *nv_connector = to_nv_connector(connector); -+ struct drm_device *dev = connector->dev; -+ struct nv_drm_device *nv_dev = to_nv_device(dev); -+ struct nv_drm_encoder *nv_encoder; -+ -+ /* -+ * DVI-I connectors can drive both digital and analog -+ * encoders. If a digital connection has been forced then -+ * skip analog encoders. -+ */ -+ -+ if (connector->connector_type == DRM_MODE_CONNECTOR_DVII && -+ connector->force == DRM_FORCE_ON_DIGITAL && -+ encoder->encoder_type == DRM_MODE_ENCODER_DAC) { -+ return false; -+ } -+ -+ nv_encoder = to_nv_encoder(encoder); -+ -+ memset(pDetectParams, 0, sizeof(*pDetectParams)); -+ -+ pDetectParams->handle = nv_encoder->hDisplay; -+ -+ switch (connector->force) { -+ case DRM_FORCE_ON: -+ case DRM_FORCE_ON_DIGITAL: -+ pDetectParams->forceConnected = NV_TRUE; -+ break; -+ case DRM_FORCE_OFF: -+ pDetectParams->forceDisconnected = NV_TRUE; -+ break; -+ case DRM_FORCE_UNSPECIFIED: -+ break; -+ } -+ -+ if (connector->override_edid) { -+ const struct drm_property_blob *edid = connector->edid_blob_ptr; -+ -+ if (edid->length <= sizeof(pDetectParams->edid.buffer)) { -+ memcpy(pDetectParams->edid.buffer, edid->data, edid->length); -+ pDetectParams->edid.bufferSize = edid->length; -+ pDetectParams->overrideEdid = NV_TRUE; -+ } else { -+ WARN_ON(edid->length > -+ sizeof(pDetectParams->edid.buffer)); -+ } -+ } -+ -+ if (!nvKms->getDynamicDisplayInfo(nv_dev->pDevice, pDetectParams)) { -+ NV_DRM_DEV_LOG_ERR( -+ nv_dev, -+ "Failed to detect display state"); -+ return false; -+ } -+ -+ if (pDetectParams->connected) { -+ if (!pDetectParams->overrideEdid && pDetectParams->edid.bufferSize) { -+ -+ if ((nv_connector->edid = nv_drm_calloc( -+ 1, -+ pDetectParams->edid.bufferSize)) != NULL) { -+ -+ memcpy(nv_connector->edid, -+ pDetectParams->edid.buffer, -+ pDetectParams->edid.bufferSize); -+ } else { -+ NV_DRM_LOG_ERR("Out of Memory"); -+ } -+ } -+ -+ return true; -+ } -+ -+ return false; -+} -+ - static enum drm_connector_status __nv_drm_connector_detect_internal( - struct drm_connector *connector) - { - struct drm_device *dev = connector->dev; -- struct nv_drm_device *nv_dev = to_nv_device(dev); - struct nv_drm_connector *nv_connector = to_nv_connector(connector); - - enum drm_connector_status status = connector_status_disconnected; - - struct drm_encoder *detected_encoder = NULL; - struct nv_drm_encoder *nv_detected_encoder = NULL; -+ struct drm_encoder *encoder; - - struct NvKmsKapiDynamicDisplayParams *pDetectParams = NULL; -- unsigned int i; - - BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); - -@@ -87,90 +167,12 @@ static enum drm_connector_status __nv_drm_connector_detect_internal( - goto done; - } - -- for (i = 0; -- i < DRM_CONNECTOR_MAX_ENCODER && detected_encoder == NULL; i++) { -- struct drm_encoder *encoder; -- struct nv_drm_encoder *nv_encoder; -- -- if (connector->encoder_ids[i] == 0) { -- break; -- } -- -- encoder = nv_drm_encoder_find(dev, connector->encoder_ids[i]); -- -- if (encoder == NULL) { -- BUG_ON(encoder != NULL); -- continue; -- } -- -- /* -- * DVI-I connectors can drive both digital and analog -- * encoders. If a digital connection has been forced then -- * skip analog encoders. -- */ -- -- if (connector->connector_type == DRM_MODE_CONNECTOR_DVII && -- connector->force == DRM_FORCE_ON_DIGITAL && -- encoder->encoder_type == DRM_MODE_ENCODER_DAC) { -- continue; -- } -- -- nv_encoder = to_nv_encoder(encoder); -- -- memset(pDetectParams, 0, sizeof(*pDetectParams)); -- -- pDetectParams->handle = nv_encoder->hDisplay; -- -- switch (connector->force) { -- case DRM_FORCE_ON: -- case DRM_FORCE_ON_DIGITAL: -- pDetectParams->forceConnected = NV_TRUE; -- break; -- case DRM_FORCE_OFF: -- pDetectParams->forceDisconnected = NV_TRUE; -- break; -- case DRM_FORCE_UNSPECIFIED: -- break; -- } -- -- if (connector->override_edid) { -- const struct drm_property_blob *edid = connector->edid_blob_ptr; -- -- if (edid->length <= sizeof(pDetectParams->edid.buffer)) { -- memcpy(pDetectParams->edid.buffer, edid->data, edid->length); -- pDetectParams->edid.bufferSize = edid->length; -- pDetectParams->overrideEdid = NV_TRUE; -- } else { -- WARN_ON(edid->length > -- sizeof(pDetectParams->edid.buffer)); -- } -- } -- -- if (!nvKms->getDynamicDisplayInfo(nv_dev->pDevice, pDetectParams)) { -- NV_DRM_DEV_LOG_ERR( -- nv_dev, -- "Failed to detect display state"); -- continue; -- } -- -- if (pDetectParams->connected) { -- if (!pDetectParams->overrideEdid && pDetectParams->edid.bufferSize) { -- -- if ((nv_connector->edid = nv_drm_calloc( -- 1, -- pDetectParams->edid.bufferSize)) != NULL) { -- -- memcpy(nv_connector->edid, -- pDetectParams->edid.buffer, -- pDetectParams->edid.bufferSize); -- } else { -- NV_DRM_LOG_ERR("Out of Memory"); -- } -- } -- -+ nv_drm_connector_for_each_possible_encoder(connector, encoder) { -+ if (__nv_drm_detect_encoder(pDetectParams, connector, encoder)) { - detected_encoder = encoder; -+ break; - } -- } -+ } nv_drm_connector_for_each_possible_encoder_end; - - if (detected_encoder == NULL) { - goto done; -diff --git a/kernel/nvidia-drm/nvidia-drm-connector.h b/kernel/nvidia-drm/nvidia-drm-connector.h -index f74e22c..fd83d7a 100644 ---- a/kernel/nvidia-drm/nvidia-drm-connector.h -+++ b/kernel/nvidia-drm/nvidia-drm-connector.h -@@ -27,7 +27,13 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT) -+#include <drm/drm_connector.h> -+#endif - - #include "nvtypes.h" - #include "nvkms-api-types.h" -diff --git a/kernel/nvidia-drm/nvidia-drm-crtc.h b/kernel/nvidia-drm/nvidia-drm-crtc.h -index 5fd6ae7..f54e34d 100644 ---- a/kernel/nvidia-drm/nvidia-drm-crtc.h -+++ b/kernel/nvidia-drm/nvidia-drm-crtc.h -@@ -29,7 +29,12 @@ - - #include "nvidia-drm-helper.h" - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#include <drm/drm_crtc.h> -+ - #include "nvtypes.h" - #include "nvkms-kapi.h" - -diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c -index 57c3495..17e377d 100644 ---- a/kernel/nvidia-drm/nvidia-drm-drv.c -+++ b/kernel/nvidia-drm/nvidia-drm-drv.c -@@ -39,7 +39,27 @@ - - #include "nvidia-drm-ioctl.h" - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_VBLANK_H_PRESENT) -+#include <drm/drm_vblank.h> -+#endif -+ -+#if defined(NV_DRM_DRM_FILE_H_PRESENT) -+#include <drm/drm_file.h> -+#endif -+ -+#if defined(NV_DRM_DRM_PRIME_H_PRESENT) -+#include <drm/drm_prime.h> -+#endif -+ -+#if defined(NV_DRM_DRM_IOCTL_H_PRESENT) -+#include <drm/drm_ioctl.h> -+#endif -+ -+#include <linux/pci.h> - - /* - * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h") -@@ -627,7 +647,7 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = { - nv_drm_get_dev_info_ioctl, - DRM_RENDER_ALLOW|DRM_UNLOCKED), - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -+#if defined(NV_DRM_FENCE_AVAILABLE) - DRM_IOCTL_DEF_DRV(NVIDIA_FENCE_SUPPORTED, - nv_drm_fence_supported_ioctl, - DRM_RENDER_ALLOW|DRM_UNLOCKED), -diff --git a/kernel/nvidia-drm/nvidia-drm-fb.h b/kernel/nvidia-drm/nvidia-drm-fb.h -index 7f292ce..bfa93fd 100644 ---- a/kernel/nvidia-drm/nvidia-drm-fb.h -+++ b/kernel/nvidia-drm/nvidia-drm-fb.h -@@ -27,7 +27,14 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT) -+#include <drm/drm_framebuffer.h> -+#endif -+ - #include "nvidia-drm-gem-nvkms-memory.h" - #include "nvkms-kapi.h" - -diff --git a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c -index 65114d6..52a3d2a 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c -+++ b/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c -@@ -27,6 +27,12 @@ - #include "nvidia-drm-gem-nvkms-memory.h" - #include "nvidia-drm-ioctl.h" - -+#if defined(NV_DRM_DRM_DRV_H_PRESENT) -+#include <drm/drm_drv.h> -+#endif -+ -+#include <linux/io.h> -+ - #include "nv-mm.h" - - static void __nv_drm_gem_nvkms_memory_free(struct nv_drm_gem_object *nv_gem) -diff --git a/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c b/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -index a1be81f..76dedba 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -+++ b/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -@@ -24,6 +24,10 @@ - - #if defined(NV_DRM_AVAILABLE) - -+#if defined(NV_DRM_DRM_PRIME_H_PRESENT) -+#include <drm/drm_prime.h> -+#endif -+ - #include "nvidia-drm-gem-user-memory.h" - #include "nvidia-drm-ioctl.h" - -diff --git a/kernel/nvidia-drm/nvidia-drm-gem.c b/kernel/nvidia-drm/nvidia-drm-gem.c -index e55ccd9..2059f19 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem.c -+++ b/kernel/nvidia-drm/nvidia-drm-gem.c -@@ -28,6 +28,15 @@ - #include "nvidia-drm-ioctl.h" - #include "nvidia-drm-prime-fence.h" - #include "nvidia-drm-gem.h" -+#include "nvidia-dma-resv-helper.h" -+ -+#if defined(NV_DRM_DRM_DRV_H_PRESENT) -+#include <drm/drm_drv.h> -+#endif -+ -+#if defined(NV_DRM_DRM_PRIME_H_PRESENT) -+#include <drm/drm_prime.h> -+#endif - - void nv_drm_gem_free(struct drm_gem_object *gem) - { -@@ -40,8 +49,8 @@ void nv_drm_gem_free(struct drm_gem_object *gem) - - drm_gem_object_release(&nv_gem->base); - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -- reservation_object_fini(&nv_gem->resv); -+#if defined(NV_DRM_FENCE_AVAILABLE) && !defined(NV_DRM_GEM_OBJECT_HAS_RESV) -+ nv_dma_resv_fini(&nv_gem->resv); - #endif - - nv_gem->ops->free(nv_gem); -@@ -103,7 +112,7 @@ void nv_drm_gem_prime_vunmap(struct drm_gem_object *gem, void *address) - } - - #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) --struct reservation_object* nv_drm_gem_prime_res_obj(struct drm_gem_object *obj) -+nv_dma_resv_t* nv_drm_gem_prime_res_obj(struct drm_gem_object *obj) - { - struct nv_drm_gem_object *nv_gem = to_nv_gem_object(obj); - -diff --git a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h -index b7c7fa7..5691a7a 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem.h -+++ b/kernel/nvidia-drm/nvidia-drm-gem.h -@@ -29,13 +29,19 @@ - - #include "nvidia-drm-priv.h" - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> --#include "nvkms-kapi.h" -+#endif - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -+#if defined(NV_DRM_DRM_GEM_H_PRESENT) -+#include <drm/drm_gem.h> -+#endif - --#include "nvidia-dma-fence-helper.h" -+#include "nvkms-kapi.h" - -+#if defined(NV_DRM_FENCE_AVAILABLE) -+#include "nvidia-dma-fence-helper.h" -+#include "nvidia-dma-resv-helper.h" - #endif - - struct nv_drm_gem_object; -@@ -53,8 +59,8 @@ struct nv_drm_gem_object { - struct nv_drm_device *nv_dev; - const struct nv_drm_gem_object_funcs *ops; - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -- struct reservation_object resv; -+#if defined(NV_DRM_FENCE_AVAILABLE) -+ nv_dma_resv_t resv; - #endif - - bool prime:1; -@@ -126,11 +132,16 @@ void nv_drm_gem_object_init(struct nv_drm_device *nv_dev, - - /* Initialize the gem object */ - -- drm_gem_private_object_init(dev, &nv_gem->base, size); -+#if defined(NV_DRM_FENCE_AVAILABLE) -+ nv_dma_resv_init(&nv_gem->resv); - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -- reservation_object_init(&nv_gem->resv); -+#if defined(NV_DRM_GEM_OBJECT_HAS_RESV) -+ nv_gem->base.resv = &nv_gem->resv; - #endif -+ -+#endif -+ -+ drm_gem_private_object_init(dev, &nv_gem->base, size); - } - - static inline int nv_drm_gem_create_mmap_offset( -@@ -194,7 +205,7 @@ void *nv_drm_gem_prime_vmap(struct drm_gem_object *gem); - void nv_drm_gem_prime_vunmap(struct drm_gem_object *gem, void *address); - - #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) --struct reservation_object* nv_drm_gem_prime_res_obj(struct drm_gem_object *obj); -+nv_dma_resv_t* nv_drm_gem_prime_res_obj(struct drm_gem_object *obj); - #endif - - #endif /* NV_DRM_AVAILABLE */ -diff --git a/kernel/nvidia-drm/nvidia-drm-helper.c b/kernel/nvidia-drm/nvidia-drm-helper.c -index da602ac..601a9c3 100644 ---- a/kernel/nvidia-drm/nvidia-drm-helper.c -+++ b/kernel/nvidia-drm/nvidia-drm-helper.c -@@ -31,7 +31,10 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ - #if defined(NV_DRM_DRM_ATOMIC_UAPI_H_PRESENT) - #include <drm/drm_atomic_uapi.h> - #endif -diff --git a/kernel/nvidia-drm/nvidia-drm-helper.h b/kernel/nvidia-drm/nvidia-drm-helper.h -index 8f050d8..2489924 100644 ---- a/kernel/nvidia-drm/nvidia-drm-helper.h -+++ b/kernel/nvidia-drm/nvidia-drm-helper.h -@@ -27,7 +27,13 @@ - - #if defined(NV_DRM_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_DRV_H_PRESENT) -+#include <drm/drm_drv.h> -+#endif - - /* - * drm_dev_put() is added by commit 9a96f55034e41b4e002b767e9218d55f03bdff7d -@@ -276,6 +282,96 @@ static inline struct drm_encoder *nv_drm_encoder_find(struct drm_device *dev, - #endif - } - -+/* -+ * drm_connector_for_each_possible_encoder() is added by commit -+ * 83aefbb887b59df0b3520965c3701e01deacfc52 which was Signed-off-by: -+ * Ville Syrjälä <ville.syrjala@linux.intel.com> -+ * -+ * drm_connector_for_each_possible_encoder() is copied from -+ * include/drm/drm_connector.h and modified to use nv_drm_encoder_find() -+ * instead of drm_encoder_find(). -+ * -+ * drm_connector_for_each_possible_encoder() is copied from -+ * include/drm/drm_connector.h @ -+ * 83aefbb887b59df0b3520965c3701e01deacfc52 -+ * which has the following copyright and license information: -+ * -+ * Copyright (c) 2016 Intel Corporation -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and its -+ * documentation for any purpose is hereby granted without fee, provided that -+ * the above copyright notice appear in all copies and that both that copyright -+ * notice and this permission notice appear in supporting documentation, and -+ * that the name of the copyright holders not be used in advertising or -+ * publicity pertaining to distribution of the software without specific, -+ * written prior permission. The copyright holders make no representations -+ * about the suitability of this software for any purpose. It is provided "as -+ * is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -+ * OF THIS SOFTWARE. -+ */ -+ -+#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT) -+#include <drm/drm_connector.h> -+#endif -+ -+/** -+ * nv_drm_connector_for_each_possible_encoder - iterate connector's possible -+ * encoders -+ * @connector: &struct drm_connector pointer -+ * @encoder: &struct drm_encoder pointer used as cursor -+ * @__i: int iteration cursor, for macro-internal use -+ */ -+#if !defined(drm_connector_for_each_possible_encoder) -+ -+#if !defined(for_each_if) -+#define for_each_if(condition) if (!(condition)) {} else -+#endif -+ -+#define __nv_drm_connector_for_each_possible_encoder(connector, encoder, __i) \ -+ for ((__i) = 0; (__i) < ARRAY_SIZE((connector)->encoder_ids) && \ -+ (connector)->encoder_ids[(__i)] != 0; (__i)++) \ -+ for_each_if((encoder) = \ -+ nv_drm_encoder_find((connector)->dev, \ -+ (connector)->encoder_ids[(__i)])) -+ -+#define nv_drm_connector_for_each_possible_encoder(connector, encoder) \ -+ { \ -+ unsigned int __i; \ -+ __nv_drm_connector_for_each_possible_encoder(connector, encoder, __i) -+ -+#define nv_drm_connector_for_each_possible_encoder_end \ -+ } -+ -+#else -+ -+#if NV_DRM_CONNECTOR_FOR_EACH_POSSIBLE_ENCODER_ARGUMENT_COUNT == 3 -+ -+#define nv_drm_connector_for_each_possible_encoder(connector, encoder) \ -+ { \ -+ unsigned int __i; \ -+ drm_connector_for_each_possible_encoder(connector, encoder, __i) -+ -+#define nv_drm_connector_for_each_possible_encoder_end \ -+ } -+ -+#else -+ -+#define nv_drm_connector_for_each_possible_encoder(connector, encoder) \ -+ drm_connector_for_each_possible_encoder(connector, encoder) -+ -+#define nv_drm_connector_for_each_possible_encoder_end -+ -+#endif -+ -+#endif -+ - static inline int - nv_drm_connector_attach_encoder(struct drm_connector *connector, - struct drm_encoder *encoder) -diff --git a/kernel/nvidia-drm/nvidia-drm-linux.c b/kernel/nvidia-drm/nvidia-drm-linux.c -index b60304b..1d3e658 100644 ---- a/kernel/nvidia-drm/nvidia-drm-linux.c -+++ b/kernel/nvidia-drm/nvidia-drm-linux.c -@@ -31,6 +31,12 @@ - - #if defined(NV_DRM_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) -+#include <drm/drmP.h> -+#endif -+ -+#include <linux/vmalloc.h> -+ - #include "nv-mm.h" - - MODULE_PARM_DESC( -diff --git a/kernel/nvidia-drm/nvidia-drm-modeset.c b/kernel/nvidia-drm/nvidia-drm-modeset.c -index c94d861..035c0d9 100644 ---- a/kernel/nvidia-drm/nvidia-drm-modeset.c -+++ b/kernel/nvidia-drm/nvidia-drm-modeset.c -@@ -30,6 +30,14 @@ - #include "nvidia-drm-os-interface.h" - #include "nvidia-drm-helper.h" - -+#if defined(NV_DRM_DRMP_H_PRESENT) -+#include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_VBLANK_H_PRESENT) -+#include <drm/drm_vblank.h> -+#endif -+ - #include <drm/drm_atomic.h> - #include <drm/drm_atomic_helper.h> - #include <drm/drm_crtc.h> -diff --git a/kernel/nvidia-drm/nvidia-drm-modeset.h b/kernel/nvidia-drm/nvidia-drm-modeset.h -index e2cb5c3..effb990 100644 ---- a/kernel/nvidia-drm/nvidia-drm-modeset.h -+++ b/kernel/nvidia-drm/nvidia-drm-modeset.h -@@ -27,7 +27,10 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - --#include <drm/drmP.h> -+#include "nvkms-kapi.h" -+ -+struct drm_device; -+struct drm_atomic_state; - - struct drm_atomic_state *nv_drm_atomic_state_alloc(struct drm_device *dev); - void nv_drm_atomic_state_clear(struct drm_atomic_state *state); -diff --git a/kernel/nvidia-drm/nvidia-drm-os-interface.h b/kernel/nvidia-drm/nvidia-drm-os-interface.h -index f43f851..ac52752 100644 ---- a/kernel/nvidia-drm/nvidia-drm-os-interface.h -+++ b/kernel/nvidia-drm/nvidia-drm-os-interface.h -@@ -29,7 +29,7 @@ - - #if defined(NV_DRM_AVAILABLE) - --#include <drm/drmP.h> -+struct page; - - /* Set to true when the atomic modeset feature is enabled. */ - extern bool nv_drm_modeset_module_param; -diff --git a/kernel/nvidia-drm/nvidia-drm-prime-fence.c b/kernel/nvidia-drm/nvidia-drm-prime-fence.c -index c5cb3b7..6ec082c 100644 ---- a/kernel/nvidia-drm/nvidia-drm-prime-fence.c -+++ b/kernel/nvidia-drm/nvidia-drm-prime-fence.c -@@ -24,12 +24,17 @@ - - #if defined(NV_DRM_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) -+#include <drm/drmP.h> -+#endif -+ - #include "nvidia-drm-priv.h" - #include "nvidia-drm-ioctl.h" - #include "nvidia-drm-gem.h" - #include "nvidia-drm-prime-fence.h" -+#include "nvidia-dma-resv-helper.h" - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -+#if defined(NV_DRM_FENCE_AVAILABLE) - - #include "nvidia-dma-fence-helper.h" - -@@ -519,7 +524,7 @@ int nv_drm_gem_fence_attach_ioctl(struct drm_device *dev, - goto fence_context_create_fence_failed; - } - -- reservation_object_add_excl_fence(&nv_gem->resv, fence); -+ nv_dma_resv_add_excl_fence(&nv_gem->resv, fence); - - ret = 0; - -@@ -533,6 +538,6 @@ done: - return ret; - } - --#endif /* NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ */ -+#endif /* NV_DRM_FENCE_AVAILABLE */ - - #endif /* NV_DRM_AVAILABLE */ -diff --git a/kernel/nvidia-drm/nvidia-drm-prime-fence.h b/kernel/nvidia-drm/nvidia-drm-prime-fence.h -index 20da923..5afa2ae 100644 ---- a/kernel/nvidia-drm/nvidia-drm-prime-fence.h -+++ b/kernel/nvidia-drm/nvidia-drm-prime-fence.h -@@ -27,9 +27,10 @@ - - #if defined(NV_DRM_AVAILABLE) - --#include <drm/drmP.h> -+struct drm_file; -+struct drm_device; - --#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) -+#if defined(NV_DRM_FENCE_AVAILABLE) - - int nv_drm_fence_supported_ioctl(struct drm_device *dev, - void *data, struct drm_file *filep); -@@ -40,7 +41,7 @@ int nv_drm_fence_context_create_ioctl(struct drm_device *dev, - int nv_drm_gem_fence_attach_ioctl(struct drm_device *dev, - void *data, struct drm_file *filep); - --#endif /* NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ */ -+#endif /* NV_DRM_FENCE_AVAILABLE */ - - #endif /* NV_DRM_AVAILABLE */ - -diff --git a/kernel/nvidia-drm/nvidia-drm-priv.h b/kernel/nvidia-drm/nvidia-drm-priv.h -index f16bea9..4f1a0e7 100644 ---- a/kernel/nvidia-drm/nvidia-drm-priv.h -+++ b/kernel/nvidia-drm/nvidia-drm-priv.h -@@ -27,7 +27,13 @@ - - #if defined(NV_DRM_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) - #include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_DEVICE_H_PRESENT) -+#include <drm/drm_device.h> -+#endif - - #if defined(NV_DRM_DRM_GEM_H_PRESENT) - #include <drm/drm_gem.h> -diff --git a/kernel/nvidia-drm/nvidia-drm-utils.c b/kernel/nvidia-drm/nvidia-drm-utils.c -index ac1097e..8cb2d5e 100644 ---- a/kernel/nvidia-drm/nvidia-drm-utils.c -+++ b/kernel/nvidia-drm/nvidia-drm-utils.c -@@ -24,6 +24,17 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - -+#if defined(NV_DRM_DRMP_H_PRESENT) -+#include <drm/drmP.h> -+#endif -+ -+#if defined(NV_DRM_DRM_PLANE_H_PRESENT) -+#include <drm/drm_plane.h> -+#endif -+ -+#include <drm/drm_modes.h> -+#include <uapi/drm/drm_fourcc.h> -+ - #include "nvidia-drm-priv.h" - #include "nvidia-drm-utils.h" - -diff --git a/kernel/nvidia-drm/nvidia-drm-utils.h b/kernel/nvidia-drm/nvidia-drm-utils.h -index 33bf60c..4801b5e 100644 ---- a/kernel/nvidia-drm/nvidia-drm-utils.h -+++ b/kernel/nvidia-drm/nvidia-drm-utils.h -@@ -27,9 +27,11 @@ - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - --#include <drm/drmP.h> - #include "nvkms-kapi.h" - -+enum drm_plane_type; -+struct drm_display_mode; -+ - struct NvKmsKapiConnectorInfo* - nvkms_get_connector_info(struct NvKmsKapiDevice *pDevice, - NvKmsKapiConnector hConnector); -diff --git a/kernel/nvidia-drm/nvidia-drm.Kbuild b/kernel/nvidia-drm/nvidia-drm.Kbuild -index 3ab1b24..ecdb607 100644 ---- a/kernel/nvidia-drm/nvidia-drm.Kbuild -+++ b/kernel/nvidia-drm/nvidia-drm.Kbuild -@@ -65,6 +65,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += vmf_insert_pfn - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_framebuffer_get - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_get - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_dev_put -+NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_for_each_possible_encoder - - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_bus_present - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_bus_has_bus_type -@@ -88,4 +89,5 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_mode_object_find_has_file_priv_arg - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_connector_list_iter - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_atomic_helper_swap_state_has_stall_arg - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_driver_prime_flag_present -+NV_CONFTEST_TYPE_COMPILE_TESTS += drm_gem_object_has_resv - NV_CONFTEST_TYPE_COMPILE_TESTS += drm_gem_prime_export_has_dev_arg -diff --git a/kernel/nvidia/nv-vm.c b/kernel/nvidia/nv-vm.c -index e407714..9579a01 100644 ---- a/kernel/nvidia/nv-vm.c -+++ b/kernel/nvidia/nv-vm.c -@@ -265,7 +265,9 @@ static unsigned int nv_compute_gfp_mask( - } - } - #endif --#if defined(__GFP_NORETRY) -+#if defined(__GFP_RETRY_MAYFAIL) -+ gfp_mask |= __GFP_RETRY_MAYFAIL; -+#elif defined(__GFP_NORETRY) - gfp_mask |= __GFP_NORETRY; - #endif - #if defined(__GFP_ZERO) -diff --git a/kernel/nvidia/nv.c b/kernel/nvidia/nv.c -index 51e167b..fc9c769 100644 ---- a/kernel/nvidia/nv.c -+++ b/kernel/nvidia/nv.c -@@ -56,6 +56,12 @@ MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER); - #endif - #endif - -+#include <sound/core.h> /* HDA struct snd_card */ -+ -+#if defined(NV_SOUND_HDAUDIO_H_PRESENT) -+#include "sound/hdaudio.h" -+#endif -+ - #include "conftest/patches.h" - - /* -@@ -285,6 +291,12 @@ void NV_API_CALL nv_verify_pci_config( - nv_check_pci_config_space(nv, NV_MAY_SLEEP()); - } - -+#if defined(HDA_MAX_CODECS) -+#define NV_HDA_MAX_CODECS HDA_MAX_CODECS -+#else -+#define NV_HDA_MAX_CODECS 8 -+#endif -+ - /*** - *** STATIC functions, only in this file - ***/ diff --git a/kernel-5.6.patch b/kernel-5.6.patch deleted file mode 100644 index bc1968d71e71..000000000000 --- a/kernel-5.6.patch +++ /dev/null @@ -1,415 +0,0 @@ -diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h -index 85041c2..ac5bb95 100644 ---- a/kernel/common/inc/nv-linux.h -+++ b/kernel/common/inc/nv-linux.h -@@ -553,7 +553,11 @@ static inline void *nv_ioremap(NvU64 phys, NvU64 size) - - static inline void *nv_ioremap_nocache(NvU64 phys, NvU64 size) - { -+#if defined(NV_IOREMAP_NOCACHE_PRESENT) - void *ptr = ioremap_nocache(phys, size); -+#else -+ void *ptr = ioremap(phys, size); -+#endif - if (ptr) - NV_MEMDBG_ADD(ptr, size); - return ptr; -diff --git a/kernel/common/inc/nv-procfs.h b/kernel/common/inc/nv-procfs.h -index 3c812ea..e57c4f9 100644 ---- a/kernel/common/inc/nv-procfs.h -+++ b/kernel/common/inc/nv-procfs.h -@@ -52,6 +52,19 @@ - }) - #endif - -+#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 = NV_CREATE_PROC_ENTRY(filename, mode, parent, fops, \ -+ __data); \ -+ __entry; \ -+ }) -+#else - #define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ - ({ \ - struct proc_dir_entry *__entry; \ -@@ -63,6 +76,7 @@ - __data); \ - __entry; \ - }) -+#endif - - /* - * proc_mkdir_mode exists in Linux 2.6.9, but isn't exported until Linux 3.0. -@@ -104,6 +118,24 @@ - remove_proc_entry(entry->name, entry->parent); - #endif - -+#if defined(NV_HAVE_PROC_OPS) -+#define NV_DEFINE_PROCFS_SINGLE_FILE(__name) \ -+ static int nv_procfs_open_##__name( \ -+ struct inode *inode, \ -+ struct file *filep \ -+ ) \ -+ { \ -+ return single_open(filep, nv_procfs_read_##__name, \ -+ NV_PDE_DATA(inode)); \ -+ } \ -+ \ -+ 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 = single_release, \ -+ }; -+#else - #define NV_DEFINE_PROCFS_SINGLE_FILE(__name) \ - static int nv_procfs_open_##__name( \ - struct inode *inode, \ -@@ -121,6 +153,7 @@ - .llseek = seq_lseek, \ - .release = single_release, \ - }; -+#endif - - #endif /* CONFIG_PROC_FS */ - -diff --git a/kernel/common/inc/nv-time.h b/kernel/common/inc/nv-time.h -index 2c799c9..0206062 100644 ---- a/kernel/common/inc/nv-time.h -+++ b/kernel/common/inc/nv-time.h -@@ -30,7 +30,12 @@ - #include <linux/ktime.h> - #endif - --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); -@@ -39,7 +44,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 ec9e093..463a464 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -1197,6 +1197,22 @@ compile_test() { - compile_check_conftest "$CODE" "NV_IOREMAP_CACHE_PRESENT" "" "functions" - ;; - -+ ioremap_nocache) -+ # -+ # Determine if the ioremap_nocache() function is present. -+ # -+ # Removed by commit 4bdc0d676a64 ("remove ioremap_nocache and -+ # devm_ioremap_nocache") in v5.6 (2020-01-06) -+ # -+ CODE=" -+ #include <asm/io.h> -+ void conftest_ioremap_nocache(void) { -+ ioremap_nocache(); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_IOREMAP_NOCACHE_PRESENT" "" "functions" -+ ;; -+ - ioremap_wc) - # - # Determine if the ioremap_wc() function is present. -@@ -1430,6 +1446,31 @@ compile_test() { - compile_check_conftest "$CODE" "NV_SG_ALLOC_TABLE_FROM_PAGES_PRESENT" "" "functions" - ;; - -+ 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" -+ ;; -+ - efi_enabled) - # - # Determine if the efi_enabled symbol is present, or if -diff --git a/kernel/nvidia-modeset/nvidia-modeset-linux.c b/kernel/nvidia-modeset/nvidia-modeset-linux.c -index d42aabb..f0404fb 100644 ---- a/kernel/nvidia-modeset/nvidia-modeset-linux.c -+++ b/kernel/nvidia-modeset/nvidia-modeset-linux.c -@@ -216,7 +216,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 8784a82..c256cdb 100644 ---- a/kernel/nvidia-uvm/uvm_linux.h -+++ b/kernel/nvidia-uvm/uvm_linux.h -@@ -329,7 +329,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 ts64 = {0}; -+ -+ ktime_get_raw_ts64(&ts64); -+ -+ return (ts64.tv_sec * 1000000000ULL + ts64.tv_nsec); -+} -+#elif defined(CLOCK_MONOTONIC_RAW) - /* Return a nanosecond-precise value */ - static inline NvU64 NV_GETTIME(void) - { -@@ -345,7 +354,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/nv-procfs.c b/kernel/nvidia/nv-procfs.c -index 5808a88..bc60a08 100644 ---- a/kernel/nvidia/nv-procfs.c -+++ b/kernel/nvidia/nv-procfs.c -@@ -414,6 +414,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, -@@ -422,6 +431,7 @@ static struct file_operations nv_procfs_registry_fops = { - .llseek = seq_lseek, - .release = nv_procfs_close_registry, - }; -+#endif - - /* - * Forwards error to nv_log_error which exposes data to vendor callback -@@ -517,12 +527,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( -@@ -650,6 +668,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, -@@ -658,6 +685,7 @@ static struct file_operations nv_procfs_unbind_lock_fops = { - .llseek = seq_lseek, - .release = nv_procfs_close_unbind_lock, - }; -+#endif - - static int - nv_procfs_read_text_file( -diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild -index 8ae1016..da7f135 100644 ---- a/kernel/nvidia/nvidia.Kbuild -+++ b/kernel/nvidia/nvidia.Kbuild -@@ -117,6 +117,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += on_each_cpu - NV_CONFTEST_FUNCTION_COMPILE_TESTS += smp_call_function - NV_CONFTEST_FUNCTION_COMPILE_TESTS += acpi_evaluate_integer - NV_CONFTEST_FUNCTION_COMPILE_TESTS += ioremap_cache -+NV_CONFTEST_FUNCTION_COMPILE_TESTS += ioremap_nocache - NV_CONFTEST_FUNCTION_COMPILE_TESTS += ioremap_wc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += acpi_walk_namespace - NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_domain_nr -@@ -169,7 +170,9 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += outer_flush_all - NV_CONFTEST_TYPE_COMPILE_TESTS += proc_dir_entry - NV_CONFTEST_TYPE_COMPILE_TESTS += scatterlist - NV_CONFTEST_TYPE_COMPILE_TESTS += sg_table -+NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops - NV_CONFTEST_TYPE_COMPILE_TESTS += file_operations -+NV_CONFTEST_TYPE_COMPILE_TESTS += ktime_get_raw_ts64 - NV_CONFTEST_TYPE_COMPILE_TESTS += vm_operations_struct - NV_CONFTEST_TYPE_COMPILE_TESTS += atomic_long_type - NV_CONFTEST_TYPE_COMPILE_TESTS += pci_save_state -diff --git a/kernel/nvidia/nvlink_linux.c b/kernel/nvidia/nvlink_linux.c -index 0014280..537b257 100644 ---- a/kernel/nvidia/nvlink_linux.c -+++ b/kernel/nvidia/nvlink_linux.c -@@ -518,8 +518,8 @@ void * NVLINK_API_CALL nvlink_memcpy(void *dest, void *src, 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) -@@ -528,9 +528,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; -@@ -544,9 +544,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; -@@ -566,7 +566,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 344daa8..39d0a19 100644 ---- a/kernel/nvidia/os-interface.c -+++ b/kernel/nvidia/os-interface.c -@@ -430,7 +430,7 @@ NV_STATUS NV_API_CALL os_get_current_time( - NvU32 *useconds - ) - { -- struct timeval tm; -+ struct nv_timeval tm; - - nv_gettimeofday(&tm); - -@@ -444,9 +444,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); - } -@@ -502,7 +508,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 -@@ -542,9 +548,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); -@@ -1926,7 +1932,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/kernel-5.7.patch b/kernel-5.7.patch deleted file mode 100644 index 27104c3d8539..000000000000 --- a/kernel-5.7.patch +++ /dev/null @@ -1,156 +0,0 @@ -diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h -index 85041c2..8d30833 100644 ---- a/kernel/common/inc/nv-linux.h -+++ b/kernel/common/inc/nv-linux.h -@@ -231,6 +231,7 @@ NV_STATUS nvos_forward_error_to_cray(struct pci_dev *, NvU32, - #endif - - #if defined(NV_ASM_SET_MEMORY_H_PRESENT) -+#include <asm/pgtable_types.h> - #include <asm/set_memory.h> - #endif - -diff --git a/kernel/conftest.sh b/kernel/conftest.sh -index cc25806..7d040ab 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -130,6 +130,7 @@ test_headers() { - - # Arch specific headers which need testing - FILES_ARCH="asm/book3s/64/hash-64k.h" -+ FILES_ARCH="$FILES_ARCH asm/pgtable_types.h" - FILES_ARCH="$FILES_ARCH asm/set_memory.h" - FILES_ARCH="$FILES_ARCH asm/powernv.h" - FILES_ARCH="$FILES_ARCH asm/tlbflush.h" -@@ -398,6 +399,7 @@ compile_test() { - # - CODE=" - #if defined(NV_ASM_SET_MEMORY_H_PRESENT) -+ #include <asm/pgtable_types.h> - #include <asm/set_memory.h> - #else - #include <asm/cacheflush.h> -@@ -415,6 +417,7 @@ compile_test() { - # - CODE=" - #if defined(NV_ASM_SET_MEMORY_H_PRESENT) -+ #include <asm/pgtable_types.h> - #include <asm/set_memory.h> - #else - #include <asm/cacheflush.h> -@@ -426,6 +429,22 @@ compile_test() { - compile_check_conftest "$CODE" "NV_SET_MEMORY_ARRAY_UC_PRESENT" "" "functions" - ;; - -+ set_pages_array_uc) -+ # -+ # Determine if the set_pages_array_uc() function is present. -+ # -+ CODE=" -+ #if defined(NV_ASM_SET_MEMORY_H_PRESENT) -+ #include <asm/pgtable_types.h> -+ #include <asm/set_memory.h> -+ #endif -+ void conftest_set_pages_array_uc(void) { -+ set_pages_array_uc(); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_SET_PAGES_ARRAY_UC_PRESENT" "" "functions" -+ ;; -+ - sysfs_slab_unlink) - # - # Determine if the sysfs_slab_unlink() function is present. -@@ -467,6 +486,7 @@ compile_test() { - # - CODE=" - #if defined(NV_ASM_SET_MEMORY_H_PRESENT) -+ #include <asm/pgtable_types.h> - #include <asm/set_memory.h> - #else - #include <asm/cacheflush.h> -diff --git a/kernel/nvidia/nv-vm.c b/kernel/nvidia/nv-vm.c -index e407714..e1f3095 100644 ---- a/kernel/nvidia/nv-vm.c -+++ b/kernel/nvidia/nv-vm.c -@@ -62,7 +62,7 @@ static inline int nv_set_memory_array_type_present(NvU32 type) - { - switch (type) - { --#if defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) -+#if defined(NV_SET_PAGES_ARRAY_UC_PRESENT) || defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) - case NV_MEMORY_UNCACHED: - return 1; - case NV_MEMORY_WRITEBACK: -@@ -74,14 +74,25 @@ static inline int nv_set_memory_array_type_present(NvU32 type) - } - - static inline void nv_set_memory_array_type( -+#if defined(NV_SET_PAGES_ARRAY_UC_PRESENT) -+ struct page** pages, -+#else - unsigned long *pages, -+#endif - NvU32 num_pages, - NvU32 type - ) - { - switch (type) - { --#if defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) -+#if defined(NV_SET_PAGES_ARRAY_UC_PRESENT) -+ case NV_MEMORY_UNCACHED: -+ set_pages_array_uc(pages, num_pages); -+ break; -+ case NV_MEMORY_WRITEBACK: -+ set_pages_array_wb(pages, num_pages); -+ break; -+#elif defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) - case NV_MEMORY_UNCACHED: - set_memory_array_uc(pages, num_pages); - break; -@@ -125,7 +136,11 @@ static inline void nv_set_memory_type(nv_alloc_t *at, NvU32 type) - { - NvU32 i; - NV_STATUS status; -+#if defined(NV_SET_PAGES_ARRAY_UC_PRESENT) -+ struct page** pages; -+#else - unsigned long *pages; -+#endif - nvidia_pte_t *page_ptr; - struct page *page; - -@@ -136,7 +151,7 @@ static inline void nv_set_memory_type(nv_alloc_t *at, NvU32 type) - if (nv_set_memory_array_type_present(type)) - { - status = os_alloc_mem((void **)&pages, -- at->num_pages * sizeof(unsigned long)); -+ at->num_pages * sizeof(*pages)); - if (status != NV_OK) - pages = NULL; - } -@@ -147,7 +162,11 @@ static inline void nv_set_memory_type(nv_alloc_t *at, NvU32 type) - { - page_ptr = at->page_table[i]; - page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); -+#if defined(NV_SET_PAGES_ARRAY_UC_PRESENT) -+ pages[i] = page; -+#else - pages[i] = (unsigned long)page_address(page); -+#endif - } - nv_set_memory_array_type(pages, at->num_pages, type); - os_free_mem(pages); -diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild -index 8ae1016..104d4fd 100644 ---- a/kernel/nvidia/nvidia.Kbuild -+++ b/kernel/nvidia/nvidia.Kbuild -@@ -105,6 +105,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_pages_uc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += list_is_first - NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_memory_uc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_memory_array_uc -+NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_pages_array_uc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += change_page_attr - NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_get_class - NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_choose_state |