Hatred's Log Place

DON'T PANIC!

Apr 1, 2025 - 1 minute read - Linux

nVidia: перестаёт работать аппаратное кодирование видео после suspend

Проблема: после вывода ноутбука в сон и последующего пробуждения FFmpeg выдаёт примерно следующее:

[AVHWDeviceContext @ 0x55ec837f1800] cu->cuInit(0) failed -> CUDA_ERROR_UNKNOWN: unknown error Device creation failed: -1313558101.

Команда у меня такая:

ffmpeg -vsync 0 -hwaccel cuda -hwaccel_output_format cuda  -i INPUT.mkv -c:a mp3 -c:v h264_nvenc -profile baseline  -y OUTPUT.mkv

С аналогичной ошибкой отваливается и Kdenlive при попытке использовать аппаратный кодек.

Как оказалось, ошибка известная ( и на форуме nVidia), там же можно найти WA:

This bug disappears after running nvidia-bug-report.sh for some reason, CUDA works again after running nvidia-bug-report.sh.

Edit: After more research I found out that running nvidia-settings as root somehow fixes the problem.
Edit 2: Loading the nvidia-uvm module though modprobe nvidia-uvm fixes this issue

Схожая проблема.

WA:

sudo modprobe -r nvidia_uvm
sudo modprobe    nvidia_uvm

Я засунул эти команды в suspend-hook Systemd:

sudo systemctl edit --force --full nvidia-uvm-wa-sleep.service

Содержимое:

[Unit]  
Description=nVidia UVM suspend bug WA  
Before=sleep.target    
StopWhenUnneeded=yes  
  
[Service]      
Type=oneshot  
RemainAfterExit=yes     
ExecStart= modprobe -r nvidia_uvm              
ExecStop= modprobe nvidia_uvm                     
  
[Install]  
WantedBy=sleep.target

Включить:

sudo systemctl enable nvidia-uvm-wa-sleep.service

Содержимое юнита по мотивам: