From 3cd4808739fae44a02ec9b3f18f0cafbaa03e6a9 Mon Sep 17 00:00:00 2001 From: Rmys Date: Sat, 4 Apr 2020 10:04:48 +0300 Subject: [PATCH] nvidia rebuild --- kernel/drivers/module-nvidia430/actions.py | 8 +- ...VIDIA-Linux-x86_64-430.64-kernel-5.5.patch | 397 ++++++++++++++++++ ..._64-430.64-work-around-mga-bug-25890.patch | 45 ++ kernel/drivers/module-nvidia430/pspec.xml | 2 + 4 files changed, 449 insertions(+), 3 deletions(-) create mode 100644 kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch create mode 100644 kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch diff --git a/kernel/drivers/module-nvidia430/actions.py b/kernel/drivers/module-nvidia430/actions.py index 1ac2979967..6e3c239ca4 100644 --- a/kernel/drivers/module-nvidia430/actions.py +++ b/kernel/drivers/module-nvidia430/actions.py @@ -26,10 +26,12 @@ def setup(): % 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") + #5.5 patch icin + shelltools.move("tmp/.manifest", ".") + + shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch") + shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch") - #shelltools.system("patch -p1 < header-fix.patch") # Our libc is TLS enabled so use TLS library #shelltools.unlink("*-tls.so*") diff --git a/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch b/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch new file mode 100644 index 0000000000..1cae313315 --- /dev/null +++ b/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch @@ -0,0 +1,397 @@ + + .manifest | 1 + + kernel/common/inc/nv-drm.h | 36 ++++++++++++++++++++++++++++++++++++ + kernel/conftest.sh | 31 +++++++++++++++++++++++++++++++ + kernel/nvidia-drm/nvidia-drm-connector.c | 14 ++++++++++++++ + kernel/nvidia-drm/nvidia-drm-connector.h | 2 +- + kernel/nvidia-drm/nvidia-drm-crtc.h | 2 +- + kernel/nvidia-drm/nvidia-drm-drv.c | 2 +- + kernel/nvidia-drm/nvidia-drm-encoder.h | 2 +- + kernel/nvidia-drm/nvidia-drm-fb.h | 2 +- + kernel/nvidia-drm/nvidia-drm-gem.h | 2 +- + kernel/nvidia-drm/nvidia-drm-helper.c | 2 +- + kernel/nvidia-drm/nvidia-drm-helper.h | 2 +- + kernel/nvidia-drm/nvidia-drm-modeset.h | 2 +- + kernel/nvidia-drm/nvidia-drm-os-interface.h | 2 +- + kernel/nvidia-drm/nvidia-drm-prime-fence.h | 2 +- + kernel/nvidia-drm/nvidia-drm-priv.h | 2 +- + kernel/nvidia-drm/nvidia-drm-utils.h | 2 +- + 17 files changed, 95 insertions(+), 13 deletions(-) + +diff -Nurp a/kernel/common/inc/nv-drm.h b/kernel/common/inc/nv-drm.h +--- a/kernel/common/inc/nv-drm.h 1970-01-01 02:00:00.000000000 +0200 ++++ b/kernel/common/inc/nv-drm.h 2020-02-09 23:07:31.142465482 +0200 +@@ -0,0 +1,36 @@ ++#ifndef _NV_DRM_H_ ++#define _NV_DRM_H_ ++ ++#include "conftest.h" ++ ++#if defined(NV_DRM_DRMP_H_PRESENT) ++#include ++#else ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#endif ++ ++#endif +diff -Nurp a/kernel/conftest.sh b/kernel/conftest.sh +--- a/kernel/conftest.sh 2019-10-23 18:48:14.000000000 +0300 ++++ b/kernel/conftest.sh 2020-02-09 23:07:31.143465528 +0200 +@@ -1080,6 +1080,9 @@ compile_test() { + CODE=" + #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #else ++ #include ++ #include + #endif + #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE) + #error DRM not enabled +@@ -1769,6 +1772,8 @@ compile_test() { + echo "$CONFTEST_PREAMBLE + #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #else ++ #include + #endif + #include + #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE) +@@ -1897,7 +1902,11 @@ compile_test() { + # attached drivers") in v3.14 (2013-12-11) + # + CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #else ++ #include ++ #endif + int conftest_drm_driver_has_legacy_dev_list(void) { + return offsetof(struct drm_driver, legacy_dev_list); + }" +@@ -1921,7 +1930,11 @@ compile_test() { + # 2017-07-23 e6fc3b68558e4c6d8d160b5daf2511b99afa8814 + # + CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #else ++ #include ++ #endif + + int conftest_drm_crtc_init_with_planes_has_name_arg(void) { + return +@@ -1937,7 +1950,11 @@ 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 ++ #else ++ #include ++ #endif + + int conftest_drm_encoder_init_has_name_arg(void) { + return +@@ -1952,7 +1969,11 @@ 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 ++ #else ++ #include ++ #endif + + int conftest_drm_universal_plane_init_has_format_modifiers_arg(void) { + return +@@ -1979,7 +2000,11 @@ 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 ++ #else ++ #include ++ #endif + + int conftest_drm_universal_plane_init_has_name_arg(void) { + return +@@ -3119,7 +3144,9 @@ compile_test() { + # Introduce drm_framebuffer_{get,put}()) on 2017-02-28. + # + CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #endif + #if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT) + #include + #endif +@@ -3138,7 +3165,9 @@ compile_test() { + # Introduce drm_gem_object_{get,put}()) on 2017-02-28. + # + CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #endif + #if defined(NV_DRM_DRM_GEM_H_PRESENT) + #include + #endif +@@ -3157,7 +3186,9 @@ compile_test() { + # introduce drm_dev_{get/put} functions) on 2017-09-26. + # + CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) + #include ++ #endif + #if defined(NV_DRM_DRM_DRV_H_PRESENT) + #include + #endif +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c +--- a/kernel/nvidia-drm/nvidia-drm-connector.c 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-connector.c 2020-02-09 23:07:31.143465528 +0200 +@@ -20,6 +20,8 @@ + * DEALINGS IN THE SOFTWARE. + */ + ++#include ++ + #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) +@@ -71,7 +73,11 @@ static enum drm_connector_status __nv_dr + struct nv_drm_encoder *nv_detected_encoder = NULL; + + struct NvKmsKapiDynamicDisplayParams *pDetectParams = NULL; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0) + unsigned int i; ++#else ++ struct drm_encoder *encoder = NULL; ++#endif + + BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); + +@@ -87,11 +93,16 @@ static enum drm_connector_status __nv_dr + goto done; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0) + for (i = 0; + i < DRM_CONNECTOR_MAX_ENCODER && detected_encoder == NULL; i++) { + struct drm_encoder *encoder; ++#else ++ drm_connector_for_each_possible_encoder(connector, encoder) { ++#endif + struct nv_drm_encoder *nv_encoder; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0) + if (connector->encoder_ids[i] == 0) { + break; + } +@@ -102,6 +113,7 @@ static enum drm_connector_status __nv_dr + BUG_ON(encoder != NULL); + continue; + } ++#endif + + /* + * DVI-I connectors can drive both digital and analog +@@ -169,6 +181,8 @@ static enum drm_connector_status __nv_dr + } + + detected_encoder = encoder; ++ ++ break; + } + } + +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-connector.h b/kernel/nvidia-drm/nvidia-drm-connector.h +--- a/kernel/nvidia-drm/nvidia-drm-connector.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-connector.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + +-#include ++#include "nv-drm.h" + + #include "nvtypes.h" + #include "nvkms-api-types.h" +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-crtc.h b/kernel/nvidia-drm/nvidia-drm-crtc.h +--- a/kernel/nvidia-drm/nvidia-drm-crtc.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-crtc.h 2020-02-09 23:07:31.143465528 +0200 +@@ -29,7 +29,7 @@ + + #include "nvidia-drm-helper.h" + +-#include ++#include "nv-drm.h" + #include "nvtypes.h" + #include "nvkms-kapi.h" + +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c +--- a/kernel/nvidia-drm/nvidia-drm-drv.c 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2020-02-09 23:07:31.143465528 +0200 +@@ -39,7 +39,7 @@ + + #include "nvidia-drm-ioctl.h" + +-#include ++#include "nv-drm.h" + + /* + * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h") +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-encoder.h b/kernel/nvidia-drm/nvidia-drm-encoder.h +--- a/kernel/nvidia-drm/nvidia-drm-encoder.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-encoder.h 2020-02-09 23:07:31.143465528 +0200 +@@ -32,7 +32,7 @@ + #if defined(NV_DRM_DRM_ENCODER_H_PRESENT) + #include + #else +-#include ++#include "nv-drm.h" + #endif + + #include "nvkms-kapi.h" +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-fb.h b/kernel/nvidia-drm/nvidia-drm-fb.h +--- a/kernel/nvidia-drm/nvidia-drm-fb.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-fb.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + +-#include ++#include "nv-drm.h" + #include "nvidia-drm-gem-nvkms-memory.h" + #include "nvkms-kapi.h" + +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h +--- a/kernel/nvidia-drm/nvidia-drm-gem.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-gem.h 2020-02-09 23:07:31.143465528 +0200 +@@ -29,7 +29,7 @@ + + #include "nvidia-drm-priv.h" + +-#include ++#include "nv-drm.h" + #include "nvkms-kapi.h" + + #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-helper.c b/kernel/nvidia-drm/nvidia-drm-helper.c +--- a/kernel/nvidia-drm/nvidia-drm-helper.c 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-helper.c 2020-02-09 23:07:31.143465528 +0200 +@@ -31,7 +31,7 @@ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + +-#include ++#include "nv-drm.h" + #if defined(NV_DRM_DRM_ATOMIC_UAPI_H_PRESENT) + #include + #endif +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-helper.h b/kernel/nvidia-drm/nvidia-drm-helper.h +--- a/kernel/nvidia-drm/nvidia-drm-helper.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-helper.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_AVAILABLE) + +-#include ++#include "nv-drm.h" + + /* + * drm_dev_put() is added by commit 9a96f55034e41b4e002b767e9218d55f03bdff7d +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-modeset.h b/kernel/nvidia-drm/nvidia-drm-modeset.h +--- a/kernel/nvidia-drm/nvidia-drm-modeset.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-modeset.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + +-#include ++#include "nv-drm.h" + + 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 -Nurp a/kernel/nvidia-drm/nvidia-drm-os-interface.h b/kernel/nvidia-drm/nvidia-drm-os-interface.h +--- a/kernel/nvidia-drm/nvidia-drm-os-interface.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-os-interface.h 2020-02-09 23:07:31.143465528 +0200 +@@ -29,7 +29,7 @@ + + #if defined(NV_DRM_AVAILABLE) + +-#include ++#include "nv-drm.h" + + /* Set to true when the atomic modeset feature is enabled. */ + extern bool nv_drm_modeset_module_param; +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-prime-fence.h b/kernel/nvidia-drm/nvidia-drm-prime-fence.h +--- a/kernel/nvidia-drm/nvidia-drm-prime-fence.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-prime-fence.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_AVAILABLE) + +-#include ++#include "nv-drm.h" + + #if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ) + +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-priv.h b/kernel/nvidia-drm/nvidia-drm-priv.h +--- a/kernel/nvidia-drm/nvidia-drm-priv.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-priv.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_AVAILABLE) + +-#include ++#include "nv-drm.h" + + #if defined(NV_DRM_DRM_GEM_H_PRESENT) + #include +diff -Nurp a/kernel/nvidia-drm/nvidia-drm-utils.h b/kernel/nvidia-drm/nvidia-drm-utils.h +--- a/kernel/nvidia-drm/nvidia-drm-utils.h 2019-10-27 13:48:11.000000000 +0200 ++++ b/kernel/nvidia-drm/nvidia-drm-utils.h 2020-02-09 23:07:31.143465528 +0200 +@@ -27,7 +27,7 @@ + + #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + +-#include ++#include "nv-drm.h" + #include "nvkms-kapi.h" + + struct NvKmsKapiConnectorInfo* +diff -Nurp a/.manifest b/.manifest +--- a/.manifest 2019-10-27 13:55:51.000000000 +0200 ++++ b/.manifest 2020-02-09 23:07:31.144465574 +0200 +@@ -37,6 +37,7 @@ kernel/nvidia/nv-rsync.c 0644 KERNEL_MOD + kernel/nvidia/nv-msi.c 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman + kernel/conftest.sh 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman + kernel/common/inc/nv.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman ++kernel/common/inc/nv-drm.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman + kernel/common/inc/nv-pgprot.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman + kernel/common/inc/nv-mm.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman + kernel/common/inc/nv-timer.h 0644 KERNEL_MODULE_SRC INHERIT_PATH_DEPTH:1 MODULE:resman diff --git a/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch b/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch new file mode 100644 index 0000000000..ccac0dbabf --- /dev/null +++ b/kernel/drivers/module-nvidia430/files/mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch @@ -0,0 +1,45 @@ + +In this bug: +https://bugs.mageia.org/show_bug.cgi?id=25890 + +The nvidia-current conftest.sh falsely detects support for +set_memory_array_uc/wb() in 5.4 series kernels + +Fix it by adding linux kernel version checks to exclude the unsuppoorted code + +Signed-off-by: Thomas Backlund + +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nv-vm.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nv-vm.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nv-vm.c 2019-10-27 13:48:11.000000000 +0200 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nv-vm.c 2019-12-29 23:54:36.176732208 +0200 +@@ -42,12 +42,14 @@ static inline int nv_set_memory_array_ty + { + switch (type) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) + #if defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) + case NV_MEMORY_UNCACHED: + return 1; + case NV_MEMORY_WRITEBACK: + return 1; + #endif ++#endif + default: + return 0; + } +@@ -61,6 +63,7 @@ static inline void nv_set_memory_array_t + { + switch (type) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) + #if defined(NV_SET_MEMORY_ARRAY_UC_PRESENT) + case NV_MEMORY_UNCACHED: + set_memory_array_uc(pages, num_pages); +@@ -69,6 +72,7 @@ static inline void nv_set_memory_array_t + set_memory_array_wb(pages, num_pages); + break; + #endif ++#endif + default: + nv_printf(NV_DBG_ERRORS, + "NVRM: %s(): type %d unimplemented\n", diff --git a/kernel/drivers/module-nvidia430/pspec.xml b/kernel/drivers/module-nvidia430/pspec.xml index 3c0ce5e593..1a17f84d6f 100644 --- a/kernel/drivers/module-nvidia430/pspec.xml +++ b/kernel/drivers/module-nvidia430/pspec.xml @@ -20,6 +20,8 @@ dkms.conf + mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch + mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch