commit 90fc36a63a0a70fd2a47c487551431233477502f
Author: Nicolas Viéville <nicolas.vieville(a)uphf.fr>
Date: Wed Apr 12 14:10:01 2023 +0200
Add patch for kernel >= 6.2
nvidia-390xx-kmod-0024-kernel-6.2-adaptation.patch | 160 +++++++++++++++++++++
nvidia-390xx-kmod.spec | 7 +-
2 files changed, 166 insertions(+), 1 deletion(-)
---
diff --git a/nvidia-390xx-kmod-0024-kernel-6.2-adaptation.patch
b/nvidia-390xx-kmod-0024-kernel-6.2-adaptation.patch
new file mode 100644
index 0000000..4f8e6fc
--- /dev/null
+++ b/nvidia-390xx-kmod-0024-kernel-6.2-adaptation.patch
@@ -0,0 +1,160 @@
+From 051a24b3b4e6e6a617dea98184b598e3039e7db9 Mon Sep 17 00:00:00 2001
+From: NVieville <nicolas.vieville(a)uphf.fr>
+Date: Wed, 12 Apr 2023 12:14:39 +0200
+Subject: [PATCH] Fix build for kernel 6.2.x
+
+Signed-off-by: NVieville <nicolas.vieville(a)uphf.fr>
+---
+ kernel/nvidia-drm/nvidia-drm-connector.c | 21 +++++++++++++++++++++
+ kernel/nvidia-drm/nvidia-drm-drv.c | 4 ++++
+ kernel/nvidia/nv-acpi.c | 19 +++++++++++++++++++
+ 3 files changed, 44 insertions(+)
+
+diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c
b/kernel/nvidia-drm/nvidia-drm-connector.c
+index 54167a7..9585840 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 <drm/drm_edid.h>
+ #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
+
+ #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
+@@ -98,6 +100,7 @@ __nv_drm_detect_encoder(struct NvKmsKapiDynamicDisplayParams
*pDetectParams,
+ break;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0))
+ if (connector->override_edid) {
+ const struct drm_property_blob *edid = connector->edid_blob_ptr;
+
+@@ -110,6 +113,24 @@ __nv_drm_detect_encoder(struct NvKmsKapiDynamicDisplayParams
*pDetectParams,
+ sizeof(pDetectParams->edid.buffer));
+ }
+ }
++#else
++ // Rel. commit "drm/edid: detach debugfs EDID override from EDID property
update" (Jani Nikula, 24 Oct 2022)
++ // NOTE: HUGE HACK!
++ mutex_lock(&connector->edid_override_mutex);
++ if (connector->edid_override) {
++ const struct edid *edid = drm_edid_raw(connector->edid_override);
++ size_t edid_length = EDID_LENGTH * (edid->extensions + 1);
++ if (edid_length <= sizeof(pDetectParams->edid.buffer)) {
++ memcpy(pDetectParams->edid.buffer, edid, edid_length);
++ pDetectParams->edid.bufferSize = edid_length;
++ pDetectParams->overrideEdid = NV_TRUE;
++ } else {
++ WARN_ON(edid_length >
++ sizeof(pDetectParams->edid.buffer));
++ }
++ }
++ mutex_unlock(&connector->edid_override_mutex);
++#endif
+
+ if (!nvKms->getDynamicDisplayInfo(nv_dev->pDevice, pDetectParams)) {
+ NV_DRM_DEV_LOG_ERR(
+diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c
+index 1289cb3..ca03978 100644
+--- a/kernel/nvidia-drm/nvidia-drm-drv.c
++++ b/kernel/nvidia-drm/nvidia-drm-drv.c
+@@ -20,6 +20,7 @@
+ * 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"
+@@ -239,9 +240,12 @@ nv_drm_init_mode_config(struct nv_drm_device *nv_dev,
+ dev->mode_config.preferred_depth = 24;
+ dev->mode_config.prefer_shadow = 1;
+
++// Rel. commit "drm: Remove drm_mode_config::fb_base" (Zack Rusin, 18 Oct
2022)
++#if defined(CONFIG_FB) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0))
+ /* Currently unused. Update when needed. */
+
+ dev->mode_config.fb_base = 0;
++#endif
+
+ dev->mode_config.async_page_flip = false;
+
+diff --git a/kernel/nvidia/nv-acpi.c b/kernel/nvidia/nv-acpi.c
+index b37c9f3..06056a4 100644
+--- a/kernel/nvidia/nv-acpi.c
++++ b/kernel/nvidia/nv-acpi.c
+@@ -8,6 +8,7 @@
+ * _NVRM_COPYRIGHT_END_
+ */
+
++#include <linux/version.h>
+ #define __NO_VERSION__
+
+ #include "nv-misc.h"
+@@ -23,11 +24,16 @@ static NV_STATUS nv_acpi_extract_object (const union acpi_object
*, void *, N
+
+ static int nv_acpi_add (struct acpi_device *);
+
++// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14
Nov 2022)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0))
++static void nv_acpi_remove_one_arg_void(struct acpi_device *device);
++#else
+ #if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) ||
(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+ static int nv_acpi_remove_two_args(struct acpi_device *device, int type);
+ #else
+ static int nv_acpi_remove_one_arg(struct acpi_device *device);
+ #endif
++#endif
+
+ static void nv_acpi_event (acpi_handle, u32, void *);
+ static acpi_status nv_acpi_find_methods (acpi_handle, u32, void *, void **);
+@@ -73,11 +79,16 @@ static const struct acpi_driver nv_acpi_driver_template = {
+ #endif
+ .ops = {
+ .add = nv_acpi_add,
++// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14
Nov 2022)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0))
++ .remove = nv_acpi_remove_one_arg_void,
++#else
+ #if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) ||
(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+ .remove = nv_acpi_remove_two_args,
+ #else
+ .remove = nv_acpi_remove_one_arg,
+ #endif
++#endif
+ #if defined(NV_ACPI_DEVICE_OPS_HAS_MATCH)
+ .match = nv_acpi_match,
+ #endif
+@@ -331,11 +342,16 @@ static int nv_acpi_add(struct acpi_device *device)
+ return 0;
+ }
+
++// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14
Nov 2022)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0))
++static void nv_acpi_remove_one_arg_void(struct acpi_device *device)
++#else
+ #if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) ||
(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+ static int nv_acpi_remove_two_args(struct acpi_device *device, int type)
+ #else
+ static int nv_acpi_remove_one_arg(struct acpi_device *device)
+ #endif
++#endif
+ {
+ /*
+ * This function will cause RM to relinquish control of the VGA ACPI device.
+@@ -385,7 +401,10 @@ static int nv_acpi_remove_one_arg(struct acpi_device *device)
+ device->driver_data = NULL;
+ }
+
++// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14
Nov 2022)
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0))
+ return status;
++#endif
+ }
+
+ static void nv_acpi_event(acpi_handle handle, u32 event_type, void *data)
+--
+2.39.2
+
diff --git a/nvidia-390xx-kmod.spec b/nvidia-390xx-kmod.spec
index e60d174..4c31b3d 100644
--- a/nvidia-390xx-kmod.spec
+++ b/nvidia-390xx-kmod.spec
@@ -18,7 +18,7 @@ Name: nvidia-390xx-kmod
Epoch: 3
Version: 390.157
# Taken over by kmodtool
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: NVIDIA 390xx display driver kernel module
Group: System Environment/Kernel
License: Redistributable, no modification permitted
@@ -42,6 +42,7 @@ Patch13: 0018-backport-nv_install_notifier-changes-from-418.30.patch
#Patch18: 0023-backport-drm_frambuffer.h-changes-from-515.76.patch
#Copied from Arch
Patch19: kernel-4.16+-memory-encryption.patch
+Patch20: nvidia-390xx-kmod-0024-kernel-6.2-adaptation.patch
# build system updates
Patch30: use-kbuild-compiler.patch
@@ -85,6 +86,7 @@ tar --use-compress-program xz -xf
%{_datadir}/%{name}-%{version}/%{name}-%{versi
#patch17 -p1 -b 17 -d kernel
#patch18 -p1 -b 18 -d kernel
%patch19 -p1 -b 19
+%patch20 -p1 -b 20
%patch30 -p1 -b 30 -d kernel
%patch31 -p1 -b 31 -d kernel
@@ -122,6 +124,9 @@ done
%changelog
+* Wed Apr 12 2023 Nicolas Viéville <nicolas.vieville(a)uphf.fr> - 3:390.157-2
+- Add patch for kernel >= 6.2
+
* Sat Jan 07 2023 Henrik Nordstrom <henrik(a)henriknordstrom.net> - 3:390.157-1
- Update to 390.157