LINUX.ORG.RU

История изменений

Исправление azako, (текущая версия) :

Да вроде никакого колдовства особо. Вот вроде все мои конфиги, касающиеся оптимуса. Сейчас на арче так, но конфиги переносил из генты где так же все работало идеально. Возможно как отправная точка пригодится, потому что как там с AMD я хз.

➜ uname -a
Linux lair 5.10.32-1-lts #1 SMP Wed, 21 Apr 2021 12:28:13 +0000 x86_64 GNU/Linux
➜ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile) (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation TU106GLM [Quadro RTX 3000 Mobile / Max-Q] (rev a1)
➜ modinfo nvidia | grep version
version:        465.24.02
srcversion:     346F5A4224D0AAD51F81F28

/etc/modprobe.d/blacklist.conf

blacklist pcspkr
blacklist nouveau
blacklist nvidia
blacklist i2c_nvidia_gpu
blacklist ucsi_ccg

/etc/modprobe.d/nvidia-pm.conf

options nvidia "NVreg_DynamicPowerManagement=0x02"
options nvidia_drm modeset=1
options nvidia NVreg_UsePageAttributeTable=1 NVreg_InitializeSystemMemoryAllocations=0 NVreg_EnableStreamMemOPs=1 NVreg_EnablePCIeGen3=1 NVreg_EnablePCIERelaxedOrderingMode=1

/etc/modprobe.d/nvidia-rmmod.conf

remove nvidia modprobe -r --ignore-remove nvidia-drm nvidia-modeset nvidia-uvm nvidia

Немного шаманства с udev правилами, из оф документации если переносить - были непонятки с засыпанием/просыпанием, такой вариант работает у меня. /etc/udev/rules.d/80-nvidia-pm.rules

# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"

# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"

/etc/X11/xorg.conf.d/optimus.conf

Section "ServerLayout"
        Identifier "layout"
        Screen 0 "intel"
        Inactive "nvidia"
        Option "AllowNVIDIAGPUScreens"
EndSection

Section "Device"
        Identifier "nvidia"
        Driver "nvidia"
EndSection

Section "Screen"
        Identifier "nvidia"
        Device "nvidia"
EndSection

Section "Device"
        Identifier "intel"
        Driver "intel"
        BusID "PCI:0:2:0"
EndSection

Section "Screen"
        Identifier "intel"
        Device "intel"
EndSection

Вроде ничего не забыл.

Исходная версия azako, :

Да вроде никакого колдовства особо. Вот вроде все мои конфиги, касающиеся оптимуса. Сейчас на арче так, но конфиги переносил из генты где так же все работало идеально.

➜ uname -a
Linux lair 5.10.32-1-lts #1 SMP Wed, 21 Apr 2021 12:28:13 +0000 x86_64 GNU/Linux
➜ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile) (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation TU106GLM [Quadro RTX 3000 Mobile / Max-Q] (rev a1)
➜ modinfo nvidia | grep version
version:        465.24.02
srcversion:     346F5A4224D0AAD51F81F28

/etc/modprobe.d/blacklist.conf

blacklist pcspkr
blacklist nouveau
blacklist nvidia
blacklist i2c_nvidia_gpu
blacklist ucsi_ccg

/etc/modprobe.d/nvidia-pm.conf

options nvidia "NVreg_DynamicPowerManagement=0x02"
options nvidia_drm modeset=1
options nvidia NVreg_UsePageAttributeTable=1 NVreg_InitializeSystemMemoryAllocations=0 NVreg_EnableStreamMemOPs=1 NVreg_EnablePCIeGen3=1 NVreg_EnablePCIERelaxedOrderingMode=1

/etc/modprobe.d/nvidia-rmmod.conf

remove nvidia modprobe -r --ignore-remove nvidia-drm nvidia-modeset nvidia-uvm nvidia

Немного шаманства с udev правилами, из оф документации если переносить - были непонятки с засыпанием/просыпанием, такой вариант работает у меня. /etc/udev/rules.d/80-nvidia-pm.rules

# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"

# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"

/etc/X11/xorg.conf.d/optimus.conf

Section "ServerLayout"
        Identifier "layout"
        Screen 0 "intel"
        Inactive "nvidia"
        Option "AllowNVIDIAGPUScreens"
EndSection

Section "Device"
        Identifier "nvidia"
        Driver "nvidia"
EndSection

Section "Screen"
        Identifier "nvidia"
        Device "nvidia"
EndSection

Section "Device"
        Identifier "intel"
        Driver "intel"
        BusID "PCI:0:2:0"
EndSection

Section "Screen"
        Identifier "intel"
        Device "intel"
EndSection

Вроде ничего не забыл.