@vnctdj, @drankinatty and @canolucas,
Thanks for your much appreciated 6.12 efforts. Builds, installs and operates correctly against 6.12.1-arch1-1.
Cheers
Git Clone URL: | https://aur.archlinux.org/nvidia-390xx-utils.git (read-only, click to copy) |
---|---|
Package Base: | nvidia-390xx-utils |
Description: | NVIDIA drivers utilities |
Upstream URL: | https://www.nvidia.com/ |
Licenses: | custom |
Conflicts: | nvidia-390xx-libgl, nvidia-libgl, nvidia-utils |
Provides: | nvidia-390xx-libgl, nvidia-libgl, nvidia-utils, opengl-driver, vulkan-driver |
Submitter: | svenstaro |
Maintainer: | jonathon (vnctdj) |
Last Packager: | vnctdj |
Votes: | 61 |
Popularity: | 1.27 |
First Submitted: | 2020-03-11 17:29 (UTC) |
Last Updated: | 2024-11-25 23:34 (UTC) |
« First ‹ Previous 1 2 3 4 5 6 7 .. 27 Next › Last »
@vnctdj, @drankinatty and @canolucas,
Thanks for your much appreciated 6.12 efforts. Builds, installs and operates correctly against 6.12.1-arch1-1.
Cheers
@JuliusTZM, I suspect that is a direct result of the removal of .output_poll_changed = nv_drm_output_poll_changed
from the nvidia drm driver file. There were efforts to incorporate kernel drm with the addition of the functions you see in the patch, but it is likely to have differing capabilities. Let us know if setting the kernel parameter nvidia-drm.modeset=1
doesn't fix the issue. So far I've not noticed any difference -- but HDMI to SmartTV may be something not as well supported by kernel drm?
After this 6.12.patch, setting nvidia-drm.modeset=1 is a must.
I've just added the patch, thanks drankinatty and canolucas!
@JuliusTZM That´s weird, everything is working just fine here. Did you try booting the kernel with nvidia-drm.modeset=1 ?
BTW, I used to follow the guides below (maybe it is useful to you):
Cloning the aur package locally: https://docs.vultr.com/building-packages-on-arch-linux
Building and Installing the local package by using makepkg -sri https://docs.vultr.com/using-makepkg-on-arch-linux
@drankinatty: the patch doesn't fully working in my case. Only 800x600 is working over HDMI to SmartTV.
just tested the patch by @drankinatty, it is working fine here as well ! @vnctdj as package mantainer, are you able to add the patch to the pkgbuild please ?
Well, crap, 6.12 is here and I'm about to roll the dice. We will see if a patch is needed.
Uugh -- driver broke, it will need a patch. We will consult /var/lib/dkms/nvidia/390.157/build/make.log
and go from there....
Success -- Patch 2 based on 470 driver
390xx driver patch needed a bit more than first attempt:
diff -ruNb a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c
--- a/kernel/nvidia-drm/nvidia-drm-drv.c 2024-07-19 05:21:27.848184261 -0500
+++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2024-11-24 03:10:09.342147481 -0600
@@ -84,6 +84,11 @@
#include <drm/drm_atomic_helper.h>
#endif
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+#include <drm/drm_client.h>
+#endif
+
static struct nv_drm_device *dev_list = NULL;
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
@@ -168,7 +173,12 @@
.atomic_check = nv_drm_atomic_check,
.atomic_commit = nv_drm_atomic_commit,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 12, 0)
+ // Rel. commit. "drm: Remove struct drm_mode_config_funcs.output_poll_changed" (Thomas Zimmermann, 12 Aug 2024)
+ // Replace this callback with a DRM client's hotplug callback.
+ // This is required for e.g. /sys/class/drm/card*/modes to work.
.output_poll_changed = nv_drm_output_poll_changed,
+#endif
};
static void nv_drm_event_callback(const struct NvKmsKapiEvent *event)
@@ -652,6 +662,10 @@
.read = drm_read,
.llseek = noop_llseek,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+ // Rel. commit. "fs: move FMODE_UNSIGNED_OFFSET to fop_flags" (Christian Brauner, 9 Aug 2024)
+ .fop_flags = FOP_UNSIGNED_OFFSET,
+#endif
};
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0)
@@ -790,7 +804,18 @@
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+static int hotplug_helper_client_hotplug(struct drm_client_dev *client)
+{
+ nv_drm_output_poll_changed(client->dev);
+ return 0;
+}
+static const struct drm_client_funcs nv_hotplug_helper_client_funcs = {
+ .owner = THIS_MODULE,
+ .hotplug = hotplug_helper_client_hotplug,
+};
+#endif
/*
* Helper function for allocate/register DRM device for given NVIDIA GPU ID.
@@ -844,6 +869,20 @@
goto failed_drm_register;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+ /* Register a DRM client for receiving hotplug events */
+ struct drm_client_dev *client = kzalloc(sizeof(*client), GFP_KERNEL);
+ if (client == NULL || drm_client_init(dev, client,
+ "nv-hotplug-helper", &nv_hotplug_helper_client_funcs)) {
+ printk(KERN_WARNING "Failed to initialize the nv-hotplug-helper DRM client"
+ " (ensure DRM kernel mode setting is enabled via nvidia-drm.modeset=1).\n");
+ goto failed_drm_client_init;
+ }
+
+ drm_client_register(client);
+ pr_info("Registered the nv-hotplug-helper DRM client.\n");
+#endif
+
/* Add NVIDIA-DRM device into list */
nv_dev->next = dev_list;
@@ -851,6 +890,14 @@
return; /* Success */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+failed_drm_client_init:
+
+ kfree(client);
+ drm_dev_unregister(dev);
+
+#endif
+
failed_drm_register:
nv_drm_dev_free(dev);
Apply in PKGBUILD as:
# Adapted from https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e
printf "\n** kernel-6.12 patch**\n\n"
patch -Np1 -i ../kernel-6.12.patch
below the kernel-6.10.patch
block.
This patch is a rewrite based on Joan Bruguera's 470 Driver patch Tested and working fine.
Good until 6.13 :)
Thank goodness for small favors! I've been following the Arch 6.11 open-driver issues and was hoping that would not impact the closed source drivers as well. The only worrying part was the change to the fbdev header. But I look forward to the release and test -- and success :)
Update - openSUSE Tumbleweed just went to the 6.11 kernel and the 390xx driver built and functions without change from the 6.10 kernel. Thankfully!
Update 2 - Arch just released the 6.11 kernel, and the 390xx driver works fine without any patching needed. Next challenge will be the 6.12 kernel.
ok so it looks like linux 3.11 hit the testing repo.. i'll give it a try a.. hopefully everything works fine after reboot.. fingers crossed
UPDATE: everything worked fine, looks like linux 3.11 is compatible with the current version of this driver, so apparently no patching is needed this time..
Pinned Comments
jonathon commented on 2022-05-26 09:46 (UTC)
Please don't flag this package out-of-date unless a new version has been released by NVIDIA.
jonathon commented on 2021-12-26 22:44 (UTC) (edited on 2021-12-26 22:44 (UTC) by jonathon)
The DKMS package guidelines are explicit that
linux-headers
should not be a dependency of any DKMS package.As a concrete example of why including that as a hard dependency is a bad idea, what happens when
linux
is not an installed kernel?jonathon commented on 2020-10-19 12:41 (UTC) (edited on 2021-05-11 14:18 (UTC) by jonathon)
PACKAGE NEEDS LONG TERM MAINTAINER
I have adopted the 390xx packages to keep them secure. I do not run any 390xx hardware so will not notice any breakages and cannot test any changes.
Until such time as someone else steps up to maintain these packages - ideally someone who actually has 390xx hardware - I have to rely on you to tell me what changes are needed.
Don't expect a response if you post only "this doesn't work", and do not email me to complain about the package not working!
Use this forum thread for discussion: https://bbs.archlinux.org/viewtopic.php?pid=1946926
A binary package is also available in my kernel-lts unofficial user repository.