diff --git a/rhel10/nvidia-driver b/rhel10/nvidia-driver index 3cead100e..c6a2056f0 100755 --- a/rhel10/nvidia-driver +++ b/rhel10/nvidia-driver @@ -95,6 +95,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -787,6 +792,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } _store_driver_digest() { @@ -877,6 +883,7 @@ _load() { } init() { + _set_daemons_status "NotReady" _prepare_exclusive if _should_skip_kernel_module_reload; then diff --git a/rhel8/nvidia-driver b/rhel8/nvidia-driver index c25621579..2724c5468 100755 --- a/rhel8/nvidia-driver +++ b/rhel8/nvidia-driver @@ -93,6 +93,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -393,7 +398,6 @@ _load_driver() { echo "Loading ipmi and i2c_core kernel modules..." modprobe -a i2c_core ipmi_msghandler ipmi_devintf - echo "Loading NVIDIA driver kernel modules..." set -o xtrace +o nounset modprobe nvidia @@ -764,6 +768,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } _store_driver_digest() { @@ -854,6 +859,7 @@ _load() { } init() { + _set_daemons_status "NotReady" _prepare_exclusive if _should_skip_kernel_module_reload; then diff --git a/rhel9/nvidia-driver b/rhel9/nvidia-driver index 42d6fef25..b39b38893 100755 --- a/rhel9/nvidia-driver +++ b/rhel9/nvidia-driver @@ -95,6 +95,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -783,6 +788,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } _store_driver_digest() { @@ -873,6 +879,7 @@ _load() { } init() { + _set_daemons_status "NotReady" _prepare_exclusive if _should_skip_kernel_module_reload; then diff --git a/ubuntu22.04/nvidia-driver b/ubuntu22.04/nvidia-driver index f1049307f..c1acbb027 100755 --- a/ubuntu22.04/nvidia-driver +++ b/ubuntu22.04/nvidia-driver @@ -87,6 +87,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -362,7 +367,6 @@ _load_driver() { echo "Loading ipmi and i2c_core kernel modules..." modprobe -a i2c_core ipmi_msghandler ipmi_devintf - echo "Loading NVIDIA driver kernel modules..." set -o xtrace +o nounset modprobe nvidia @@ -726,6 +730,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } # Check if fast path should be used (driver already loaded with matching config) @@ -800,6 +805,8 @@ init() { trap "echo 'Caught signal'; exit 1" HUP INT QUIT PIPE TERM trap "_shutdown" EXIT + _set_daemons_status "NotReady" + if _should_skip_kernel_module_reload; then echo "The NVIDIA driver is already loaded with the desired configuration, performing userspace-only install" _unmount_rootfs diff --git a/ubuntu24.04/nvidia-driver b/ubuntu24.04/nvidia-driver index 9bfa8b4d6..18345f751 100755 --- a/ubuntu24.04/nvidia-driver +++ b/ubuntu24.04/nvidia-driver @@ -97,6 +97,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -303,7 +308,6 @@ _load_driver() { echo "Loading ipmi and i2c_core kernel modules..." modprobe -a i2c_core ipmi_msghandler ipmi_devintf - echo "Loading NVIDIA driver kernel modules..." set -o xtrace +o nounset modprobe nvidia @@ -654,6 +658,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } # Check if fast path should be used (driver already loaded with matching config) @@ -751,6 +756,8 @@ init() { trap "echo 'Caught signal'; exit 1" HUP INT QUIT PIPE TERM trap "_shutdown" EXIT + _set_daemons_status "NotReady" + if _should_skip_kernel_module_reload; then echo "The NVIDIA driver is already loaded with the desired configuration, performing userspace-only install" _unmount_rootfs diff --git a/ubuntu26.04/nvidia-driver b/ubuntu26.04/nvidia-driver index 1ad5557aa..fb492f658 100755 --- a/ubuntu26.04/nvidia-driver +++ b/ubuntu26.04/nvidia-driver @@ -107,6 +107,11 @@ _resolve_kernel_version() { return 0 } +_set_daemons_status() { + mkdir -p /run/nvidia/validations + echo "${1}" > /run/nvidia/validations/.driver-daemons-status +} + # Install the kernel modules header/builtin/order files and generate the kernel version string. _install_prerequisites() ( local tmp_dir=$(mktemp -d) @@ -315,7 +320,6 @@ _load_driver() { echo "Loading ipmi and i2c_core kernel modules..." modprobe -a i2c_core ipmi_msghandler ipmi_devintf - echo "Loading NVIDIA driver kernel modules..." set -o xtrace +o nounset modprobe nvidia @@ -714,6 +718,7 @@ _start_daemons() { echo "Starting NVIDIA fabric manager daemon..." nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg || return 1 fi + _set_daemons_status "Ready" } # Check if fast path should be used (driver already loaded with matching config) @@ -845,6 +850,8 @@ init() { trap "echo 'Caught signal'; exit 1" HUP INT QUIT PIPE TERM trap "_shutdown" EXIT + _set_daemons_status "NotReady" + if _should_skip_kernel_module_reload; then echo "The NVIDIA driver is already loaded with the desired configuration, performing userspace-only install" _unmount_rootfs