Package Base Details: nvidia-340xx

Git Clone URL: https://aur.archlinux.org/nvidia-340xx.git (read-only, click to copy)
Submitter: simonsmh
Maintainer: JerryXiao
Last Packager: JerryXiao
Votes: 70
Popularity: 0.22
First Submitted: 2019-06-07 10:29 (UTC)
Last Updated: 2024-03-17 06:41 (UTC)

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

Latest Comments

« First ‹ Previous 1 .. 16 17 18 19 20 21 22 23 24 25 26 .. 55 Next › Last »

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?

JerryXiao commented on 2021-06-17 01:23 (UTC)

It's sad that the simplest and cleanest solution is written out there and nobody listens.

AlexJ commented on 2021-06-16 20:12 (UTC)

@tioguda OK. I have removed 2 of my comments and I have found a solution.

MANJARO error: " ==> Starting build()... NVIDIA: calling KBUILD... make[1]: Entering directory '/usr/src/linux' make[1]: No rule to make target 'modules'. Stop. make[1]: Leaving directory '/usr/src/linux' NVIDIA: left KBUILD. nvidia.ko failed to build! make: [Makefile:202: nvidia.ko] Error 1 ==> ERROR: A failure occurred in build(). Aborting... "

FIX: "cd /lib/modules/$(uname -r)/build/ | echo $(uname -r) | sudo tee version > /dev/null | sudo ln -s /lib/modules/$(uname -r)/build /usr/src/linux"