Closed leonm1 closed 1 month ago
With an up-to-date linux-surface and Linux Mint 21.3 I get the following output:
Intel(R) Core(TM) i5-7300U CPU
NAME="Linux Mint"
PRETTY_NAME="Linux Mint 21.3"
VERSION_CODENAME=virginia
UBUNTU_CODENAME=jammy
uname -r: 6.7.9-surface-1
/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us:32703096
/sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us:32713152
/sys/kernel/debug/pmc_core/package_cstate_show:Package C2 : 57193292
/sys/kernel/debug/pmc_core/package_cstate_show:Package C3 : 4046372
/sys/kernel/debug/pmc_core/package_cstate_show:Package C6 : 68496448
/sys/kernel/debug/pmc_core/package_cstate_show:Package C7 : 1330
/sys/kernel/debug/pmc_core/package_cstate_show:Package C8 : 106530
/sys/kernel/debug/pmc_core/package_cstate_show:Package C9 : 0
/sys/kernel/debug/pmc_core/package_cstate_show:Package C10 : 32557294
/sys/kernel/debug/pmc_core/slp_s0_residency_usec:32592768
Only change from default is the blacklist of surface_gpe
https://github.com/linux-surface/linux-surface/wiki/Known-Issues-and-FAQ#suspend-aka-sleep-vs-lid-closingopening-events
This appears to no longer be an issue on 6.8.7. Thank you for confirming that it was not affecting the normal surface kernel, Tibladar.
S0ix seems to be broken for me with linux-surface kernel 6.7. I was able to reproduce this across several reboots, with both kernels, with and without the dGPU kernel modules loaded.
I've configured systemd to unload the mwifiex_pcie and mwifiex modules before sleep, which seems to have worked for months until the 6.7 kernel.
I don't see any major differences between the two dmesg outputs, so I'm posting this partially to see if anyone else can reproduce this with 6.7, since I don't have any leads on what could cause this.
Environment
linux-surface hash (kernel 6.6): c58cae4193e8007cb1d8a548db759bcdc3ce5c24
linux-surface hash (kernel 6.7): 691fff2d663b02dc8319e12ae31056629bd0123d
Verifying sleep reaches S0ix:
After suspending (
systemctl suspend
) and resuming (lid close+open), you can run the following:If your system is reaching S0ix, you should have non-zero numbers for the following two lines:
Details
Relevant Nix config
``` { config, kernelBuildPkgs, nixos-hardware, linux-surface, lib, ... }: let # Pin the nixpkgs revision used for building the kernel to allow us to update # the rest of the system without rebuilding the kernel. pkgs = kernelBuildPkgs; in { boot.kernelPackages = pkgs.linuxPackages_6_6; boot.kernelPatches = [ { name = "linux-surface-config"; patch = null; extraStructuredConfig = with lib.kernel; { STAGING_MEDIA = yes; FUNCTION_ERROR_INJECTION = yes; }; extraConfig = lib.replaceStrings [ "CONFIG_" "=" ] [ "" " " ] (lib.readFile "${linux-surface}/configs/surface-6.6.config" ); } ] ++ map (pname: { name = "linux-surface-${pname}"; patch = "${linux-surface}/patches/6.6/${pname}.patch"; }) [ "0001-surface3-oemb" "0002-mwifiex" "0003-ath10k" "0004-ipts" "0005-ithc" "0006-surface-sam" "0007-surface-sam-over-hid" "0008-surface-button" "0009-surface-typecover" "0010-surface-shutdown" "0011-surface-gpe" "0012-cameras" "0013-amd-gpio" "0014-rtc" ]; hardware.cpu.intel.updateMicrocode = true; services.udev.packages = [ pkgs.iptsd pkgs.surface-control ]; services.udev.extraRules = '' ACTION=="add", KERNEL=="0000:02:00.0", SUBSYSTEM=="pci", RUN+="${pkgs.surface-control}/bin/surface dgpu set-runtime-pm on" ''; powerManagement = { resumeCommands = '' ${pkgs.kmod}/bin/modprobe mwifiex_pcie mwifiex ''; powerDownCommands = '' ${pkgs.kmod}/bin/modprobe -r mwifiex_pcie mwifiex ''; }; systemd.packages = [ pkgs.iptsd ]; boot.kernelParams = [ "acpi_enforce_resources=lax" ]; environment.systemPackages = with pkgs; [ libcamera surface-control ]; boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ]; boot.kernelModules = [ "v4l2loopback" ]; ### Nvidia hardware # Load the nvidia kernel modules, but blacklist them. They are used to toggle power state to d3cold. services.xserver.videoDrivers = [ "nvidia" ]; hardware.nvidia = { modesetting.enable = true; powerManagement.enable = true; # Prime render offload prime = { offload = { enable = true; enableOffloadCmd = true; }; # From `lspci` intelBusId = "PCI:0:2:0"; nvidiaBusId = "PCI:2:0:0"; }; }; boot.extraModprobeConfig = pkgs.lib.mkOverride 100 '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" video_nr=42 options nvidia NVreg_DynamicPowerManagement=0x02 options nvidia-drm modeset=1 blacklist nvidia-drm blacklist nvidia-modeset blacklist nvidia-uvm blacklist nvidia blacklist i2c_nvidia_gpu alias i2c_nvidia_gpu off ''; specialisation = { nvidia.configuration = { boot.extraModprobeConfig = pkgs.lib.mkOverride 99 '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" video_nr=42 options nvidia NVreg_DynamicPowerManagement=0x02 options nvidia-drm modeset=1 blacklist i2c_nvidia_gpu alias i2c_nvidia_gpu off ''; }; }; services.thermald.enable = true; } ```linux 6.7 S0ix idle report
``` Intel(R) Core(TM) i7-8650U CPU NAME=NixOS PRETTY_NAME="NixOS 24.05 (Uakari)" VERSION_CODENAME=uakari uname -r: 6.7.4 /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us:0 /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us:0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C2 : 67978665 /sys/kernel/debug/pmc_core/package_cstate_show:Package C3 : 19537990 /sys/kernel/debug/pmc_core/package_cstate_show:Package C6 : 0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C7 : 0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C8 : 0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C9 : 0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C10 : 0 /sys/kernel/debug/pmc_core/slp_s0_residency_usec:0 ```linux 6.6 S0ix idle report
``` Intel(R) Core(TM) i7-8650U CPU NAME=NixOS PRETTY_NAME="NixOS 24.05 (Uakari)" VERSION_CODENAME=uakari uname -r: 6.6.14 /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us:55386203 /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us:40798225 /sys/kernel/debug/pmc_core/package_cstate_show:Package C2 : 100758509 /sys/kernel/debug/pmc_core/package_cstate_show:Package C3 : 406357 /sys/kernel/debug/pmc_core/package_cstate_show:Package C6 : 118678 /sys/kernel/debug/pmc_core/package_cstate_show:Package C7 : 597 /sys/kernel/debug/pmc_core/package_cstate_show:Package C8 : 270029 /sys/kernel/debug/pmc_core/package_cstate_show:Package C9 : 0 /sys/kernel/debug/pmc_core/package_cstate_show:Package C10 : 55070092 /sys/kernel/debug/pmc_core/slp_s0_residency_usec:40648088 ```