dumpyourvms: linux 6.4 amdgpu switcheroo fixes

This commit is contained in:
teutat3s 2023-05-05 18:13:19 +02:00
parent c06c2c7fe9
commit c06e6d4cd1
Signed by: teutat3s
GPG key ID: 4FA1D3FA524F22C1

View file

@ -36,9 +36,7 @@ in {
# Explicitly set amdgpu support in place of radeon
# Source: https://github.com/NixOS/nixos-hardware/blob/master/common/gpu/amd/southern-islands/default.nix
# Try again after https://lists.freedesktop.org/archives/amd-gfx/2023-March/090096.html lands
# Maybe linux kernel 6.3?
#boot.kernelParams = ["acpi_backlight=video" "hid_apple.fnmode=2" "intel_pstate=passive" "radeon.si_support=0" "amdgpu.si_support=1"];
boot.kernelParams = ["acpi_backlight=video" "hid_apple.fnmode=2" "intel_pstate=passive"];
boot.kernelParams = ["acpi_backlight=video" "hid_apple.fnmode=2" "intel_pstate=passive" "radeon.si_support=0" "amdgpu.si_support=1"];
boot.loader.efi.canTouchEfiVariables = true;
# Fix for Error switching console mode to 1: unsupported on startup
@ -80,29 +78,22 @@ in {
# https://ubuntuforums.org/showthread.php?t=2409856
services.cron.systemCronJobs = [
"@reboot root ${pkgs.util-linux}/bin/rfkill block bluetooth"
"@reboot root ${pkgs.coreutils}/bin/sleep 11; ${pkgs.coreutils}/bin/echo 510 > /sys/class/backlight/gmux_backlight/brightness"
];
# Disable dedicated GPU, use integrated Intel GPU to save battery
# https://github.com/NixOS/nixpkgs/pull/33915
systemd.services."amd-hybrid-graphics" = {
path = [pkgs.bash];
description = "Disable AMD Card";
systemd.services."amd-hybrid-graphics-power-save" = {
path = [pkgs.bash pkgs.coreutils];
description = "Power Off dedicated AMD Card to reduce power usage";
after = ["sys-kernel-debug.mount"];
before = ["systemd-vconsole-setup.service" "display-manager.service"];
requires = ["sys-kernel-debug.mount" "vgaswitcheroo.path"];
requires = ["sys-kernel-debug.mount"];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.bash}/bin/sh -c 'echo -e \"IGD\\nOFF\" > /sys/kernel/debug/vgaswitcheroo/switch'";
ExecStart = "${pkgs.bash}/bin/sh -c 'sleep 8 && echo -e \"IGD\\nOFF\" > /sys/kernel/debug/vgaswitcheroo/switch'";
ExecStop = "${pkgs.bash}/bin/sh -c 'echo ON >/sys/kernel/debug/vgaswitcheroo/switch'";
};
};
systemd.paths."vgaswitcheroo" = {
pathConfig = {
PathExists = "/sys/kernel/debug/vgaswitcheroo/switch";
Unit = "amd-hybrid-graphics.service";
};
wantedBy = ["multi-user.target"];
};
@ -125,12 +116,20 @@ in {
# brcmfmac being loaded during hibernation would inhibit a successful resume
# https://bugzilla.kernel.org/show_bug.cgi?id=101681#c116.
# Also brcmfmac could randomly crash on resume from sleep.
# For hibernate successfully using the amdgpu driver, the dedicated GPU needs
# to be powered on.
powerUpCommands = lib.mkBefore ("${pkgs.kmod}/bin/modprobe brcmfmac"
+ lib.optionalString
(lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.2") " brcmfmac_wcc");
powerDownCommands = lib.mkBefore ("${pkgs.kmod}/bin/rmmod brcmfmac"
+ lib.optionalString
(lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.2") " brcmfmac_wcc");
powerDownCommands = lib.mkBefore (
lib.optionalString
(lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.2")
"${pkgs.kmod}/bin/rmmod brcmfmac_wcc\n"
+ ''
${pkgs.kmod}/bin/rmmod brcmfmac
${pkgs.systemd}/bin/systemctl stop amd-hybrid-graphics-power-save.service
''
);
};
# Change lid switch behaviour
@ -175,6 +174,9 @@ in {
hardware.firmware = with pkgs; [wireless-regdb];
boot.extraModprobeConfig = ''
options cfg80211 ieee80211_regdom="DE"
# Enable the integrated GPU (iGPU) Intel i915 by default if present
options apple-gmux force_igd=y
'';
# This value determines the NixOS release from which the default