Bug#1032891: nvidia-legacy-340xx-kernel-dkms: dkms module does not build against kernel 6.2

Juan vejeta at gmail.com
Mon Mar 13 15:20:43 GMT 2023


Package: nvidia-legacy-340xx-kernel-dkms
Version: 340.108-17
Severity: important
Tags: patch
X-Debbugs-Cc: vejeta at gmail.com

Dear Maintainer,

   * What led up to the situation?

   When compiling the module when installing a 6.2 linux kernel, the dkms modules compilation failed with:

nv-acpi.c:84:19: error: initialization of ‘void (*)(struct acpi_device *)’ from incompatible pointer type ‘int (*)(struct acpi_device *, int)’ [-Werror=incompatible-pointer-types]
      84 |         .remove = nv_acpi_remove_two_args,
         |                   ^~~~~~~~~~~~~~~~~~~~~~~

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

   The fix is applying this patch: https://gist.github.com/vejeta/86e570b0a431b3f8d26911be506323ae
   by copying it to: /usr/src/nvidia-legacy-340xx-340.108/patches and adding the file name "nvidia-340xx-fix-linux-6.2.patch" 
   to line 12 in /usr/src/nvidia-legacy-340xx-340.108/dkms.conf
   like:
   PATCH=(bashisms.patch 0001-backport-error-on-unknown-conftests.patch 0002-backport-error-on-unknown-conftests-uvm-part.patch unregister_procfs_on_failure.patch kmem_cache_create_usercopy.patch buil
nvidia-340xx-fix-linux-6.2.patch)


   * What was the outcome of this action?

   The kernel could compile the nvidia 340 module and the system worked perfectly after it.

 


-- System Information:
Debian Release: bookworm/sid
  APT prefers testing-security
  APT policy: (500, 'testing-security'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.2.5-x64v3-xanmod1 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to es_ES.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-------------- next part --------------
From: Juan Manuel Méndez Rey <vejeta at gmail.com>
Date: Mon, 13 Mar 2023 15:49:30 +0000
Subject: [PATCH] Tentative fix for NVIDIA 340.108 DKMS source for Linux 6.2

Credit goes to Joan Bruguera <joanbrugeram at gmail.com> for the inspiration patch:
"Tentative fix for NVIDIA 470.161.03 driver for Linux 6.2"


---
 nv-acpi.c              | 19 ++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/nv-acpi.c b/nv-acpi.c
index 07501eb..1fdf71c 100644
--- a/nv-acpi.c
+++ b/nv-acpi.c
@@ -8,6 +8,7 @@
  * _NVRM_COPYRIGHT_END_
  */
 
+#include <linux/version.h>
 #define  __NO_VERSION__
 
 #include "os-interface.h"
@@ -24,7 +25,10 @@ static NV_STATUS   nv_acpi_extract_object  (const union acpi_object *, void *, N
 
 static int         nv_acpi_add             (struct acpi_device *);
 
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+// 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);
+#elif !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);
@@ -80,7 +84,10 @@ static const struct acpi_driver nv_acpi_driver_template = {
     .ids = nv_video_device_ids,
     .ops = {
         .add = nv_acpi_add,
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+// 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,
+#elif !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,
@@ -342,7 +349,10 @@ static int nv_acpi_add(struct acpi_device *device)
     return 0;
 }
 
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2)
+// 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)
+#elif !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)
@@ -396,7 +406,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
 }
 
 /*
-- 
2.39.0



More information about the pkg-nvidia-devel mailing list