LINUX.ORG.RU

nvidia в wayland после спящего режима...

 , , , ,


1

1

У меня стационарный комп, nvidia 3070ti, gentoo, wayland, kde, openrc.

После спящего режима sddm почему-то забывает о существовании старой сессии и врубает экран входа в систему. Я обнаружил, что он не просто так игнорит существование старой сессии, а она по какой-то причине недоступна. Потому что если отключить sddm и запустить кеды из сисконсоли, то после спящего на этой сисконсоли просто черный экран… При этом все запущенные приложения и сессия wayland висит в процессах. Ну и после каждого спящего режима у меня стартует новая сессия, которая работает то без проблем, но как бы смысла от такого спящего режима нет :D

Пробовал тоже самое в иксах - всё отлично работает и сессия восстанавливает.

Тестил с разными ядрами, и стабильными и последними - ситуация не меняется.

В грабе такое:

GRUB_CMDLINE_LINUX="crypt_root=UUID=... root=UUID=... root_trim=yes nvidia-drm.modeset=1 mem_sleep_default=deep quiet splash"

В /etc/modprobe.d/nvidia.conf такое:

blacklist nouveau
blacklist nova_core

options nvidia-drm modeset=1 fbdev=1

options nvidia NVreg_EnableGpuFirmware=0 NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/var/tmp NVreg_DeviceFileGID=27 NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_ModifyDeviceFiles=1

alias char-major-195 nvidia
alias /dev/nvidiactl char-major-195
remove nvidia modprobe -r --ignore-remove nvidia-drm nvidia-modeset nvidia-uvm nvidia

Уже ломаю голову не первый день и не понимаю куда копать. Подскажите, плз



Последнее исправление: gentoorulz (всего исправлений: 2)

вроде удалось разобраться. дело в параметре NVreg_PreserveVideoMemoryAllocations=1, как только я его поменял с 1 на 0 - сразу завелось восстановление. Пока единственный минус - необходимо перезапускать плазму (plasmashell --replace &), потому что исчезает панель и часть элементов.

Возможно NVreg_PreserveVideoMemoryAllocations не работает потому что NVreg_TemporaryFilePath не сохраняет данные в /var/tmp, т.к. он находится на криптодиске. Надо будет потестить и создать ФС например на флешке, не криптовать и прописать в NVreg_TemporaryFilePath, вдруг заведётся.

//gentoorulz

anonymous
()
Ответ на: комментарий от anonymous

Поэкспериментил с разными значениями и обнаружил что NVreg_PreserveVideoMemoryAllocations=0 работает только в связке с NVreg_EnableGpuFirmware=1, если без него, то тоже всё зависает. Держу вас в курсе

//gentoorulz

anonymous
()

короче, решил собрать вторую такую же генту, но с systemd, потому что задолбали эти костыли. уверен почему-то что с системд всё будет работать годно в плане суспенда/восстановления, т.к. там уже есть готовые юниты от нвидии, а свои скрипты для openrc лениво писать. вот и проверим. если баги уйдут, то останусь на systemd

gentoorulz
() автор топика
Последнее исправление: gentoorulz (всего исправлений: 1)

Собрал новую такую же систему, но с systemd, врубил сервисы nvidia-suspend, nvidia-resume, nvidia-hibernate и спящий режим стал работать идеально!

Выходит, всему виной был openrc :( Уверен, что можно было бы подпереть всё это костылями, но желания особого нет этим заниматься.

Единственное с чем сейчас не могу разобраться - почему-то не лочится экран через loginctl lock-session (соответственно и через гуй и после просыпания). А вот через бинарник kscreenlocker_greet врубается. Пока не понял как решить. Систему если что пересобирал с профилем desktop/systemd

gentoorulz
() автор топика
Ответ на: комментарий от gentoorulz

Единственное с чем сейчас не могу разобраться - почему-то не лочится экран через loginctl lock-session (соответственно и через гуй и после просыпания). А вот через бинарник kscreenlocker_greet врубается. Пока не понял как решить. Систему если что пересобирал с профилем desktop/systemd

почему-то kwin был собран без lock. Теперь всё гуд

gentoorulz
() автор топика