Package Base Details: nvidia-390xx-utils

Git Clone URL: https://aur.archlinux.org/nvidia-390xx-utils.git (read-only, click to copy)
Submitter: svenstaro
Maintainer: jonathon (vnctdj)
Last Packager: vnctdj
Votes: 55
Popularity: 0.064792
First Submitted: 2020-03-11 17:29 (UTC)
Last Updated: 2024-03-07 22:55 (UTC)

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.

Latest Comments

« First ‹ Previous 1 2 3 4 5 6 7 8 9 .. 20 Next › Last »

OpusOne commented on 2023-09-12 03:30 (UTC)

@canolucas, thanks for the link. I use this driver on a T420s (hybrid graphics), I have tried 'nouveau' instead, but it gives me too many problems for this particular hardware.

canolucas commented on 2023-09-12 03:07 (UTC) (edited on 2023-09-12 03:12 (UTC) by canolucas)

Please use a pastebin to post your long output and logs. @vnctdj the package needs updating. A solution has been provided here: https://bbs.archlinux.org/viewtopic.php?pid=2118974#p2118974

Thank you very much for your help so far.

MartinDiehl commented on 2023-09-11 15:43 (UTC) (edited on 2023-09-11 15:45 (UTC) by MartinDiehl)

For me (Kernel 6.5.2-arch1-1, 390.157-5), the install of the DKMS modules fails

it seems that the errors are related to -Werror=incompatible-pointer-types, log is below

DKMS make.log for nvidia-390.157 for kernel 6.5.2-arch1-1 (x86_64)
Mon 11 Sep 2023 17:40:14 CEST
make[1]: Entering directory '/usr/lib/modules/6.5.2-arch1-1/build'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: gcc (GCC) 13.2.1 20230801
  You are using:           cc (GCC) 13.2.1 20230801
  SYMLINK /var/lib/dkms/nvidia/390.157/build/nvidia/nv-kernel.o
  SYMLINK /var/lib/dkms/nvidia/390.157/build/nvidia-modeset/nv-modeset-kernel.o
 CONFTEST: INIT_WORK
 CONFTEST: remap_pfn_range
 CONFTEST: hash__remap_4k_pfn
 CONFTEST: follow_pfn
 CONFTEST: set_pages_uc
 CONFTEST: vmap
 CONFTEST: list_is_first
 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: 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: PDE_DATA
 CONFTEST: proc_remove
 CONFTEST: pm_vt_switch_required
 CONFTEST: xen_ioemu_inject_msi
 CONFTEST: phys_to_dma
 CONFTEST: get_dma_ops
 CONFTEST: write_cr4
 CONFTEST: of_get_property
 CONFTEST: of_find_node_by_phandle
 CONFTEST: pnv_pci_get_npu_dev
 CONFTEST: of_node_to_nid
 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: dma_map_resource
 CONFTEST: backlight_device_register
 CONFTEST: register_acpi_notifier
 CONFTEST: timer_setup
 CONFTEST: kmem_cache_create_usercopy
 CONFTEST: do_gettimeofday
 CONFTEST: dma_direct_map_resource
 CONFTEST: vmf_insert_pfn
 CONFTEST: jiffies_to_timespec
 CONFTEST: ktime_get_raw_ts64
 CONFTEST: ktime_get_real_ts64
 CONFTEST: ioremap_nocache
 CONFTEST: vga_tryget
 CONFTEST: unsafe_follow_pfn
 CONFTEST: acpi_bus_get_device
 CONFTEST: acpi_video_backlight_use_native
 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: radix_tree_replace_slot
 CONFTEST: drm_dev_unref
 CONFTEST: drm_reinit_primary_mode_group
 CONFTEST: get_user_pages_remote
 CONFTEST: get_user_pages
 CONFTEST: drm_gem_object_lookup
 CONFTEST: drm_atomic_state_ref_counting
 CONFTEST: drm_driver_has_gem_prime_res_obj
 CONFTEST: drm_atomic_helper_connector_dpms
 CONFTEST: drm_connector_funcs_have_mode_in_name
 CONFTEST: drm_framebuffer_get
 CONFTEST: drm_gem_object_get
 CONFTEST: drm_dev_put
 CONFTEST: drm_connector_for_each_possible_encoder
 CONFTEST: drm_gem_object_put_unlocked
 CONFTEST: is_export_symbol_gpl_of_node_to_nid
 CONFTEST: is_export_symbol_present_swiotlb_map_sg_attrs
 CONFTEST: is_export_symbol_present_swiotlb_dma_ops
 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: swiotlb_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: proc_ops
 CONFTEST: timeval
 CONFTEST: mm_has_mmap_lock
 CONFTEST: kmem_cache_has_kobj_remove_work
 CONFTEST: sysfs_slab_unlink
 CONFTEST: vmalloc_has_pgprot_t_arg
 CONFTEST: pci_dev_has_skip_bus_pm
 CONFTEST: pci_channel_state
 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: vm_fault_t
 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_device_list
 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_driver_unload_has_int_return_type
 CONFTEST: kref_has_refcount_of_type_refcount_t
 CONFTEST: drm_atomic_helper_crtc_destroy_state_has_crtc_arg
 CONFTEST: drm_mode_object_find_has_file_priv_arg
 CONFTEST: drm_connector_list_iter
 CONFTEST: drm_atomic_helper_swap_state_has_stall_arg
 CONFTEST: drm_driver_prime_flag_present
 CONFTEST: drm_gem_prime_export_has_dev_arg
 CONFTEST: drm_gem_object_has_resv
 CONFTEST: drm_display_mode_has_vrefresh
 CONFTEST: drm_driver_master_set_has_int_return_type
 CONFTEST: drm_driver_has_gem_free_object
 CONFTEST: drm_prime_pages_to_sg_has_drm_device_arg
 CONFTEST: drm_driver_has_gem_prime_callbacks
 CONFTEST: drm_crtc_atomic_check_has_atomic_state_arg
 CONFTEST: drm_gem_object_vmap_has_map_arg
 CONFTEST: drm_plane_atomic_check_has_atomic_state_arg
 CONFTEST: drm_device_has_pdev
 CONFTEST: dma_resv_add_fence
 CONFTEST: dma_resv_reserve_fences
 CONFTEST: reservation_object_reserve_shared_has_num_fences_arg
 CONFTEST: dom0_kernel_present
 CONFTEST: nvidia_vgpu_kvm_build
 CONFTEST: nvidia_grid_build
 CONFTEST: drm_available
 CONFTEST: drm_atomic_available
 CONFTEST: is_export_symbol_gpl_refcount_inc
 CONFTEST: is_export_symbol_gpl_refcount_dec_and_test
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-frontend.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-instance.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gpu-numa.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-acpi.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-chrdev.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-cray.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-dma.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gvi.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-i2c.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mempool.o
  CC [M]  /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.o
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gpu-numa.c:24:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-acpi.c:16:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-instance.c:13:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-frontend.c:13:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gvi.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-chrdev.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv.c:13:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-cray.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-i2c.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-dma.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:21,
                 from /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mempool.c:15:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h: In function ‘NV_GET_USER_PAGES_REMOTE’:
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:45: error: passing argument 1 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                             ^~~
      |                                             |
      |                                             struct task_struct *
In file included from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-pgprot.h:17,
                 from /var/lib/dkms/nvidia/390.157/build/common/inc/nv-linux.h:20:
./include/linux/mm.h:2397:46: note: expected ‘struct mm_struct *’ but argument is of type ‘struct task_struct *’
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |                            ~~~~~~~~~~~~~~~~~~^~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:50: warning: passing argument 2 of ‘get_user_pages_remote’ makes integer from pointer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                  ^~
      |                                                  |
      |                                                  struct mm_struct *
./include/linux/mm.h:2398:42: note: expected ‘long unsigned int’ but argument is of type ‘struct mm_struct *’
 2398 |                            unsigned long start, unsigned long nr_pages,
      |                            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:71: warning: passing argument 5 of ‘get_user_pages_remote’ makes pointer from integer without a cast [-Wint-conversion]
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                                                                       ^~~~~
      |                                                                       |
      |                                                                       unsigned int
./include/linux/mm.h:2399:66: note: expected ‘struct page **’ but argument is of type ‘unsigned int’
 2399 |                            unsigned int gup_flags, struct page **pages,
      |                                                    ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:165:45: error: passing argument 6 of ‘get_user_pages_remote’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  165 |                                             pages, vmas);
      |                                             ^~~~~
      |                                             |
      |                                             struct page **
./include/linux/mm.h:2400:33: note: expected ‘int *’ but argument is of type ‘struct page **’
 2400 |                            int *locked);
      |                            ~~~~~^~~~~~
/var/lib/dkms/nvidia/390.157/build/common/inc/nv-mm.h:164:23: error: too many arguments to function ‘get_user_pages_remote’
  164 |                return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
      |                       ^~~~~~~~~~~~~~~~~~~~~
./include/linux/mm.h:2397:6: note: declared here
 2397 | long get_user_pages_remote(struct mm_struct *mm,
      |      ^~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-gpu-numa.c: In function ‘gather_memblock_ids_for_node’:
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-gpu-numa.c:232:47: warning: cast between incompatible function types from ‘int (*)(struct dir_context *, const char *, int,  loff_t,  u64,  unsigned int)’ {aka ‘int (*)(struct dir_context *, const char *, int,  long long int,  long long unsigned int,  unsigned int)’} to ‘bool (*)(struct dir_context *, const char *, int,  loff_t,  u64,  unsigned int)’ {aka ‘_Bool (*)(struct dir_context *, const char *, int,  long long int,  long long unsigned int,  unsigned int)’} [-Wcast-function-type]
  232 |     nv_dir_context_t ats_ctx = { .ctx.actor = (filldir_t)filldir_get_memblock_id };
      |                                               ^
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-acpi.c: In function ‘nv_acpi_methods_uninit’:
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-acpi.c:687:25: warning: unused variable ‘device’ [-Wunused-variable]
  687 |     struct acpi_device *device = NULL;
      |                         ^~~~~~
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gpu-numa.o] Error 1
make[3]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-instance.o] Error 1
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-gvi.o] Error 1
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-chrdev.o] Error 1
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-cray.o] Error 1
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-frontend.o] Error 1
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-acpi.o] Error 1
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-i2c.o] Error 1
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.c: In function ‘nv_encode_caching’:
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.c:262:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
  262 |             if (NV_ALLOW_CACHING(memory_type))
      |                ^
/var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.c:264:9: note: here
  264 |         default:
      |         ^~~~~~~
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mempool.o] Error 1
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-mmap.o] Error 1
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv-dma.o] Error 1
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/nvidia/390.157/build/nvidia/nv.o] Error 1
make[2]: *** [/usr/lib/modules/6.5.2-arch1-1/build/Makefile:2032: /var/lib/dkms/nvidia/390.157/build] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/lib/modules/6.5.2-arch1-1/build'
make: *** [Makefile:81: modules] Error 2

OpusOne commented on 2023-09-10 21:43 (UTC)

The module fails to build with the latest kernel 6.5.2.

drankinatty commented on 2023-09-10 04:35 (UTC) (edited on 2023-09-10 05:19 (UTC) by drankinatty)

Great! I thought I included everything from the ubuntu patch, but maybe not. I'm about to pull the upgrade and I'll test with yours.

The gitlab herecura patch worked fine. I'll have to go line-by-line and see what I missed. I pulled from the same ubuntu(debian) patch, so they should be the same. Thank you for providing the link and for your feedback.

Looking at your make.log, it appears the error is thrown from code that wasn't updated by the patch -- that tells me that one of the conditions I included did not direct the build-path through the needed changes (or the garbage collection was needed -- probably so). The incompatible pointer issues are a good indication of that. That is why I included UNTESTED with the patch - I didn't have a way to test at the time. Thank you again.

canolucas commented on 2023-09-02 19:35 (UTC) (edited on 2023-09-03 00:13 (UTC) by canolucas)

Maybe this patch works for you. https://paste.opensuse.org/pastes/c4d14a243326 I will be able to test it when I get access to the old notebook.

UPDATE: finally got access to the hardware. Its tested and working fine with the latest kernel (6.5.1). herecura repo has already been updated, here is the link: https://gitlab.com/herecura/packages/nvidia-390xx-dkms

You can use it by adding to your /etc/pacman.conf the following lines: [herecura] Server = https://repo.herecura.eu/herecura/x86_64

Thanks drankinatty for the ubuntu debdiff.

canolucas commented on 2023-09-02 17:10 (UTC) (edited on 2023-09-02 18:26 (UTC) by canolucas)

drankinatty tested the patch, but i get: ( 8/13) Install DKMS modules ==> dkms install --no-depmod nvidia/390.157 -k 6.5.1-arch1-1 Error! Bad return status for module build on kernel: 6.5.1-arch1-1 (x86_64) Consult /var/lib/dkms/nvidia/390.157/build/make.log for more information.

Here is the make.log https://paste.opensuse.org/pastes/a6e2150eb05c

in the ubuntu link i see two patches, maybe we need to include the changes of first one as well: garbage-collect-all-references-to-get_user.patch looks like it will delete some function NV_GET_USER_PAGES_REMOTE that causes the error.

https://launchpadlibrarian.net/678000161/nvidia-graphics-drivers-390_390.157-0ubuntu8.debdiff

drankinatty commented on 2023-08-30 04:40 (UTC) (edited on 2023-08-30 04:42 (UTC) by drankinatty)

NOTE: UNTESTED in dkms build, but I've prepared the patch based on https://launchpadlibrarian.net/678000161/nvidia-graphics-drivers-390_390.157-0ubuntu8.debdiff Actually, I have prepared two-versions, one with full whitespace correction (fixes tab/space variance in e-mailed copy of original patch) in kernel-6.5-full.patch and a second version correcting only the substantive additions/subtractions in kernel-6.5.patch. They were prepared with diff -uNr and -uNrb respectively. I have posted to paste.opensuse.org in:

kernel-6.5-full.patch https://paste.opensuse.org/d0d50cf18970

kernel-6.5.patch https://paste.opensuse.org/813b3de8c255

Links expire Tue 26 Sep 2023 11:36:12 PM CDT

Just add to the PKGBUILD prepare() section after the kernel-6.4.patch and you will call patch with:

patch -Np1 -i ../../kernel-6.5.patch

drankinatty commented on 2023-08-30 02:12 (UTC)

linux-6.5 is in core-testing. Anybody know if a patch will be required? It appears so. Ubuntu has the following: https://launchpadlibrarian.net/678000161/nvidia-graphics-drivers-390_390.157-0ubuntu8.debdiff We will give it a try when 6.5 is released. If anybody attempts with the kernel in core-testing, please report whether it works.

sfranchi commented on 2023-07-07 19:53 (UTC)

Thanks everyone for the help and especially @loup, @duht, @rdahlgre and @drankinatty. The patched package now works fine on my W520