Merge pull request #340 from vojtad/feat/driver-version-switch

linux: add -d switch to specify nvidia driver version manually
This commit is contained in:
Snawoot 2020-11-02 10:48:27 +02:00 committed by GitHub
commit 58ec6923f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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 # bash ./patch.sh -h
SYNOPSIS SYNOPSIS
patch.sh [-s] [-r|-h|-c VERSION|-l] patch-fbc.sh [-s] [-r|-h|-c VERSION|-l]
DESCRIPTION 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) -s Silent mode (No output)
-r Rollback to original (Restore lib from backup) -r Rollback to original (Restore lib from backup)
@ -139,6 +139,8 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch. -c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported. Returns true exit code (0) if version is supported.
-l List supported driver versions -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" backup_path="/opt/nvidia/libnvidia-fbc-backup"
silent_flag='' silent_flag=''
manual_driver_version=''
print_usage() { printf ' print_usage() { printf '
SYNOPSIS SYNOPSIS
@ -20,6 +21,8 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch. -c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported. Returns true exit code (0) if version is supported.
-l List supported driver versions -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 # shellcheck disable=SC2209
opmode="patch" opmode="patch"
while getopts 'rshc:l' flag; do while getopts 'rshc:ld:' flag; do
case "${flag}" in case "${flag}" in
r) opmode="${opmode}rollback" ;; r) opmode="${opmode}rollback" ;;
s) silent_flag='true' ;; s) silent_flag='true' ;;
h) opmode="${opmode}help" ;; h) opmode="${opmode}help" ;;
c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;; c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;;
l) opmode="${opmode}listversions" ;; l) opmode="${opmode}listversions" ;;
d) manual_driver_version="$OPTARG" ;;
*) echo "Incorrect option specified in command line" ; exit 2 ;; *) echo "Incorrect option specified in command line" ; exit 2 ;;
esac esac
done done
@ -157,6 +161,11 @@ patch_common () {
exit 1 exit 1
fi fi
if [[ "$manual_driver_version" ]]; then
driver_version="$manual_driver_version"
echo "Using manually entered nvidia driver version: $driver_version"
else
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits" cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd) driver_versions_list=$($cmd)
ret_code=$? ret_code=$?
@ -170,6 +179,7 @@ patch_common () {
fi fi
echo "Detected nvidia driver version: $driver_version" echo "Detected nvidia driver version: $driver_version"
fi
if ! check_version_supported "$driver_version" ; then if ! check_version_supported "$driver_version" ; then
echo "Patch for this ($driver_version) nvidia driver not found." 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" backup_path="/opt/nvidia/libnvidia-encode-backup"
silent_flag='' silent_flag=''
manual_driver_version=''
print_usage() { printf ' print_usage() { printf '
SYNOPSIS SYNOPSIS
@ -20,20 +21,22 @@ DESCRIPTION
-c VERSION Check if version VERSION supported by this patch. -c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported. Returns true exit code (0) if version is supported.
-l List supported driver versions -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 # shellcheck disable=SC2209
opmode="patch" opmode="patch"
while getopts 'rshc:l' flag; do while getopts 'rshc:ld:' flag; do
case "${flag}" in case "${flag}" in
r) opmode="${opmode}rollback" ;; r) opmode="${opmode}rollback" ;;
s) silent_flag='true' ;; s) silent_flag='true' ;;
h) opmode="${opmode}help" ;; h) opmode="${opmode}help" ;;
c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;; c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;;
l) opmode="${opmode}listversions" ;; l) opmode="${opmode}listversions" ;;
d) manual_driver_version="$OPTARG" ;;
*) echo "Incorrect option specified in command line" ; exit 2 ;; *) echo "Incorrect option specified in command line" ; exit 2 ;;
esac esac
done done
@ -231,6 +234,11 @@ patch_common () {
exit 1 exit 1
fi fi
if [[ "$manual_driver_version" ]]; then
driver_version="$manual_driver_version"
echo "Using manually entered nvidia driver version: $driver_version"
else
cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits" cmd="$NVIDIA_SMI --query-gpu=driver_version --format=csv,noheader,nounits"
driver_versions_list=$($cmd) driver_versions_list=$($cmd)
ret_code=$? ret_code=$?
@ -244,6 +252,7 @@ patch_common () {
fi fi
echo "Detected nvidia driver version: $driver_version" echo "Detected nvidia driver version: $driver_version"
fi
if ! check_version_supported "$driver_version" ; then if ! check_version_supported "$driver_version" ; then
echo "Patch for this ($driver_version) nvidia driver not found." echo "Patch for this ($driver_version) nvidia driver not found."