Nouveau源码分析(一):从module_init开始

本文是Nouveau源码分析的第一部分,主要关注module_init过程。文章详细介绍了nouveau_drm_init的执行流程,包括nouveau_modset、nouveau_register_dsm_handler和关键的drm_pci_init接口。通过drm_pci_init,Nouveau驱动得以注册,并能匹配和管理PCI中的Nvidia设备。后续章节将深入探讨Nouveau对特定Nvidia设备的初始化步骤。

Nouveau源码分析(一)


// /drivers/gpu/drm/nouveau/nouveau_drm.c
1089 module_init(nouveau_drm_init);
1090 module_exit(nouveau_drm_exit);

相信只要看过linux源码的都会知道这意味着什么,Nouveau被加载后第一个执行的函数和Nouveau被卸载前最后一个执行的函数.

显然,我们需要查看nouveau_drm_init

// /drivers/gpu/drm/nouveau/nouveau_drm.c
1062 static int __init
1063 nouveau_drm_init(void)
1064 {
1065         if (nouveau_modeset == -1) {
1066 #ifdef CONFIG_VGA_CONSOLE
1067                 if (vgacon_text_force())
1068                         nouveau_modeset = 0;
1069 #endif
1070         }
1071 
1072         if (!nouveau_modeset)
1073                 return 0;
1074 
1075         nouveau_register_dsm_handler();
1076         return drm_pci_init(&driver, &nouveau_drm_pci_driver);
1077 }

1065行,nouveau_modset,这是什么东西? 虽然我们完全可以跳过这段代码不看,但还是多了解一下吧.


                
还是报错, nvidia-installer log file '/var/log/nvidia-installer.log' creation time: Mon Nov 10 13:26:24 2025 installer version: 560.35.03 PATH: /root/.local/bin:/root/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin nvidia-installer command line: ./nvidia-installer --no-opengl-files Using: nvidia-installer ncurses v6 user interface -> Detected 48 CPUs online; setting concurrency level to 32. -> Scanning the initramfs with lsinitrd... -> /usr/bin/lsinitrd requires a file path argument, but none was given. -> Executing: /usr/bin/lsinitrd /boot/initramfs-5.14.0-570.12.1.el9_6.x86_64.img -> Nouveau detected in initramfs -> Initramfs scan complete. -> Multiple kernel module types are available for this system. Which would you like to use? (Answer: NVIDIA Proprietary) -> Installing NVIDIA driver version 560.35.03. -> Performing CC sanity check with CC="/usr/bin/cc". -> Performing CC check. -> Kernel source path: '/lib/modules/5.14.0-570.12.1.el9_6.x86_64/source' -> Kernel output path: '/lib/modules/5.14.0-570.12.1.el9_6.x86_64/build' -> Performing Compiler check. -> Performing Dom0 check. -> Performing Xen check. -> Performing PREEMPT_RT check. -> Performing vgpu_kvm check. -> Cleaning kernel module build directory. executing: 'cd kernel; /usr/bin/make -k -j32 NV_EXCLUDE_KERNEL_MODULES="" SYSSRC="/lib/modules/5.14.0-570.12.1.el9_6.x86_64/source" SYSOUT="/lib/modules/5.14.0-570.12.1.el9_6.x86_64/build" clean'... rm -f -r conftest make[1]: Entering directory '/usr/src/kernels/5.14.0-570.12.1.el9_6.x86_64' make[1]: Leaving directory '/usr/src/kernels/5.14.0-570.12.1.el9_6.x86_64' -> Building kernel modules executing: 'cd kernel; /usr/bin/make -k -j32 NV_EXCLUDE_KERNEL_MODULES="" SYSSRC="/lib/modules/5.14.0-570.12.1.el9_6.x86_64/source" SYSOUT="/lib/modules/5.14.0-570.12.1.el9_6.x86_64/build" '... make[1]: Entering directory '/usr/src/kernels/5.14.0-570.12.1.el9_6.x86_64' SYMLINK /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-kernel.o SYMLINK /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nv-modeset-kernel.o CONFTEST: hash__remap_4k_pfn CONFTEST: set_pages_uc CONFTEST: list_is_first CONFTEST: set_memory_uc CONFTEST: set_memory_array_uc CONFTEST: set_pages_array_uc CONFTEST: ioremap_cache CONFTEST: ioremap_wc CONFTEST: ioremap_driver_hardened CONFTEST: ioremap_driver_hardened_wc CONFTEST: ioremap_cache_shared CONFTEST: pci_get_domain_bus_and_slot CONFTEST: get_num_physpages CONFTEST: pde_data CONFTEST: xen_ioemu_inject_msi CONFTEST: phys_to_dma CONFTEST: get_dma_ops CONFTEST: dma_attr_macros CONFTEST: dma_map_page_attrs CONFTEST: write_cr4 CONFTEST: of_find_node_by_phandle CONFTEST: of_node_to_nid CONFTEST: pnv_pci_get_npu_dev CONFTEST: of_get_ibm_chip_id CONFTEST: pci_bus_address CONFTEST: pci_stop_and_remove_bus_device CONFTEST: pci_rebar_get_possible_sizes CONFTEST: wait_for_random_bytes CONFTEST: register_cpu_notifier CONFTEST: cpuhp_setup_state CONFTEST: dma_map_resource CONFTEST: get_backlight_device_by_name CONFTEST: timer_setup CONFTEST: pci_enable_msix_range CONFTEST: kernel_read_has_pointer_pos_arg CONFTEST: kernel_write_has_pointer_pos_arg CONFTEST: dma_direct_map_resource CONFTEST: tegra_get_platform CONFTEST: tegra_bpmp_send_receive CONFTEST: flush_cache_all CONFTEST: vmf_insert_pfn CONFTEST: jiffies_to_timespec CONFTEST: ktime_get_raw_ts64 CONFTEST: ktime_get_real_ts64 CONFTEST: full_name_hash CONFTEST: pci_enable_atomic_ops_to_root CONFTEST: vga_tryget CONFTEST: cc_platform_has CONFTEST: seq_read_iter CONFTEST: follow_pfn CONFTEST: drm_gem_object_get CONFTEST: drm_gem_object_put_unlocked CONFTEST: add_memory_driver_managed CONFTEST: device_property_read_u64 CONFTEST: devm_of_platform_populate CONFTEST: of_dma_configure CONFTEST: of_property_count_elems_of_size CONFTEST: of_property_read_variable_u8_array CONFTEST: of_property_read_variable_u32_array CONFTEST: i2c_new_client_device CONFTEST: i2c_unregister_device CONFTEST: of_get_named_gpio CONFTEST: devm_gpio_request_one CONFTEST: gpio_direction_input CONFTEST: gpio_direction_output CONFTEST: gpio_get_value CONFTEST: gpio_set_value CONFTEST: gpio_to_irq CONFTEST: icc_get CONFTEST: icc_put CONFTEST: icc_set_bw CONFTEST: dma_buf_export_args CONFTEST: dma_buf_ops_has_kmap CONFTEST: dma_buf_ops_has_kmap_atomic CONFTEST: dma_buf_ops_has_map CONFTEST: dma_buf_ops_has_map_atomic CONFTEST: dma_buf_has_dynamic_attachment CONFTEST: dma_buf_attachment_has_peer2peer CONFTEST: dma_set_mask_and_coherent CONFTEST: devm_clk_bulk_get_all CONFTEST: get_task_ioprio CONFTEST: mdev_set_iommu_device CONFTEST: offline_and_remove_memory CONFTEST: stack_trace CONFTEST: crypto_tfm_ctx_aligned CONFTEST: wait_on_bit_lock_argument_count CONFTEST: radix_tree_empty CONFTEST: radix_tree_replace_slot CONFTEST: pnv_npu2_init_context CONFTEST: cpumask_of_node CONFTEST: ioasid_get CONFTEST: mm_pasid_drop CONFTEST: mmget_not_zero CONFTEST: mmgrab CONFTEST: iommu_sva_bind_device_has_drvdata_arg CONFTEST: vm_fault_to_errno CONFTEST: find_next_bit_wrap CONFTEST: iommu_is_dma_domain CONFTEST: acpi_video_backlight_use_native CONFTEST: drm_dev_unref CONFTEST: drm_reinit_primary_mode_group CONFTEST: get_user_pages_remote CONFTEST: get_user_pages CONFTEST: pin_user_pages_remote CONFTEST: pin_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_connector_has_vrr_capable_property CONFTEST: drm_framebuffer_get CONFTEST: drm_dev_put CONFTEST: drm_format_num_planes CONFTEST: drm_connector_for_each_possible_encoder CONFTEST: drm_rotation_available CONFTEST: drm_vma_offset_exact_lookup_locked CONFTEST: nvhost_dma_fence_unpack CONFTEST: dma_fence_set_error CONFTEST: fence_set_error CONFTEST: sync_file_get_fence CONFTEST: drm_aperture_remove_conflicting_pci_framebuffers CONFTEST: drm_fbdev_generic_setup CONFTEST: drm_connector_attach_hdr_output_metadata_property CONFTEST: drm_helper_crtc_enable_color_mgmt CONFTEST: drm_crtc_enable_color_mgmt CONFTEST: drm_atomic_helper_legacy_gamma_set CONFTEST: is_export_symbol_gpl_of_node_to_nid CONFTEST: is_export_symbol_gpl_sme_active CONFTEST: is_export_symbol_present_swiotlb_map_sg_attrs CONFTEST: is_export_symbol_present_swiotlb_dma_ops CONFTEST: is_export_symbol_present___close_fd CONFTEST: is_export_symbol_present_close_fd CONFTEST: is_export_symbol_present_get_unused_fd CONFTEST: is_export_symbol_present_get_unused_fd_flags CONFTEST: is_export_symbol_present_nvhost_get_default_device CONFTEST: is_export_symbol_present_nvhost_syncpt_unit_interface_get_byte_offset CONFTEST: is_export_symbol_present_nvhost_syncpt_unit_interface_get_aperture CONFTEST: is_export_symbol_present_tegra_dce_register_ipc_client CONFTEST: is_export_symbol_present_tegra_dce_unregister_ipc_client CONFTEST: is_export_symbol_present_tegra_dce_client_ipc_send_recv CONFTEST: is_export_symbol_present_dram_clk_to_mc_clk CONFTEST: is_export_symbol_present_get_dram_num_channels CONFTEST: is_export_symbol_present_tegra_dram_types CONFTEST: is_export_symbol_present_pxm_to_node CONFTEST: is_export_symbol_present_screen_info CONFTEST: is_export_symbol_gpl_screen_info CONFTEST: is_export_symbol_present_i2c_bus_status CONFTEST: is_export_symbol_present_tegra_fuse_control_read CONFTEST: is_export_symbol_present_tegra_get_platform CONFTEST: is_export_symbol_present_pci_find_host_bridge CONFTEST: is_export_symbol_present_tsec_comms_send_cmd CONFTEST: is_export_symbol_present_tsec_comms_set_init_cb CONFTEST: is_export_symbol_present_tsec_comms_clear_init_cb CONFTEST: is_export_symbol_present_tsec_comms_alloc_mem_from_gscco CONFTEST: is_export_symbol_present_tsec_comms_free_gscco_mem CONFTEST: is_export_symbol_present_memory_block_size_bytes CONFTEST: crypto CONFTEST: is_export_symbol_present_follow_pte CONFTEST: is_export_symbol_present_int_active_memcg CONFTEST: is_export_symbol_present_migrate_vma_setup CONFTEST: dma_ops CONFTEST: swiotlb_dma_ops CONFTEST: noncoherent_swiotlb_dma_ops CONFTEST: vm_fault_has_address CONFTEST: vm_insert_pfn_prot CONFTEST: vmf_insert_pfn_prot CONFTEST: vm_ops_fault_removed_vma_arg CONFTEST: kmem_cache_has_kobj_remove_work CONFTEST: sysfs_slab_unlink CONFTEST: proc_ops CONFTEST: timespec64 CONFTEST: vmalloc_has_pgprot_t_arg CONFTEST: mm_has_mmap_lock CONFTEST: pci_channel_state CONFTEST: pci_dev_has_ats_enabled CONFTEST: remove_memory_has_nid_arg CONFTEST: add_memory_driver_managed_has_mhp_flags_arg CONFTEST: num_registered_fb CONFTEST: pci_driver_has_driver_managed_dma CONFTEST: vm_area_struct_has_const_vm_flags CONFTEST: memory_failure_has_trapno_arg CONFTEST: foll_longterm_present CONFTEST: bus_type_has_iommu_ops CONFTEST: backing_dev_info CONFTEST: mm_context_t CONFTEST: vm_fault_t CONFTEST: mmu_notifier_ops_invalidate_range CONFTEST: mmu_notifier_ops_arch_invalidate_secondary_tlbs CONFTEST: migrate_vma_added_flags CONFTEST: migrate_device_range CONFTEST: handle_mm_fault_has_mm_arg CONFTEST: handle_mm_fault_has_pt_regs_arg CONFTEST: mempolicy_has_unified_nodes CONFTEST: mempolicy_has_home_node CONFTEST: mpol_preferred_many_present CONFTEST: mmu_interval_notifier CONFTEST: fault_flag_remote_present 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_helper_mode_fill_fb_struct CONFTEST: drm_master_drop_has_from_release_arg CONFTEST: drm_driver_unload_has_int_return_type CONFTEST: drm_atomic_helper_crtc_destroy_state_has_crtc_arg CONFTEST: drm_atomic_helper_plane_destroy_state_has_plane_arg CONFTEST: drm_mode_object_find_has_file_priv_arg CONFTEST: dma_buf_owner CONFTEST: drm_connector_list_iter CONFTEST: drm_atomic_helper_swap_state_has_stall_arg CONFTEST: drm_driver_prime_flag_present CONFTEST: drm_gem_object_has_resv CONFTEST: drm_crtc_state_has_async_flip CONFTEST: drm_crtc_state_has_pageflip_flags CONFTEST: drm_crtc_state_has_vrr_enabled CONFTEST: drm_format_modifiers_present CONFTEST: drm_vma_node_is_allowed_has_tag_arg CONFTEST: drm_vma_offset_node_has_readonly 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: drm_crtc_state_has_no_vblank CONFTEST: drm_mode_config_has_allow_fb_modifiers CONFTEST: drm_has_hdr_output_metadata CONFTEST: dma_resv_add_fence CONFTEST: dma_resv_reserve_fences CONFTEST: reservation_object_reserve_shared_has_num_fences_arg CONFTEST: drm_connector_has_override_edid CONFTEST: drm_master_has_leases CONFTEST: drm_file_get_master CONFTEST: drm_modeset_lock_all_end CONFTEST: drm_connector_lookup CONFTEST: drm_connector_put CONFTEST: drm_driver_has_dumb_destroy CONFTEST: fence_ops_use_64bit_seqno CONFTEST: drm_aperture_remove_conflicting_pci_framebuffers_has_driver_arg CONFTEST: drm_mode_create_dp_colorspace_property_has_supported_colorspaces_arg CONFTEST: drm_syncobj_features_present CONFTEST: drm_unlocked_ioctl_flag_present CONFTEST: dom0_kernel_present CONFTEST: nvidia_vgpu_kvm_build CONFTEST: nvidia_grid_build CONFTEST: nvidia_grid_csp_build CONFTEST: pm_runtime_available CONFTEST: pci_class_multimedia_hd_audio CONFTEST: drm_available CONFTEST: vfio_pci_core_available CONFTEST: mdev_available CONFTEST: cmd_uphy_display_port_init CONFTEST: cmd_uphy_display_port_off CONFTEST: memory_failure_mf_sw_simulated_defined CONFTEST: drm_atomic_available CONFTEST: is_export_symbol_gpl_refcount_inc CONFTEST: is_export_symbol_gpl_refcount_dec_and_test CONFTEST: drm_alpha_blending_available CONFTEST: is_export_symbol_present_drm_gem_prime_fd_to_handle CONFTEST: is_export_symbol_present_drm_gem_prime_handle_to_fd CONFTEST: ib_peer_memory_symbols CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pci.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-dmabuf.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-nano-timer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-acpi.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-cray.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-dma.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-i2c.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-mmap.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-p2p.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pat.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-procfs.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-usermap.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-vm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-vtophys.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-interface.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-mlock.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-pci.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-registry.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-usermap.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-modeset-interface.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pci-table.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-kthread-q.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-memdbg.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-ibmnpu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-report-err.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-rsync.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-msi.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-caps.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-caps-imex.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-host1x.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv_uvm_interface.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_aead.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_ecc.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hkdf.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rand.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_shash.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rsa.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_aead_aes_gcm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_sha.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hmac_sha.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_internal_crypt_lib.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hkdf_sha.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_ec.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_x509.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rsa_ext.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nvlink_linux.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nvlink_caps.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/linux_nvswitch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/procfs_nvswitch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/i2c_nvswitch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ats_sva.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_conf_computing.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_sec2_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_sec2.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper_sec2.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_blackwell.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_blackwell_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_blackwell_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_blackwell_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_common.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_linux.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/nvstatus.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/nvCpuUuid.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/nv-kthread-q.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/nv-kthread-q-selftest.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_tools.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_global.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_isr.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_procfs.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_space.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_space_mm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_semaphore.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_mem.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_rm_mem.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_channel.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_lock.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hal.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_processors.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_tree.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_rb_tree.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_allocator.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_range.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_policy.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_block.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_group.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_replayable_faults.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_non_replayable_faults.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_access_counters.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_events.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_module.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pte_batch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_tlb_batch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_push.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pushbuffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_thread_context.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_tracker.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_ce.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_maxwell_access_counter_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pascal.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pascal_ce.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pascal_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pascal_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pascal_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta_ce.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_volta_access_counter_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_turing.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_turing_access_counter_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_turing_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_turing_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_turing_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ampere.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ampere_ce.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ampere_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ampere_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ampere_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper_fault_buffer.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper_ce.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper_host.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hopper_mmu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ada.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_policy.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_utils.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_kvmalloc.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pmm_sysmem.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pmm_gpu.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_migrate.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_populate_pageable.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_migrate_pageable.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_map_external.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_user_channel.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_hmm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_heuristics.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_thrashing.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_prefetch.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ats.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ats_ibm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ats_faults.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_test_rng.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_tree_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_allocator_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_gpu_semaphore_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_mem_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_rm_mem_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_page_tree_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_tracker_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_push_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_channel_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_ce_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_host_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_lock_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_utils_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_kvmalloc_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pmm_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_pmm_sysmem_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_events_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_perf_module_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_get_rm_ptes_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_fault_buffer_flush_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_peer_identity_mappings_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_va_block_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_range_group_tree_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_thread_context_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm/uvm_rb_tree_test.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nvidia-modeset-linux.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nv-kthread-q.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-utils.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-crtc.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-encoder.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-connector.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-gem.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-fb.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-modeset.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-fence.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-helper.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nv-kthread-q.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c:207:6: error: 'const struct drm_mode_config_funcs' has no member named 'output_poll_changed' 207 | .output_poll_changed = nv_drm_output_poll_changed, | ^~~~~~~~~~~~~~~~~~~ /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c:207:28: error: initialization of 'struct drm_atomic_state * (*)(struct drm_device *)' from incompatible pointer type 'void (*)(struct drm_device *)' [-Werror=incompatible-pointer-types] 207 | .output_poll_changed = nv_drm_output_poll_changed, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c:207:28: note: (near initialization for 'nv_mode_config_funcs.atomic_state_alloc') cc1: some warnings being treated as errors CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nv-pci-table.o make[2]: *** [scripts/Makefile.build:249: /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.o] Error 1 CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-gem-user-memory.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-gem-dma-buf.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-format.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-os-interface.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-linux.o CC [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-peermem/nvidia-peermem.o LD [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia.o ld -r -o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-interface.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pci.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-dmabuf.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-nano-timer.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-acpi.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-cray.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-dma.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-i2c.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-mmap.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-p2p.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pat. o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-procfs.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-usermap.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-vm.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-vtophys.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-interface.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-mlock.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-pci.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-registry.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/os-usermap.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-modeset-interface.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-pci-table.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-kthread-q.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-memdbg.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nv idia/nv-ibmnpu.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-report-err.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-rsync.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-msi.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-caps.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-caps-imex.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv-host1x.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nv_uvm_interface.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_aead.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_ecc.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hkdf.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rand.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_shash.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rsa.o /tmp/selfgz29405/NVIDIA-Linux-x86 _64-560.35.03/kernel/nvidia/libspdm_aead_aes_gcm.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_sha.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hmac_sha.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_internal_crypt_lib.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_hkdf_sha.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_ec.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_x509.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/libspdm_rsa_ext.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nvlink_linux.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/nvlink_caps.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/linux_nvswitch.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/procfs_nvswitch.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia/i2c_nvswitch.o LD [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-peermem.o ld -r -o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nv-modeset-interface.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nvidia-modeset-linux.o /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset/nv-kthread-q.o LD [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-modeset.o LD [M] /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-uvm.o make[2]: Target '__build' not remade because of errors. make[1]: *** [Makefile:1947: /tmp/selfgz29405/NVIDIA-Linux-x86_64-560.35.03/kernel] Error 2 make[1]: Target 'modules' not remade because of errors. make[1]: Leaving directory '/usr/src/kernels/5.14.0-570.12.1.el9_6.x86_64' make: *** [Makefile:89: modules] Error 2 -> Error.
11-11
<think> 我们面对的问题有两个:1. 之前安装NVIDIA驱动时出现'nvidia-uvm'模块已加载的警告;2. 现在尝试卸载'nvidia_drm'模块时提示“in use”。这两个问题通常是由于系统中有进程正在使用NVIDIA内核模块,或者模块之间存在依赖关系导致的。 解决方案的核心是:彻底关闭所有使用NVIDIA模块的进程(包括图形界面、CUDA程序等),然后按照正确的顺序卸载模块。 具体步骤: 1. **切换到文本模式(关闭图形界面)**:因为图形界面(X Server)会占用'nvidia_drm'等模块,所以需要先离开图形环境。 - 使用`Ctrl+Alt+F1-F6`中的个切换到文本终端(tty)。 - 或者使用命令: ```bash sudo systemctl isolate multi-user.target ``` 2. **停止使用NVIDIA模块的服务**: - 停止显示管理器(如gdm, lightdm等): ```bash sudo systemctl stop gdm.service # 根据实际使用的显示管理器调整,可能是lightdm, sddm等 ``` - 停止NVIDIA持久化守护进程(如果运行): ```bash sudo systemctl stop nvidia-persistenced ``` 3. **手动卸载模块(注意顺序)**:由于模块之间有依赖关系,必须按照从依赖者到被依赖者的顺序卸载。 正确的卸载顺序是: - nvidia_drm(依赖于nvidia_modeset) - nvidia_modeset(依赖于nvidia) - nvidia_uvm(依赖于nvidia) - nvidia 尝试以下命令: ```bash sudo rmmod nvidia_drm # 先尝试卸载drm模块 sudo rmmod nvidia_modeset # 再卸载modeset sudo rmmod nvidia_uvm # 然后卸载uvm sudo rmmod nvidia # 最后卸载主驱动模块 ``` 如果其中某个模块报告“in use”,可以使用`lsmod | grep nvidia`查看模块的依赖和使用计数,或者使用`lsof /dev/nvidia*`查看哪些进程在使用设备文件。 4. **强制终止占用进程**:如果上述步骤中仍有进程占用模块,可以尝试: - 查找并终止使用GPU的进程: ```bash sudo lsof /dev/nvidia* | awk '{print $2}' | sort | uniq | grep -v PID | xargs -r sudo kill -9 ``` 然后重新尝试卸载模块。 5. **如果仍无法卸载(内核不支持卸载或模块使用计数异常)**:则可能需要重启计算机,并在启动时进入恢复模式或添加内核参数`nomodeset`来阻止加载NVIDIA模块,然后进行驱动安装/卸载操作。 6. **完成驱动安装或卸载**:在成功卸载所有模块后,可以安全地安装新驱动或卸载旧驱动。 - 安装新驱动(在驱动安装文件所在目录): ```bash sudo sh ./NVIDIA-Linux-*.run ``` - 卸载旧驱动(如果目的是卸载): ```bash sudo nvidia-uninstall # 或者使用apt卸载(如果之前是用apt安装的) sudo apt purge nvidia-* sudo apt autoremove ``` 7. **重启系统**:完成操作后重启。 ```bash sudo reboot ``` 注意:如果系统启用了Secure Boot,安装驱动后需要为驱动签名,否则无法加载。具体步骤请参考相关文档。 ### 常见问题补充 - **为什么模块卸载顺序很重要?**:因为内核模块之间存在依赖关系。比如,`nvidia_drm`依赖于`nvidia_modeset`,而`nvidia_modeset`又依赖于`nvidia`。因此,必须先卸载依赖其他模块的模块,再卸载被依赖的模块。 - **如何防止问题复发?**:在安装新驱动前,确保旧驱动完全卸载,并在安装时使用`--no-opengl-files`选项(不安装OpenGL相关文件,避免与系统自带的Mesa驱动冲突): ```bash sudo sh ./NVIDIA-Linux-*.run --no-opengl-files ``` §§相关问题§§ 1. 如何在Ubuntu中彻底卸载NVIDIA驱动? 2. 安装NVIDIA驱动后无法进入图形界面怎么办? 3. 如何解决Secure Boot导致NVIDIA驱动加载失败的问题? 4. 如何检查当前系统中哪些进程在使用NVIDIA GPU? 5. 内核升级后NVIDIA驱动失效如何修复? [^1]: [安装NVIDIA驱动出现: An NVIDIA kernel modulenvidia-drm‘](参考链接1) [^2]: [解决nvidia驱动 安装 报‘nvidia-drm‘问题](参考链接2) [^3]: [安装 NVIDIA 显卡驱动时报错:An NVIDIA kernel modulenvidia-drm‘ appears to already be load](参考链接3) [^4]: [An NVIDIA kernel modulenvidia-drm‘ appears to already be loaded in your kernel...](参考链接4) </think>### 解决 "rmmod: ERROR: Module nvidia_drm is in use" 错误 #### 问题原因分析 当遇到 `nvidia_drm` 模块无法卸载的问题时,通常是由于以下原因: 1. **图形界面占用**:X Server 或 Wayland 等显示服务器正在使用该模块 2. **依赖关系**:`nvidia_drm` 依赖于 `nvidia_modeset` 和 `nvidia` 等其他核心模块 3. **持久进程**:NVIDIA Persistence Daemon 或 CUDA 程序保持模块活跃 4. **内核限制**:某些内核配置不支持模块卸载(较罕见) #### 完整解决步骤 ##### 1. **强制关闭图形界面** ```bash # 停止显示管理器(根据实际使用的选择) sudo systemctl stop gdm3.service # GNOME # sudo systemctl stop lightdm.service # LightDM # sudo systemctl stop sddm.service # KDE # 切换到纯命令行模式 sudo systemctl isolate multi-user.target ``` ##### 2. **终止所有 GPU 相关进程** ```bash # 查找并终止使用GPU的进程 sudo lsof /dev/nvidia* | awk '{print $2}' | uniq | grep -v PID | xargs -r sudo kill -9 # 停止持久化守护进程 sudo systemctl stop nvidia-persistenced ``` ##### 3. **正确卸载模块序列** ```bash # 必须按依赖顺序卸载(重要!) sudo rmmod nvidia_drm # 目标模块 sudo rmmod nvidia_modeset # 依赖模块 sudo rmmod nvidia_uvm # CUDA相关 sudo rmmod nvidia # 核心驱动 # 验证卸载 lsmod | grep nvidia # 应无输出 ``` ##### 4. **解决特殊占用情况** 如果仍提示 "in use",使用高级诊断: ```bash # 检查具体占用进程 sudo grep nvidia_drm /proc/modules | awk '{print $6}' | tr ',' '\n' | xargs -I{} sudo lsof -p {} # 强制清除内核模块引用(危险操作,慎用) echo 1 | sudo tee /sys/module/nvidia_drm/refcnt ``` ##### 5. **完成驱动安装/卸载** ```bash # 安装新驱动(推荐添加参数) sudo sh NVIDIA-Linux-*.run --no-kernel-module --no-opengl-files # 或彻底卸载(如需要) sudo nvidia-uninstall sudo apt purge nvidia-* ``` ##### 6. **重启验证** ```bash sudo reboot # 重启后检查 nvidia-smi lsmod | grep nvidia_drm ``` #### 关键注意事项 1. **模块卸载顺序**必须严格遵守: `drm → modeset → uvm → nvidia` 2. 双显卡设备需额外关闭混合图形: ```bash sudo prime-select intel # 切换到集成显卡 ``` 3. 若使用 Secure Boot,需要提前签名: ```bash sudo mokutil --import /var/lib/dkms/mok.pub ``` > **故障树分析**:若重启后问题依旧,考虑: > (1) 内核参数添加 `nouveau.modeset=0` > (2) 更新 initramfs:`sudo update-initramfs -u` > (3) 检查 BIOS 中禁用 Secure Boot[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值