drm-kmod-20220907_2 not supported for this configuration / NVIDIA : Failed to initialize the NVIDIA kernel module
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 24 Feb 2024 14:56:28 UTC
Hello to everyone. I need to conduct some tests on top of the FreeBSD 13.1 that I'm going to explain below : I lost the ability to pass one Nvidia GpU from FreeBSD 14.0 in this case to any Linux vm. The same procedure that worked until "yesterday" does not work anymore (for me). Corvin (a competent bhyve developer) does not reply to my message anymore. I would like to be sure that it is true that it is bugged,as it seems,and not that I'm making some mistake. So,I will explain what I do to enable this functionality. I hope that you also want to try or that he tries a different procedure that works. The most important thing is that we will be able to enable the function. Some time ago Corvin gave me 3 scripts to run in sequence. They are the following : a) setup_git_140.sh git clone https://github.com/beckhoff/freebsd-src /usr/corvin-src-140 b) build_branch_140.sh #!/bin/sh usage() { cat >&2 << EOF Usage: ${0} <branch> [<build_options>] Checkouts to <branch> and builds it with <build_options> (see build.sh for more information). EOF exit 1 } set -e set -u readonly script_path="$(cd "$(dirname "${0}")" && pwd)" readonly branch="${1?Missing <branch>$(usage)}" shift echo $branch cd /usr/corvin-src-140 git fetch --all --prune git checkout -f "${branch}" ${script_path}/build_140.sh "$@" c) build_build_140.sh #!/bin/sh usage() { cat >&2 << EOF Usage: ${0} [--no-bhf] [--reboot] [--verbose] [--without- kernel] Builds bhyve EOF exit 1 } build_module() { local _path _path="${1}" # change to module path cd "${_path}" # clean module if test "${clean}" = "true"; then make clean > "${cmd_redirect}" 2>&1 fi # build module make > "${cmd_redirect}" 2>&1 # install module make install > "${cmd_redirect}" } build() { build_module "${src_dir}/include" build_module "${src_dir}/lib/libvmmapi" build_module "${src_dir}/sys/modules/vmm" # build kernel if test "${with_kernel}" = "true"; then cd "${src_dir}" local kern_opts kern_opts="-j$(sysctl -n hw.ncpu)" if test "${with_bhf}" = "true"; then kern_opts="${kern_opts} KERNCONF=BHF" fi if ! test "${clean}" = "true"; then kern_opts="${kern_opts} NO_CLEAN=YES" fi make kernel ${kern_opts} > "${cmd_redirect}" 2>&1 fi build_module "${src_dir}/usr.sbin/bhyve" build_module "${src_dir}/usr.sbin/bhyvectl" build_module "${src_dir}/usr.sbin/bhyveload" if test "${with_reboot}" = "true"; then reboot fi } set -e set -u while test $# -gt 0; do case "${1-}" in --clean) clean="true" shift ;; --reboot) with_reboot="true" shift ;; --src-dir=*) src_dir="${1#*=}" shift ;; --verbose) cmd_redirect="/dev/stdout" shift ;; --without-bhf) with_bhf="false" shift ;; --without-kernel) with_kernel="false" shift ;; *) usage ;; esac done readonly clean="${clean-"false"}" readonly cmd_redirect="${cmd_redirect-"/dev/null"}" readonly src_dir="${src_dir-"/usr/corvin-src-140"}" echo $src_dir readonly with_bhf="${with_bhf-"true"}" readonly with_kernel="${with_kernel-"true"}" readonly with_reboot="${with_reboot-"false"}" build Here we go. This is what I do to start the compilation that should produce the working bhyve system files that will give to use the passthru of one nvidia gpu on FreeBSD 14.0 : a) ./setup_git_140.sh b) ./build_branch_140.sh origin/phab/corvink/14.0/nvidia-wip --without-bhf --verbose ok. It compiled the code without giving errors,until a certain point,when it happens what you see below. I want to understand if the code is bugged. Please help me : /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1174:21: error: use of undeclared identifier 'ctx' passthru_cfgwrite(ctx, vcpu, pi, offset - 0x88000, size, value); ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1174:26: error: use of undeclared identifier 'vcpu' passthru_cfgwrite(ctx, vcpu, pi, offset - 0x88000, size, value); ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1209:20: error: use of undeclared identifier 'ctx' passthru_cfgread(ctx, vcpu, pi, offset - 0x88000, size, (uint32_t *)&val); ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1209:25: error: use of undeclared identifier 'vcpu' passthru_cfgread(ctx, vcpu, pi, offset - 0x88000, size, (uint32_t *)&val); ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1302:29: error: use of undeclared identifier 'ctx' if (vm_unmap_pptdev_mmio(ctx, sc- >psc_sel.pc_bus, ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1309:27: error: use of undeclared identifier 'ctx' if (vm_map_pptdev_mmio(ctx, sc- >psc_sel.pc_bus, ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1327:29: error: use of undeclared identifier 'ctx' if (vm_unmap_pptdev_mmio(ctx, sc- >psc_sel.pc_bus, ^ /usr/corvin-src-140/usr.sbin/bhyve/pci_passthru.c:1334:27: error: use of undeclared identifier 'ctx' if (vm_map_pptdev_mmio(ctx, sc- >psc_sel.pc_bus, ^ 8 errors generated. *** Error code 1 Exploring his github it seems that his code should work on FreeBSD 13.1 and FreeBSD 14.0. So,I've realized that it does not work for the latter. Maybe it works for FreeBSD 13.1. To be sure it I've installed it on one of my disks. I've installed xfce4 and KDE,Xorg and from the ports (after having upgraded them),I've installed the nvidia-driver version. 535.146.02 ; I didn't have any problem. The problem arises when I tried to install the package drm-kmod from ports. Unfortunately I'm not able to compile it. This is what happened : root@marietto:/usr/ports/graphics/drm-kmod # make ====> drm-kmod-20220907_2 not supported for this configuration. ok. At this point I tried to install it from the packages : root@marietto:/usr/ports/graphics/drm-kmod # make clean ====> cleaning for drm-kmod-20220907_2 so : root@marietto:/usr/ports/graphics/drm-kmod # pkg install drm-kmod New packages to be INSTALLED : drm-kmod: 20220907_2 OK now,I have performed additional configuration to : nano /home/marietto/.xinitrc : exec ck-launch-session dbus-launch --exit-with-session startxfce4 nano /etc/rc.conf : kdm5_enable="YES" dbus_enable="YES" hald_enable="YES" kld_list="nvidia nvidia-modeset" rpcbind_enable="YES" dtcms_enable="YES" inetd_enable="YES" nano /boot/loader.conf vmm_load="YES" nmdm_load="YES" tmpfs_load="YES" cryptodev_load="YES" zfs_load="YES" kern.racct.enable="1" kern.vty=vt kern.cam.scsi_delay="10000" nano /etc/X11/xorg.conf Section "Device" Identifier "Card0" Driver "nvidia" BusID "PCI:1:0:0" EndSection root@marietto:/home/marietto # lspci 01:00.0 NVIDIA GP106 01:00.1 NVIDIA GP106 High Definition Audio Controller 02:00.0 NVIDIA TU102 02:00.1 NVIDIA TU102 High Definition Audio Controller 02:00.2 NVIDIA TU102 USB Controller 02:00.3 NVIDIA TU102 Serial BUS Controller Now,I want to startx to start xfce4 : marietto@marietto: $ startx Fatal server error : no screens found (EE) Check the log file at "/var/log/Xorg.0.log" nano /var/log/Xorg.0.log : NVIDIA dlloader X driver 535.146.02 NVIDIA Unified Driver for all Supported NVIDIA gpus NVIDIA : Failed to initialize the NVIDIA kernel module How to fix it ? -- Mario.