Add bootloader choice for safe vs full NVIDIA boot
This commit is contained in:
@@ -22,6 +22,25 @@ fi
|
||||
log "module dir: $NVIDIA_KO_DIR"
|
||||
ls "$NVIDIA_KO_DIR"/*.ko 2>/dev/null | sed 's/^/ /' || true
|
||||
|
||||
cmdline_param() {
|
||||
key="$1"
|
||||
for token in $(cat /proc/cmdline 2>/dev/null); do
|
||||
case "$token" in
|
||||
"$key"=*)
|
||||
echo "${token#*=}"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
nvidia_mode="$(cmdline_param bee.nvidia.mode || true)"
|
||||
if [ -z "$nvidia_mode" ]; then
|
||||
nvidia_mode="safe"
|
||||
fi
|
||||
log "boot mode: $nvidia_mode"
|
||||
|
||||
load_module() {
|
||||
mod="$1"
|
||||
shift
|
||||
@@ -40,15 +59,24 @@ load_module() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# Load only the base NVIDIA kernel module on boot.
|
||||
# NVIDIA documents that GSP firmware is enabled by default on newer GPUs and can
|
||||
# be disabled via NVreg_EnableGpuFirmware=0. This keeps the live ISO on the
|
||||
# conservative path until we have a stable repro for the observed boot crash.
|
||||
if ! load_module nvidia NVreg_EnableGpuFirmware=0; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "skipping nvidia-modeset and nvidia-uvm during boot for stability"
|
||||
case "$nvidia_mode" in
|
||||
full)
|
||||
if ! load_module nvidia; then
|
||||
exit 1
|
||||
fi
|
||||
load_module nvidia-modeset || true
|
||||
load_module nvidia-uvm || true
|
||||
;;
|
||||
safe|*)
|
||||
# NVIDIA documents that GSP firmware is enabled by default on newer GPUs and can
|
||||
# be disabled via NVreg_EnableGpuFirmware=0. Safe mode keeps the live ISO on the
|
||||
# conservative path for platforms where full boot-time GSP init is unstable.
|
||||
if ! load_module nvidia NVreg_EnableGpuFirmware=0; then
|
||||
exit 1
|
||||
fi
|
||||
log "safe mode: skipping nvidia-modeset and nvidia-uvm during boot"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Create /dev/nvidia* device nodes (udev rules absent since we use .run installer)
|
||||
nvidia_major=$(grep -m1 ' nvidiactl$' /proc/devices | awk '{print $1}')
|
||||
|
||||
Reference in New Issue
Block a user