for the lazy people who cant wait (like me), I've updated the repo with the mentioned patch from the comments and pushed it to a temp branch on https://gitlab.com/taz007/nvidia-340xx . Tested the dkms package on 5.13.4 kernel, sddm is working.
Search Criteria
Package Details: nvidia-340xx 340.108-37
Package Actions
Git Clone URL: | https://aur.archlinux.org/nvidia-340xx.git (read-only, click to copy) |
---|---|
Package Base: | nvidia-340xx |
Description: | NVIDIA drivers for linux, 340xx legacy branch |
Upstream URL: | https://www.nvidia.com/ |
Licenses: | custom |
Conflicts: | nvidia |
Submitter: | simonsmh |
Maintainer: | JerryXiao |
Last Packager: | JerryXiao |
Votes: | 72 |
Popularity: | 0.72 |
First Submitted: | 2019-06-07 10:29 (UTC) |
Last Updated: | 2024-05-10 16:52 (UTC) |
Dependencies (6)
- libgl (nvidia-340xx-utilsAUR, libglvnd-gitAUR, amdgpu-pro-oglpAUR, amdgpu-pro-oglp-legacyAUR, libglvnd)
- linux
- nvidia-340xx-utilsAUR
- linux (make)
- linux-headers (make)
- nvidia-340xx-utilsAUR (make)
Required by (5)
- bumblebee-forceunload (optional)
- bumblebee-git (optional)
- bumblebee-picasso-git (optional)
- nvfancontrol (optional)
- nvfancontrol-git (optional)
Sources (19)
- 0001-kernel-5.7.patch
- 0002-kernel-5.8.patch
- 0003-kernel-5.9.patch
- 0004-kernel-5.10.patch
- 0005-kernel-5.11.patch
- 0006-kernel-5.14.patch
- 0007-kernel-5.15.patch
- 0008-kernel-5.16.patch
- 0009-kernel-5.17.patch
- 0010-kernel-5.18.patch
- 0011-kernel-6.0.patch
- 0012-kernel-6.2.patch
- 0013-kernel-6.3.patch
- 0014-kernel-6.5.patch
- 0015-kernel-6.6.patch
- 0016-kernel-6.8.patch
- 0017-gcc-14.patch
- 20-nvidia.conf
- https://us.download.nvidia.com/XFree86/Linux-x86_64/340.108/NVIDIA-Linux-x86_64-340.108-no-compat32.run
Latest Comments
« First ‹ Previous 1 .. 18 19 20 21 22 23 24 25 26 27 28 .. 58 Next › Last »
taz-007 commented on 2021-07-24 10:08 (UTC)
NSLW commented on 2021-07-18 19:26 (UTC)
@piquer Please look at the official repo at https://github.com/rpmfusion/nvidia-340xx-kmod and particulary at https://github.com/rpmfusion/nvidia-340xx-kmod/blob/master/kernel-5.11.patch The maintainer of this repo decided to reformat my two patches into a single patch, but other than that it should be the same content. The patch is already merged and public to all Fedora users, so it works.
alou-S commented on 2021-07-18 10:18 (UTC)
Okay the patch from the particular nuked commit you gave worked perfectly. Somebody needs to update the AUR package now.
piquer commented on 2021-07-18 07:49 (UTC)
There seems to have been a force push on https://github.com/wojnilowicz/nvidia-340xx-kmod master a couple of days after I pulled it. I'm using
commit 621934ffcc439c9873e2ebe8acda7ad440813981 (HEAD -> master)
Author: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
Date: Mon May 24 21:00:11 2021 +0200
Initialize nvidia-drm on kernel-5.11
Makes /dev/dri/card0 appear again and enables sddm to show greeter.
which is the file posted below, except editing the diff headers as mentioned in https://aur.archlinux.org/pkgbase/nvidia-340xx/?O=10&PP=10#comment-809967.
The current head of master is
commit 148afb60f2bc4850b50cb8c2cc9455885dff1ac9 (origin/master, origin/HEAD)
Author: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
Date: Mon May 24 21:00:11 2021 +0200
Initialize nvidia-drm on kernel-5.11
Makes /dev/dri/card0 appear again and enables sddm to show greeter.
Code in import-files-from-390.143.patch and conftest.Kbuild comes from
NVIDIA-Linux-x86_64-390.143.run.
About this change one would have to ask Łukasz I guess.
└─> git --no-pager diff --stat 148afb6 621934f 129 <
import-files-from-390.143.patch | 7221 --------------------------------------------------------------------------------------------------------------------------------------------------------------------
kernel-5.11.patch | 1490 +++-------------------------------
nvidia-340xx-kmod.spec | 11 +-
3 files changed, 122 insertions(+), 8600 deletions(-)
alou-S commented on 2021-07-18 05:58 (UTC)
@piquer The patch you have mentioned is different from the one found in https://github.com/wojnilowicz/nvidia-340xx-kmod
I also checked the original repo by rpmfusion but even that is not similar to the patch you used.
Is it possible for you to give the source you got yours from or just give your particular patch since the one on rpmfusion doesn't work neither does the fork by wojnilowicz.
piquer commented on 2021-07-17 14:47 (UTC) (edited on 2021-07-17 14:49 (UTC) by piquer)
No, I didn't see rejected hunks. For reference, I used this patch as 0005-kernel-5.11.patch
:
diff -Naur ./a/kernel/conftest.sh ./b/kernel/conftest.sh
--- NVIDIA-Linux-x86_64-340.108-old/kernel/conftest.sh 2021-05-24 20:08:18.743742335 +0200
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/conftest.sh 2021-05-24 20:13:18.019314390 +0200
@@ -1578,21 +1578,21 @@
#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;
- drv.gem_prime_pin = 0;
- drv.gem_prime_get_sg_table = 0;
- drv.gem_prime_vmap = 0;
- drv.gem_prime_vunmap = 0;
- (void)drm_gem_prime_import;
- (void)drm_gem_prime_export;
+
+ /* 2013-10-02 1bb72532ac260a2d3982b40bdd4c936d779d0d16 */
+ (void)drm_dev_alloc;
+
+ /* 2013-10-02 c22f0ace1926da399d9a16dfaf09174c1b03594c */
+ (void)drm_dev_register;
+
+ /* 2013-10-02 c3a49737ef7db0bdd4fcf6cf0b7140a883e32b2a */
+ (void)drm_dev_unregister;
}"
compile_check_conftest "$CODE" "NV_DRM_AVAILABLE" "" "generic"
diff -Naur ./a/kernel/nv-drm.c ./b/kernel/nv-drm.c
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c 2021-05-24 20:08:18.779739237 +0200
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2021-05-24 20:42:13.443288819 +0200
@@ -60,6 +60,8 @@
#else
#include <drm/drm_agpsupport.h>
+#include "linux/dma-buf.h"
+
struct nv_drm_agp_head {
struct agp_kern_info agp_info;
struct list_head memory;
@@ -210,8 +212,10 @@
/* No locking needed since shadow-attach is single-threaded since it may
* only be called from the per-driver module init hook. */
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
if (drm_core_check_feature(dev, DRIVER_LEGACY))
list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);
+#endif
return 0;
@@ -239,8 +243,10 @@
if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY)))
return -EINVAL;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
/* If not using KMS, fall back to stealth mode manual scanning. */
INIT_LIST_HEAD(&driver->legacy_dev_list);
+#endif
for (i = 0; pdriver->id_table[i].vendor != 0; i++) {
pid = &pdriver->id_table[i];
@@ -273,11 +279,13 @@
if (!(driver->driver_features & DRIVER_LEGACY)) {
WARN_ON(1);
} else {
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
legacy_dev_list) {
list_del(&dev->legacy_dev_list);
drm_put_dev(dev);
}
+#endif
}
DRM_INFO("Module unloaded\n");
}
@@ -402,6 +410,39 @@
.llseek = noop_llseek,
};
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
+struct sg_table *nv_drm_gem_prime_get_sg_table(struct drm_gem_object *gem)
+{
+ return nv_gem_prime_get_sg_table(gem);
+}
+
+static int nv_drm_gem_vmap(struct drm_gem_object *gem,
+ struct dma_buf_map *map)
+{
+ map->vaddr = nv_gem_prime_vmap(gem);
+ if (map->vaddr == NULL) {
+ return -ENOMEM;
+ }
+ map->is_iomem = true;
+ return 0;
+}
+
+static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
+ struct dma_buf_map *map)
+{
+ nv_gem_prime_vunmap(gem, map->vaddr);
+ map->vaddr = NULL;
+}
+
+static struct drm_gem_object_funcs nv_drm_gem_object_funcs = {
+ .free = nv_gem_free,
+ .export = drm_gem_prime_export,
+ .get_sg_table = nv_drm_gem_prime_get_sg_table,
+ .vmap = nv_drm_gem_vmap,
+ .vunmap = nv_drm_gem_vunmap,
+};
+#endif
+
static struct drm_driver nv_drm_driver = {
.driver_features = DRIVER_GEM
@@ -420,17 +461,19 @@
.set_busid = drm_pci_set_busid,
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
- .gem_free_object_unlocked = nv_gem_free,
-#else
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 8, 0)
.gem_free_object = nv_gem_free,
+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
+ .gem_free_object_unlocked = nv_gem_free,
#endif
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
.gem_prime_export = drm_gem_prime_export,
.gem_prime_get_sg_table = nv_gem_prime_get_sg_table,
.gem_prime_vmap = nv_gem_prime_vmap,
.gem_prime_vunmap = nv_gem_prime_vunmap,
+#endif
.name = "nvidia-drm",
.desc = "NVIDIA DRM driver",
diff -Naur ./a/kernel/nv-linux.h ./b/kernel/nv-linux.h
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h 2021-05-24 20:08:18.775739581 +0200
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h 2021-05-24 20:09:18.748287771 +0200
@@ -119,7 +119,9 @@
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
#include <linux/cpu.h> /* CPU hotplug support */
#endif
-#include <asm/kmap_types.h> /* page table entry lookup */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
+ #include <asm/kmap_types.h> /* page table entry lookup */
+#endif
#include <linux/pci.h> /* pci_find_class, etc */
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
diff -Naur ./a/kernel/uvm/nvidia_uvm_linux.h ./b/kernel/uvm/nvidia_uvm_linux.h
--- NVIDIA-Linux-x86_64-340.108-old/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:08:18.775739581 +0200
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:09:18.749287739 +0200
@@ -141,7 +141,9 @@
#if !defined(NV_VMWARE)
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
#endif
-#include <asm/kmap_types.h> /* page table entry lookup */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
+ #include <asm/kmap_types.h> /* page table entry lookup */
+#endif
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
#include <linux/timer.h>
graysky commented on 2021-07-16 17:19 (UTC)
I don't have the hardware nor extra time for this anymore. Someone else can step up to bat.
alou-S commented on 2021-07-16 15:21 (UTC) (edited on 2021-07-16 15:51 (UTC) by alou-S)
@piquer @NSLW Did you get any errors during the build?
During patching I get the following error:
Hunk #3 FAILED at 139.
1 out of 9 hunks FAILED -- saving rejects to file kernel/nv-drm.c.rej
Ignoring the error and further continuing ends up with it erroring while building the kernel module.
johnstef commented on 2021-06-20 03:57 (UTC) (edited on 2021-06-21 13:33 (UTC) by johnstef)
I am trying to run a program and I get this
Check failed: gl_version_string. The GL proc resolver's glGetString(GL_VERSION) failed
But if I switch to nouveau
driver the program runs just fine. So I has to be this driver that causing the problem.. Any idea?
Pinned Comments
JerryXiao commented on 2022-10-13 03:51 (UTC) (edited on 2022-10-14 02:44 (UTC) by JerryXiao)
For testing users, contributors: check out https://github.com/archlinux-jerry/nvidia-340xx
Warning: force push may happen to match the aur tree