Skip to content

Commit b660caa

Browse files
Extract common code into reusable helper functions
Signed-off-by: Karthik Vetrivel <[email protected]>
1 parent d4a6dff commit b660caa

File tree

3 files changed

+123
-204
lines changed

3 files changed

+123
-204
lines changed

rhel9/common.sh

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,44 +46,26 @@ _gdrcopy_enabled() {
4646
return 1
4747
}
4848

49+
# Read a config file and convert newlines to spaces
50+
_read_conf_file() {
51+
local file="$1"
52+
[ -f "$file" ] && tr '\n' ' ' < "$file"
53+
}
54+
4955
# Build driver configuration for state comparison
5056
_build_driver_config() {
51-
local nvidia_params="" nvidia_uvm_params="" nvidia_modeset_params="" nvidia_peermem_params=""
52-
53-
# Read module parameters from conf files
54-
if [ -f "/drivers/nvidia.conf" ]; then
55-
nvidia_params=$(cat "/drivers/nvidia.conf" | tr '\n' ' ')
56-
fi
57-
if [ -f "/drivers/nvidia-uvm.conf" ]; then
58-
nvidia_uvm_params=$(cat "/drivers/nvidia-uvm.conf" | tr '\n' ' ')
59-
fi
60-
if [ -f "/drivers/nvidia-modeset.conf" ]; then
61-
nvidia_modeset_params=$(cat "/drivers/nvidia-modeset.conf" | tr '\n' ' ')
62-
fi
63-
if [ -f "/drivers/nvidia-peermem.conf" ]; then
64-
nvidia_peermem_params=$(cat "/drivers/nvidia-peermem.conf" | tr '\n' ' ')
65-
fi
66-
67-
local config="DRIVER_VERSION=${DRIVER_VERSION}
57+
cat <<EOF
58+
DRIVER_VERSION=${DRIVER_VERSION}
6859
DRIVER_TYPE=${DRIVER_TYPE:-passthrough}
6960
KERNEL_VERSION=$(uname -r)
7061
GPU_DIRECT_RDMA_ENABLED=${GPU_DIRECT_RDMA_ENABLED:-false}
7162
USE_HOST_MOFED=${USE_HOST_MOFED:-false}
7263
KERNEL_MODULE_TYPE=${KERNEL_MODULE_TYPE:-auto}
73-
NVIDIA_MODULE_PARAMS=${nvidia_params}
74-
NVIDIA_UVM_MODULE_PARAMS=${nvidia_uvm_params}
75-
NVIDIA_MODESET_MODULE_PARAMS=${nvidia_modeset_params}
76-
NVIDIA_PEERMEM_MODULE_PARAMS=${nvidia_peermem_params}"
77-
78-
# Append config file contents directly
79-
for conf_file in nvidia.conf nvidia-uvm.conf nvidia-modeset.conf nvidia-peermem.conf; do
80-
if [ -f "/drivers/$conf_file" ]; then
81-
config="${config}
82-
$(cat "/drivers/$conf_file")"
83-
fi
84-
done
85-
86-
echo "$config"
64+
NVIDIA_MODULE_PARAMS=$(_read_conf_file /drivers/nvidia.conf)
65+
NVIDIA_UVM_MODULE_PARAMS=$(_read_conf_file /drivers/nvidia-uvm.conf)
66+
NVIDIA_MODESET_MODULE_PARAMS=$(_read_conf_file /drivers/nvidia-modeset.conf)
67+
NVIDIA_PEERMEM_MODULE_PARAMS=$(_read_conf_file /drivers/nvidia-peermem.conf)
68+
EOF
8769
}
8870

8971
# Check if fast path should be used (driver already loaded with matching config)

rhel9/nvidia-driver

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -719,52 +719,47 @@ _start_daemons() {
719719
}
720720

721721
_store_driver_config() {
722-
local config_file="/run/nvidia/driver-config.state"
723-
echo "Storing driver configuration state..."
724-
_build_driver_config > "$config_file"
725-
echo "Driver configuration stored at $config_file"
722+
local config_file="/run/nvidia/driver-config.state"
723+
echo "Storing driver configuration state..."
724+
_build_driver_config > "$config_file"
725+
echo "Driver configuration stored at $config_file"
726+
}
727+
728+
_wait_for_signal() {
729+
echo "Done, now waiting for signal"
730+
sleep infinity &
731+
trap "echo 'Caught signal'; _shutdown && { kill $!; exit 0; }" HUP INT QUIT PIPE TERM
732+
trap - EXIT
733+
while true; do wait $! || continue; done
734+
exit 0
726735
}
727736

728737
_userspace_only_install() {
729738
echo "Detected matching loaded driver & config (${DRIVER_VERSION}); performing userspace-only install"
730-
731739
_unmount_rootfs
732740
_update_package_cache
733-
734-
# Skip kernel-related steps for userspace-only install
735-
# KERNEL_VERSION is already set from uname -r, no need to resolve from yum
736-
# Kernel headers/devel/modules are not needed for userspace-only install
737-
741+
738742
cd /drivers
739743
[ ! -d "NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}" ] && sh NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}.run -x
740744
cd NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}
741-
742-
743-
echo "DEBUG: Current directory: $(pwd)"
744-
echo "DEBUG: Checking for ./nvidia-installer:"
745-
ls -la ./nvidia-installer 2>&1 || echo " ./nvidia-installer NOT FOUND"
746-
echo "DEBUG: Checking PATH for nvidia-installer:"
747-
which nvidia-installer 2>&1 || echo " nvidia-installer NOT in PATH"
748-
749745

750746
echo "Installing userspace components (libraries and binaries)..."
751747
local install_args="--silent --no-kernel-module --no-nouveau-check --no-nvidia-modprobe --no-drm --no-peermem --ui=none"
752748
[ "${ACCEPT_LICENSE}" = "yes" ] && install_args="$install_args --accept-license"
753749
IGNORE_CC_MISMATCH=1 ./nvidia-installer $install_args
754-
755-
# Copy kernel module sources if not already present (needed for other containers)
750+
751+
# Copy kernel module sources if not already present (needed for sidecar containers)
756752
if [ ! -d "/usr/src/nvidia-${DRIVER_VERSION}" ]; then
757753
_resolve_kernel_type || exit 1
758754
mkdir -p /usr/src/nvidia-${DRIVER_VERSION}
759755
cp -r LICENSE mkprecompiled ${KERNEL_TYPE} /usr/src/nvidia-${DRIVER_VERSION}/
760756
sed '9,${/^\(kernel\|LICENSE\)/!d}' .manifest > /usr/src/nvidia-${DRIVER_VERSION}/.manifest
761757
fi
762-
758+
763759
_mount_rootfs
764760
_start_daemons
765761
_write_kernel_update_hook
766762
_store_driver_config
767-
768763
echo "Userspace-only install complete"
769764
}
770765

@@ -826,13 +821,7 @@ _load() {
826821
_mount_rootfs
827822
_write_kernel_update_hook
828823
_store_driver_config
829-
830-
echo "Done, now waiting for signal"
831-
sleep infinity &
832-
trap "echo 'Caught signal'; _shutdown && { kill $!; exit 0; }" HUP INT QUIT PIPE TERM
833-
trap - EXIT
834-
while true; do wait $! || continue; done
835-
exit 0
824+
_wait_for_signal
836825
}
837826

838827
init() {
@@ -855,13 +844,7 @@ init() {
855844

856845
if _should_use_fast_path; then
857846
_userspace_only_install
858-
859-
echo "Userspace-only install complete, now waiting for signal"
860-
sleep infinity &
861-
trap "echo 'Caught signal'; _shutdown && { kill $!; exit 0; }" HUP INT QUIT PIPE TERM
862-
trap - EXIT
863-
while true; do wait $! || continue; done
864-
exit 0
847+
_wait_for_signal
865848
fi
866849

867850
_unload_driver || exit 1

0 commit comments

Comments
 (0)