You are not logged in.

#1 2018-01-21 23:32:30

Fredo
Member
Registered: 2016-04-21
Posts: 11

nvidia-dkms: "Error! Bad return status for module build on kernel"

Hey!

I'm having a problem with self-built kernels and the nvidia-dkms package: When I'm trying to install a custom built kernel (i.e. this one from the AUR) I get an error, when dkms is trying to install the nvidia-module for the kernel.
Here's the output from pacman:

[alfred@merkur linux-ryzen-git]$ LC_ALL=C sudo pacman -U linux-ryzen-git-*
[sudo] password for alfred: 
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (3) linux-ryzen-git-4.15rc8.r251.gd517bb79f499-1
             linux-ryzen-git-docs-4.15rc8.r251.gd517bb79f499-1
             linux-ryzen-git-headers-4.15rc8.r251.gd517bb79f499-1

Total Installed Size:  207.95 MiB

:: Proceed with installation? [Y/n] 
(3/3) checking keys in keyring                     [######################] 100%
(3/3) checking package integrity                   [######################] 100%
(3/3) loading package files                        [######################] 100%
(3/3) checking for file conflicts                  [######################] 100%
(3/3) checking available disk space                [######################] 100%
:: Processing package changes...
(1/3) installing linux-ryzen-git                   [######################] 100%
>>> Updating module dependencies. Please wait ...
>>> Generating initial ramdisk, using mkinitcpio.  Please wait...
==> Building image from preset: /etc/mkinitcpio.d/linux-ryzen-git.preset: 'default'
  -> -k /boot/vmlinuz-linux-ryzen-git -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-ryzen-git.img
==> Starting build: 4.15.0-rc8-ge1915c8195b3
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-ryzen-git.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux-ryzen-git.preset: 'fallback'
  -> -k /boot/vmlinuz-linux-ryzen-git -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-ryzen-git-fallback.img -S autodetect
==> Starting build: 4.15.0-rc8-ge1915c8195b3
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-ryzen-git-fallback.img
==> Image generation successful
Optional dependencies for linux-ryzen-git
    crda: to set the correct wireless channels of your country
(2/3) installing linux-ryzen-git-docs              [######################] 100%
(3/3) installing linux-ryzen-git-headers           [######################] 100%
:: Running post-transaction hooks...
(1/2) Install DKMS modules
==> dkms install nvidia/387.34 -k 4.15.0-rc8-ge1915c8195b3
Error! Bad return status for module build on kernel: 4.15.0-rc8-ge1915c8195b3 (x86_64)
Consult /var/lib/dkms/nvidia/387.34/build/make.log for more information.
(2/2) Arming ConditionNeedsUpdate...

And here is the above mentioned /var/lib/dkms/nvidia/387.34/build/make.log: (Sorry, this seems to be partly in german, even though I've added LC_ALL=C to the original command.)

DKMS make.log for nvidia-387.34 for kernel 4.15.0-rc8-ge1915c8195b3 (x86_64)
Mon Jan 22 00:22:24 CET 2018
make[1]: Entering directory '/usr/lib/modules/4.15.0-rc8-ge1915c8195b3/build'
  SYMLINK /var/lib/dkms/nvidia/387.34/build/nvidia/nv-kernel.o
  SYMLINK /var/lib/dkms/nvidia/387.34/build/nvidia-modeset/nv-modeset-kernel.o
 CONFTEST: INIT_WORK
 CONFTEST: hash__remap_4k_pfn
 CONFTEST: remap_pfn_range
 CONFTEST: follow_pfn
 CONFTEST: vmap
 CONFTEST: set_pages_uc
 CONFTEST: set_memory_uc
 CONFTEST: set_memory_array_uc
 CONFTEST: change_page_attr
 CONFTEST: pci_get_class
 CONFTEST: pci_choose_state
 CONFTEST: vm_insert_page
 CONFTEST: acpi_device_id
 CONFTEST: acquire_console_sem
 CONFTEST: console_lock
 CONFTEST: kmem_cache_create
 CONFTEST: on_each_cpu
 CONFTEST: smp_call_function
 CONFTEST: acpi_evaluate_integer
 CONFTEST: ioremap_cache
 CONFTEST: ioremap_wc
 CONFTEST: acpi_walk_namespace
 CONFTEST: pci_domain_nr
 CONFTEST: pci_dma_mapping_error
 CONFTEST: sg_alloc_table
 CONFTEST: sg_init_table
 CONFTEST: pci_get_domain_bus_and_slot
 CONFTEST: get_num_physpages
 CONFTEST: efi_enabled
 CONFTEST: proc_create_data
 CONFTEST: pde_data
 CONFTEST: proc_remove
 CONFTEST: xen_ioemu_inject_msi
 CONFTEST: pm_vt_switch_required
 CONFTEST: phys_to_dma
 CONFTEST: get_dma_ops
 CONFTEST: write_cr4
 CONFTEST: of_get_property
 CONFTEST: of_find_node_by_phandle
 CONFTEST: of_node_to_nid
 CONFTEST: pnv_pci_get_npu_dev
 CONFTEST: for_each_online_node
 CONFTEST: node_end_pfn
 CONFTEST: pci_bus_address
 CONFTEST: pci_stop_and_remove_bus_device
 CONFTEST: pci_remove_bus_device
 CONFTEST: request_threaded_irq
 CONFTEST: register_cpu_notifier
 CONFTEST: cpuhp_setup_state
 CONFTEST: backlight_device_register
 CONFTEST: remap_page_range
 CONFTEST: address_space_init_once
 CONFTEST: kbasename
 CONFTEST: fatal_signal_pending
 CONFTEST: list_cut_position
 CONFTEST: vzalloc
 CONFTEST: wait_on_bit_lock_argument_count
 CONFTEST: bitmap_clear
 CONFTEST: usleep_range
 CONFTEST: radix_tree_empty
 CONFTEST: drm_dev_unref
 CONFTEST: drm_reinit_primary_mode_group
 CONFTEST: drm_atomic_set_mode_for_crtc
 CONFTEST: drm_atomic_clean_old_fb
 CONFTEST: get_user_pages_remote
 CONFTEST: drm_gem_object_lookup
 CONFTEST: drm_atomic_state_free
 CONFTEST: drm_driver_has_gem_prime_res_obj
 CONFTEST: drm_atomic_helper_disable_all
 CONFTEST: drm_atomic_helper_set_config
 CONFTEST: drm_atomic_helper_connector_dpms
 CONFTEST: is_export_symbol_gpl_of_node_to_nid
 CONFTEST: i2c_adapter
 CONFTEST: pm_message_t
 CONFTEST: irq_handler_t
 CONFTEST: acpi_device_ops
 CONFTEST: acpi_op_remove
 CONFTEST: outer_flush_all
 CONFTEST: proc_dir_entry
 CONFTEST: scatterlist
 CONFTEST: sg_table
 CONFTEST: file_operations
 CONFTEST: vm_operations_struct
 CONFTEST: atomic_long_type
 CONFTEST: pci_save_state
 CONFTEST: file_inode
 CONFTEST: task_struct
 CONFTEST: kuid_t
 CONFTEST: dma_ops
 CONFTEST: dma_map_ops
 CONFTEST: noncoherent_swiotlb_dma_ops
 CONFTEST: vm_fault_present
 CONFTEST: vm_fault_has_address
 CONFTEST: kernel_write
 CONFTEST: strnstr
 CONFTEST: iterate_dir
 CONFTEST: kstrtoull
 CONFTEST: backlight_properties_type
 CONFTEST: fault_flags
 CONFTEST: atomic64_type
 CONFTEST: address_space
 CONFTEST: backing_dev_info
 CONFTEST: mm_context_t
 CONFTEST: vm_ops_fault_removed_vma_arg
 CONFTEST: pnv_npu2_init_context
 CONFTEST: drm_bus_present
 CONFTEST: drm_bus_has_bus_type
 CONFTEST: drm_bus_has_get_irq
 CONFTEST: drm_bus_has_get_name
 CONFTEST: drm_driver_has_legacy_dev_list
 CONFTEST: drm_driver_has_set_busid
 CONFTEST: drm_crtc_state_has_connectors_changed
 CONFTEST: drm_init_function_args
 CONFTEST: drm_mode_connector_list_update_has_merge_type_bits_arg
 CONFTEST: drm_helper_mode_fill_fb_struct
 CONFTEST: drm_master_drop_has_from_release_arg
 CONFTEST: drm_mode_config_funcs_has_atomic_state_alloc
 CONFTEST: drm_driver_unload_has_int_return_type
 CONFTEST: kref_has_refcount_of_type_refcount_t
 CONFTEST: drm_crtc_helper_funcs_has_atomic_enable
 CONFTEST: nvidia_vgpu_kvm_build
 CONFTEST: dom0_kernel_present
 CONFTEST: nvidia_grid_build
 CONFTEST: drm_available
 CONFTEST: drm_atomic_available
 CONFTEST: drm_atomic_modeset_nonblocking_commit_available
 CONFTEST: is_export_symbol_gpl_refcount_inc
 CONFTEST: is_export_symbol_gpl_refcount_dec_and_test
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-gpu-numa.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-acpi.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-chrdev.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-cray.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-dma.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-gvi.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-i2c.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-mempool.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-mmap.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-p2p.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-pat.o
/var/lib/dkms/nvidia/387.34/build/nvidia/nv.c: In Funktion »nv_start_rc_timer«:
/var/lib/dkms/nvidia/387.34/build/nvidia/nv.c:3389:5: Fehler: Implizite Deklaration der Funktion »init_timer«; meinten Sie »init_timers«? [-Werror=implicit-function-declaration]
     init_timer(&nvl->rc_timer);
     ^~~~~~~~~~
     init_timers
/var/lib/dkms/nvidia/387.34/build/nvidia/nv.c:3390:28: Fehler: Zuweisung von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
     nvl->rc_timer.function = nvidia_rc_timer;
                            ^
/var/lib/dkms/nvidia/387.34/build/nvidia/nv.c:3391:18: Fehler: »struct timer_list« hat kein Element namens »data«
     nvl->rc_timer.data = (unsigned long) nvl;
                  ^
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-procfs.o
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-usermap.o
cc1: Einige Warnungen werden als Fehler behandelt
make[2]: *** [scripts/Makefile.build:317: /var/lib/dkms/nvidia/387.34/build/nvidia/nv.o] Fehler 1
make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet....
  CC [M]  /var/lib/dkms/nvidia/387.34/build/nvidia/nv-vm.o
make[1]: *** [Makefile:1508: _module_/var/lib/dkms/nvidia/387.34/build] Error 2
make[1]: Leaving directory '/usr/lib/modules/4.15.0-rc8-ge1915c8195b3/build'
make: *** [Makefile:84: modules] Error 2

Any hints what could be the problem?

Offline

#2 2018-01-22 00:13:32

loqs
Member
Registered: 2014-03-06
Posts: 18,960

Re: nvidia-dkms: "Error! Bad return status for module build on kernel"

The nvidia-dkms package lacks a patch for 4.15 as there are only kernels using 4.9 and 4.14 currently in the official repositories.

diff --git a/kernel/nvidia-modeset/nvidia-modeset-linux.c b/kernel/nvidia-modeset/nvidia-modeset-linux.c
index edeb152..cd0ce2b 100644
--- a/kernel/nvidia-modeset/nvidia-modeset-linux.c
+++ b/kernel/nvidia-modeset/nvidia-modeset-linux.c
@@ -21,6 +21,7 @@
 #include <linux/random.h>
 #include <linux/file.h>
 #include <linux/list.h>
+#include <linux/version.h>
 
 #include "nvstatus.h"
 
@@ -566,9 +567,17 @@ static void nvkms_queue_work(nv_kthread_q_t *q, nv_kthread_q_item_t *q_item)
     WARN_ON(!ret);
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
 static void nvkms_timer_callback(unsigned long arg)
+#else
+static void nvkms_timer_callback(struct timer_list * t)
+#endif
 {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
     struct nvkms_timer_t *timer = (struct nvkms_timer_t *) arg;
+#else
+    struct nvkms_timer_t *timer = from_timer(timer, t, kernel_timer);
+#endif
 
     /* In softirq context, so schedule nvkms_kthread_q_callback(). */
     nvkms_queue_work(&nvkms_kthread_q, &timer->nv_kthread_q_item);
@@ -606,10 +615,16 @@ nvkms_init_timer(struct nvkms_timer_t *timer, nvkms_timer_proc_t *proc,
         timer->kernel_timer_created = NV_FALSE;
         nvkms_queue_work(&nvkms_kthread_q, &timer->nv_kthread_q_item);
     } else {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
         init_timer(&timer->kernel_timer);
+#else
+        timer_setup(&timer->kernel_timer,nvkms_timer_callback,0);
+#endif
         timer->kernel_timer_created = NV_TRUE;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
         timer->kernel_timer.function = nvkms_timer_callback;
         timer->kernel_timer.data = (unsigned long) timer;
+#endif
         mod_timer(&timer->kernel_timer, jiffies + NVKMS_USECS_TO_JIFFIES(usec));
     }
     spin_unlock_irqrestore(&nvkms_timers.lock, flags);
diff --git a/kernel/nvidia/nv.c b/kernel/nvidia/nv.c
index ad5091b..a469bf9 100644
--- a/kernel/nvidia/nv.c
+++ b/kernel/nvidia/nv.c
@@ -320,7 +320,11 @@ static irqreturn_t   nvidia_isr             (int, void *, struct pt_regs *);
 #else
 static irqreturn_t   nvidia_isr             (int, void *);
 #endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
 static void          nvidia_rc_timer        (unsigned long);
+#else
+static void          nvidia_rc_timer        (struct timer_list *);
+#endif
 
 static int           nvidia_ctl_open        (struct inode *, struct file *);
 static int           nvidia_ctl_close       (struct inode *, struct file *);
@@ -2472,10 +2476,18 @@ nvidia_isr_bh_unlocked(
 
 static void
 nvidia_rc_timer(
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
     unsigned long data
+#else
+    struct timer_list * t
+#endif
 )
 {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
     nv_linux_state_t *nvl = (nv_linux_state_t *) data;
+#else
+    nv_linux_state_t *nvl = from_timer(nvl, t, rc_timer);
+#endif
     nv_state_t *nv = NV_STATE_PTR(nvl);
     nvidia_stack_t *sp = nvl->sp[NV_DEV_STACK_TIMER];
 
@@ -3386,9 +3398,13 @@ int NV_API_CALL nv_start_rc_timer(
         return -1;
 
     nv_printf(NV_DBG_INFO, "NVRM: initializing rc timer\n");
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
     init_timer(&nvl->rc_timer);
     nvl->rc_timer.function = nvidia_rc_timer;
     nvl->rc_timer.data = (unsigned long) nvl;
+#else
+    timer_setup(&nvl->rc_timer,nvidia_rc_timer,0);
+#endif
     nv->rc_timer_enabled = 1;
     mod_timer(&nvl->rc_timer, jiffies + HZ); /* set our timeout for 1 second */
     nv_printf(NV_DBG_INFO, "NVRM: rc timer initialized\n");

Offline

#3 2018-01-23 11:27:32

Fredo
Member
Registered: 2016-04-21
Posts: 11

Re: nvidia-dkms: "Error! Bad return status for module build on kernel"

Hey loqs!

Thanks for your answer! smile Hm, ok. That's what I expected. Is nvidia-dkms always incompatible with kernel-versions newer than the ones in the repositories or is this an exception?
I dind't test your patch, instead I recompiled kernel 4.14 from the official repositories with my own config. nvidia-dkms worked smoothly.

Last edited by Fredo (2018-01-23 15:52:21)

Offline

#4 2018-01-23 11:52:09

loqs
Member
Registered: 2014-03-06
Posts: 18,960

Re: nvidia-dkms: "Error! Bad return status for module build on kernel"

Depends if there is an incompatible change in that particular release it varies.

Offline

#5 2018-01-23 15:58:21

Fredo
Member
Registered: 2016-04-21
Posts: 11

Re: nvidia-dkms: "Error! Bad return status for module build on kernel"

Maybe it should be mentioned in the wiki-article that nvidia-dkms is only guaranteed to work with the kernel-version of the official package from the repositories and that other/newer versions might break it.

Offline

Board footer

Powered by FluxBB