linux: add -d switch to specify nvidia driver version manually

manully specified version is used instead of using nvidia-smi to detect
it automatically
This commit is contained in:
Vojta Drbohlav 2020-11-01 23:50:29 +01:00
parent e56416e42a
commit 95dd542a80
3 changed files with 50 additions and 29 deletions

View File

@ -128,10 +128,10 @@ git clone https://ipfs.io/ipns/Qmed4r8yrBP162WK1ybd1DJWhLUi4t6mGuBoB9fLtjxR7u nv
# bash ./patch.sh -h
SYNOPSIS
patch.sh [-s] [-r|-h|-c VERSION|-l]
patch-fbc.sh [-s] [-r|-h|-c VERSION|-l]
DESCRIPTION
The patch for Nvidia drivers to remove NVENC session limit
The patch for Nvidia drivers to allow FBC on consumer devices
-s Silent mode (No output)
-r Rollback to original (Restore lib from backup)
@ -139,6 +139,8 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported.
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
```

View File

@ -6,6 +6,7 @@ set -euo pipefail ; # <- this semicolon and comment make options apply
backup_path="/opt/nvidia/libnvidia-fbc-backup"
silent_flag=''
manual_driver_version=''
print_usage() { printf '
SYNOPSIS
@ -20,6 +21,8 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported.
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
'
}
@ -27,13 +30,14 @@ DESCRIPTION
# shellcheck disable=SC2209
opmode="patch"
while getopts 'rshc:l' flag; do
while getopts 'rshc:ld:' flag; do
case "${flag}" in
r) opmode="${opmode}rollback" ;;
s) silent_flag='true' ;;
h) opmode="${opmode}help" ;;
c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;;
l) opmode="${opmode}listversions" ;;
d) manual_driver_version="$OPTARG" ;;
*) echo "Incorrect option specified in command line" ; exit 2 ;;
esac
done
@ -157,19 +161,25 @@ patch_common () {
exit 1
fi
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd)
ret_code=$?
driver_version=$(echo "$driver_versions_list" | head -n 1)
if [[ $ret_code -ne 0 ]] ; then
echo "Can not detect nvidia driver version."
echo "CMD: \"$cmd\""
echo "Result: \"$driver_versions_list\""
echo "nvidia-smi retcode: $ret_code"
exit 1
fi
if [[ "$manual_driver_version" ]]; then
driver_version="$manual_driver_version"
echo "Detected nvidia driver version: $driver_version"
echo "Using manually entered nvidia driver version: $driver_version"
else
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd)
ret_code=$?
driver_version=$(echo "$driver_versions_list" | head -n 1)
if [[ $ret_code -ne 0 ]] ; then
echo "Can not detect nvidia driver version."
echo "CMD: \"$cmd\""
echo "Result: \"$driver_versions_list\""
echo "nvidia-smi retcode: $ret_code"
exit 1
fi
echo "Detected nvidia driver version: $driver_version"
fi
if ! check_version_supported "$driver_version" ; then
echo "Patch for this ($driver_version) nvidia driver not found."

View File

@ -6,6 +6,7 @@ set -euo pipefail ; # <- this semicolon and comment make options apply
backup_path="/opt/nvidia/libnvidia-encode-backup"
silent_flag=''
manual_driver_version=''
print_usage() { printf '
SYNOPSIS
@ -20,20 +21,22 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported.
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
'
}
# shellcheck disable=SC2209
opmode="patch"
while getopts 'rshc:l' flag; do
while getopts 'rshc:ld:' flag; do
case "${flag}" in
r) opmode="${opmode}rollback" ;;
s) silent_flag='true' ;;
h) opmode="${opmode}help" ;;
c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;;
l) opmode="${opmode}listversions" ;;
d) manual_driver_version="$OPTARG" ;;
*) echo "Incorrect option specified in command line" ; exit 2 ;;
esac
done
@ -231,19 +234,25 @@ patch_common () {
exit 1
fi
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd)
ret_code=$?
driver_version=$(echo "$driver_versions_list" | head -n 1)
if [[ $ret_code -ne 0 ]] ; then
echo "Can not detect nvidia driver version."
echo "CMD: \"$cmd\""
echo "Result: \"$driver_versions_list\""
echo "nvidia-smi retcode: $ret_code"
exit 1
fi
if [[ "$manual_driver_version" ]]; then
driver_version="$manual_driver_version"
echo "Detected nvidia driver version: $driver_version"
echo "Using manually entered nvidia driver version: $driver_version"
else
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd)
ret_code=$?
driver_version=$(echo "$driver_versions_list" | head -n 1)
if [[ $ret_code -ne 0 ]] ; then
echo "Can not detect nvidia driver version."
echo "CMD: \"$cmd\""
echo "Result: \"$driver_versions_list\""
echo "nvidia-smi retcode: $ret_code"
exit 1
fi
echo "Detected nvidia driver version: $driver_version"
fi
if ! check_version_supported "$driver_version" ; then
echo "Patch for this ($driver_version) nvidia driver not found."