The kenel is almost stock ubuntu 5.0.0-16-generic installed from binary DEB package as shipped with ubuntu 18.04. It performs well enough, so I did not bother configuring and compiling custom kernel. The only modification is patched i915 driver (see later).
$ uname -a
Linux x210 5.0.0-16-generic #17~18.04.1-Ubuntu SMP Mon May 20 14:00:27 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Command line, tlp config, little service to disable gpe spam from EC (I have not patched it yet), tlp is patched to reduce number of wakeups:
Code: Select all
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.0.0-16-generic root=UUID=e4923acd-7930-4418-b6ea-af256a4e1b59 ro drm.vblankoffdelay=1 i915.enable_psr=1 r8168.aspm=1 r8168.eee_enable=1 r8168.hwoptimize=1 r8168.debug=0 i915.enable_guc=-1 ath9k.btcoex_enable=0 ath9k.ps_enable=1 ath9k.blink=1 ath9k.bt_ant_diversity=1 pti=off spectre_v2=off l1tf=off nospec_store_bypass_disable no_stf_barrier
$ grep -vE '^#' /etc/default/tlp |grep -vE '^$'
TLP_ENABLE=1
TLP_DEFAULT_MODE=AC
TLP_PERSISTENT_DEFAULT=0
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_HWP_ON_AC=performance
CPU_HWP_ON_BAT=power
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
NMI_WATCHDOG=0
ENERGY_PERF_POLICY_ON_AC=powersave
ENERGY_PERF_POLICY_ON_BAT=powersave
DISK_DEVICES="sda"
DISK_APM_LEVEL_ON_AC="1"
DISK_APM_LEVEL_ON_BAT="1"
SATA_LINKPWR_ON_AC="min_power"
SATA_LINKPWR_ON_BAT="min_power"
AHCI_RUNTIME_PM_ON_AC=auto
AHCI_RUNTIME_PM_ON_BAT=auto
AHCI_RUNTIME_PM_TIMEOUT=15
PCIE_ASPM_ON_AC=powersupersave
PCIE_ASPM_ON_BAT=powersupersave
RADEON_POWER_PROFILE_ON_AC=high
RADEON_POWER_PROFILE_ON_BAT=low
RADEON_DPM_STATE_ON_AC=performance
RADEON_DPM_STATE_ON_BAT=battery
RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=auto
WIFI_PWR_ON_AC=on
WIFI_PWR_ON_BAT=on
WOL_DISABLE=N
SOUND_POWER_SAVE_ON_AC=1
SOUND_POWER_SAVE_ON_BAT=1
SOUND_POWER_SAVE_CONTROLLER=Y
BAY_POWEROFF_ON_AC=0
BAY_POWEROFF_ON_BAT=0
BAY_DEVICE="sr0"
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto
USB_AUTOSUSPEND=1
USB_BLACKLIST="1d50:6089"
USB_BLACKLIST_BTUSB=0
USB_BLACKLIST_PHONE=0
USB_BLACKLIST_PRINTER=1
USB_BLACKLIST_WWAN=1
RESTORE_DEVICE_STATE_ON_STARTUP=0
$ cat /etc/systemd/system/acpi-int.service
[Unit]
Description=Don't [censored] with interrupts
After=network.target
[Service]
ExecStart=/bin/bash -c 'echo mask >/sys/firmware/acpi/interrupts/gpe4F'
Type=oneshot
[Install]
WantedBy=multi-user.target
$ head -n 11 /usr/sbin/tlp
#!/bin/sh
# tlp - adjust power settings
#
# Copyright (c) 2018 Thomas Koch <linrunner at gmx.net>
# This software is licensed under the GPL v2 or later.
# --- Constants
readonly LIBDIR="/usr/share/tlp"
readonly LIBS="tlp-functions tlp-rf-func"
[ j"$1" = jauto -a -f /tmp/tlpst ] && diff /sys/class/power_supply/ADP0/online /tmp/tlpst >/dev/null && exit 0 || cat /sys/class/power_supply/ADP0/online >/tmp/tlpst
I'm using Samsung SSD 970 EVO 500GB and no SATA HDD/SSD.
The LCD is 2880x1920 BOE NV126A1M-N52. It supports PSR, but timings (@60Hz refresh rate) are not supported by i915 driver. However force-enabling PSR works with this panel. The patch (cleaned up a bit by L29Ah) is here:
Code: Select all
diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 84a0fb981561..53c811241979 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -625,9 +625,8 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
if (intel_usecs_to_scanlines(adjusted_mode, psr_setup_time) >
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vdisplay - 1) {
- DRM_DEBUG_KMS("PSR condition failed: PSR setup time (%d us) too long\n",
+ DRM_DEBUG_KMS("PSR condition failed: PSR setup time (%d us) too long, proceeding anyway\n",
psr_setup_time);
- return;
}
crtc_state->has_psr = true;
https://i.imgur.com/WMAaenO.png https://i.imgur.com/OkPTVfZ.png