diff options
24 files changed, 613 insertions, 0 deletions
diff --git a/metadata/pkg_desc_index b/metadata/pkg_desc_index index 8a04dd10..dbf6ff4f 100644 --- a/metadata/pkg_desc_index +++ b/metadata/pkg_desc_index @@ -119,6 +119,8 @@ sys-kernel/kccmp 0.3-r2: A simple tool for comparing two linux kernel .config fi sys-kernel/kconfig-hardened-check 0.5.10 99999999: A script for checking the hardening options in the Linux kernel config sys-kernel/kernel 6.3: A POSIX shell script to compile the kernel with user permissions sys-power/cpupower 99999999: Shows and sets processor power related values +sys-power/pm-quirks 20100619-r1: Video Quirks database for pm-utils +sys-power/pm-utils 1.4.1-r8: Suspend and hibernation utilities virtual/cdrtools 1: Virtual for command-line recorders cdrtools and cdrkit virtual/freedesktop-icon-theme 0-r4: Virtual to choose between different icon themes virtual/man 0-r4: Virtual for man diff --git a/profiles/use.local.desc b/profiles/use.local.desc index 7c631b5c..a2e07f49 100644 --- a/profiles/use.local.desc +++ b/profiles/use.local.desc @@ -215,6 +215,7 @@ sys-fs/squashfs-tools:xz - Enable support for XZ ("LZMA2") compression using app sys-fs/squashfs-tools:zstd - Enable support for ZSTD compression using app-arch/zstd (requires >=linux-4.14 or >=sys-fs/squashfuse-0.1.101_alpha20170917) sys-fs/squashfuse:lz4 - Enable support for lz4 compression sys-fs/squashfuse:zstd - Enable support for zstd compression +sys-power/pm-utils:ntp - Install support for net-misc/ntp x11-libs/gtk+:adwaita-icon-theme - Force the adwaita-icon-theme x11-libs/gtk+:atk-bridge - Enable the gtk3-atk-bridge, hard depending on app-accessibility/at-spi2-atk and thus on sys-apps/dbus x11-libs/gtk+:broadway - Enable the GDK Broadway backend. diff --git a/sys-power/pm-quirks/Manifest b/sys-power/pm-quirks/Manifest new file mode 100644 index 00000000..65b6f074 --- /dev/null +++ b/sys-power/pm-quirks/Manifest @@ -0,0 +1 @@ +DIST pm-quirks-20100619.tar.gz 10033 BLAKE2B dd6e455ac8dd76789b0698cce77be682e886afdc2ae547850e10c091b0f531609f8bf071cd87182dc0533585444220a1ed266dc04bfaed132671a65d56d9bfc8 SHA512 e20244fb72475945e08010d7ec19db2c017c1a04fa01d3d08c03d704d7f07f9c087bac6a5a44242cc8ed6cec5db47bc06a8862dd0f74088a565d37b6d7b95afc diff --git a/sys-power/pm-quirks/metadata.xml b/sys-power/pm-quirks/metadata.xml new file mode 100644 index 00000000..f8435578 --- /dev/null +++ b/sys-power/pm-quirks/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>freedesktop-bugs@gentoo.org</email> + <name>Gentoo Freedesktop Project</name> + </maintainer> +</pkgmetadata> diff --git a/sys-power/pm-quirks/pm-quirks-20100619-r1.ebuild b/sys-power/pm-quirks/pm-quirks-20100619-r1.ebuild new file mode 100644 index 00000000..5dcaccd0 --- /dev/null +++ b/sys-power/pm-quirks/pm-quirks-20100619-r1.ebuild @@ -0,0 +1,20 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Video Quirks database for pm-utils" +HOMEPAGE="https://pm-utils.freedesktop.org/" +SRC_URI="https://pm-utils.freedesktop.org/releases/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm ~arm64 ~ia64 ~mips ppc ppc64 s390 sparc x86" +IUSE="" + +S="${WORKDIR}" + +src_install() { + insinto /usr/$(get_libdir)/pm-utils + doins -r video-quirks +} diff --git a/sys-power/pm-utils/Manifest b/sys-power/pm-utils/Manifest new file mode 100644 index 00000000..49d7b907 --- /dev/null +++ b/sys-power/pm-utils/Manifest @@ -0,0 +1 @@ +DIST pm-utils-1.4.1.tar.gz 208687 BLAKE2B dde7992acf1b28378021f4bd433a8e08c37bb35035af19d8b811cf8a22c141ded5cc02caf3e2ffd7119592eefcd941e4ddebb0dfbe715007788ea201cb96d073 SHA512 5bc9479fe75f120aee136befeb24c8d7d85f61410b551177ed61fd1b4ea9cce7989796b067e357ea93b44b4ae9f66311687066f188236c5efdfd3750695a8017 diff --git a/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch b/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch new file mode 100644 index 00000000..b41f32cf --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch @@ -0,0 +1,43 @@ +From 640b53438c20818b3e344343b58b1f1765606a85 Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Mon, 31 Jan 2011 15:30:01 +0100 +Subject: [PATCH] 49bluetooth: Wait for btusb module to get unused + +The 49bluetooth hook disables /proc/acpi/ibm/bluetooth but this isn't +synchronous, i. e. it doesn't wait until the module usage count actually drops +to 0. Due to that, it's impossible to add btusb to SUSPEND_MODULES (on some +models/older kernels you need to do that to fix suspend problems), as at that +point the module is still in use. + +On my system (ThinkPad X201) the module takes between 0.3 and 0.5 seconds to +unload, so use 100 ms wait steps with a timeout of 2 seconds. + +Bug: https://bugs.freedesktop.org//show_bug.cgi?id=33759 +Bug-Ubuntu: https://launchpad.net/bugs/698331 +--- + pm/sleep.d/49bluetooth | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/pm/sleep.d/49bluetooth b/pm/sleep.d/49bluetooth +index d46ba49..0dc1909 100755 +--- a/pm/sleep.d/49bluetooth ++++ b/pm/sleep.d/49bluetooth +@@ -12,6 +12,15 @@ suspend_bluetooth() + if grep -q enabled /proc/acpi/ibm/bluetooth; then + savestate ibm_bluetooth enable + echo disable > /proc/acpi/ibm/bluetooth ++ ++ # wait for up to 2 seconds for the module to actually get ++ # unused ++ TIMEOUT=20 ++ while [ $TIMEOUT -ge 0 ]; do ++ [ `cat /sys/module/btusb/refcnt` = 0 ] && break ++ TIMEOUT=$((TIMEOUT-1)) ++ sleep 0.1 ++ done + else + savestate ibm_bluetooth disable + fi +-- +1.7.2.3 + diff --git a/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch b/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch new file mode 100644 index 00000000..69d75e28 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch @@ -0,0 +1,24 @@ +Description: Disable SATA link power management by default, as it still causes disk errors and corruptions on many hardware. +Author: Martin Pitt <martin.pitt@ubuntu.com> +Bug-Ubuntu: https://launchpad.net/bugs/539467 + +--- 1/pm/power.d/sata_alpm ++++ 1/pm/power.d/sata_alpm +@@ -2,7 +2,7 @@ + + . "${PM_FUNCTIONS}" + +-SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-true} ++SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-false} + + help() { + cat <<EOF +@@ -16,7 +16,7 @@ + + This hook has 1 parameter: + SATA_ALPM_ENABLE = whether to use SATA ALPM on battery. +-Defaults to "true". ++Defaults to "false". + + EOF + } diff --git a/sys-power/pm-utils/files/1.4.1-echo-n.patch b/sys-power/pm-utils/files/1.4.1-echo-n.patch new file mode 100644 index 00000000..354ccb6a --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-echo-n.patch @@ -0,0 +1,51 @@ +From ffce4bc35a34b6b543e2ae2828a3096a19ebb1ae Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gentoo.org> +Date: Tue, 28 Jul 2015 22:24:56 -0400 +Subject: [PATCH] Avoid -n in "echo -n foo > /sys/bar" + +It's not portable and not needed. + +https://bugs.freedesktop.org/show_bug.cgi?id=91497 + +[ Rebased on top of Gentoo's -r6 patchset. ] +--- + pm/pm-functions.in | 8 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/pm/pm-functions.in b/pm/pm-functions.in +index c82be30..a68f955 100644 +--- a/pm/pm-functions.in ++++ b/pm/pm-functions.in +@@ -296,13 +296,13 @@ + if [ -z "$SUSPEND_MODULE" ]; then + if grep -q mem /sys/power/state; then + SUSPEND_MODULE="kernel" +- do_suspend() { echo -n "mem" >/sys/power/state; } ++ do_suspend() { echo "mem" >/sys/power/state; } + elif [ -c /dev/pmu ] && pm-pmu --check; then + SUSPEND_MODULE="kernel" + do_suspend() { pm-pmu --suspend; } + elif grep -q standby /sys/power/state; then + SUSPEND_MODULE="kernel" +- do_suspend() { echo -n "standby" >/sys/power/state; } ++ do_suspend() { echo "standby" >/sys/power/state; } + fi + fi + +@@ -317,10 +317,10 @@ + HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \ + HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \ + HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \ +- echo -n "${HIBERNATE_MODE}" > /sys/power/disk +- echo -n "disk" > /sys/power/state ++ echo "${HIBERNATE_MODE}" > /sys/power/disk ++ echo "disk" > /sys/power/state + RET=$? +- echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk ++ echo "$HIBERNATE_MODE_SAVE" > /sys/power/disk + return "$RET" + } + fi +-- +2.4.6 + diff --git a/sys-power/pm-utils/files/1.4.1-fix-alpm-typo.patch b/sys-power/pm-utils/files/1.4.1-fix-alpm-typo.patch new file mode 100644 index 00000000..79936915 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-fix-alpm-typo.patch @@ -0,0 +1,29 @@ +From 93d46b88f415c1931b017856e3162c192bfba07c Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Wed, 11 Jan 2012 15:39:53 +0100 +Subject: [PATCH 3/3] Fix typo in sata_alpm +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +ALPM → APLM + +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=44676 +Bug-Ubuntu: https://launchpad.net/bugs/900930 +--- + pm/power.d/sata_alpm | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pm/power.d/sata_alpm b/pm/power.d/sata_alpm +index 5ede307..400e1e7 100644 +--- a/pm/power.d/sata_alpm ++++ b/pm/power.d/sata_alpm +@@ -28,7 +28,7 @@ set_sata_alpm() { + [ "${kv%-*}" \< "2.6.33" ] && exit $NA # avoid fs corruption + for f in /sys/class/scsi_host/host*; do + [ -w "$f/link_power_management_policy" ] || continue +- printf "Setting SATA APLM on %s to %s..." "${f##*/}" "$1" ++ printf "Setting SATA ALPM on %s to %s..." "${f##*/}" "$1" + echo "$1" > "$f/link_power_management_policy" && echo Done. || \ + echo Failed. + done diff --git a/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch b/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch new file mode 100644 index 00000000..2d884da1 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch @@ -0,0 +1,40 @@ +From: Florian Kriener <florian@kriener.org> +To: submit@bugs.debian.org +Subject: [pm-utils] wrong path in intel-audio-powersave (and a small bug) +Date: Sat, 25 Sep 2010 11:27:30 +0200 + +In the script intel-audio-powersave is this loop + +for dev in /sys/module/snd_*/parameters/power_save; do + [ -w "$dev/parameters/power_save" ] || continue + printf "Setting power savings for $s to %d..." "$dev##*/" "$1" + echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed. +done + +I think it should be + +for dev in /sys/module/snd_*; do + [ -w "$dev/parameters/power_save" ] || continue + printf "Setting power savings for %s to %d..." "${dev##*/}" "$1" + echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed. +done + + +This fixes the two bugs. + +diff --git a/pm/power.d/intel-audio-powersave b/pm/power.d/intel-audio-powersave +index 36675a8..da63e40 100644 +--- a/pm/power.d/intel-audio-powersave ++++ b/pm/power.d/intel-audio-powersave +@@ -20,9 +20,9 @@ EOF + + audio_powersave() { + [ "$INTEL_AUDIO_POWERSAVE" = "true" ] || exit $NA +- for dev in /sys/module/snd_*/parameters/power_save; do ++ for dev in /sys/module/snd_*; do + [ -w "$dev/parameters/power_save" ] || continue +- printf "Setting power savings for $s to %d..." "$dev##*/" "$1" ++ printf "Setting power savings for %s to %d..." "${dev##*/}" "$1" + echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed. + done + } diff --git a/sys-power/pm-utils/files/1.4.1-ignore-led-failure.patch b/sys-power/pm-utils/files/1.4.1-ignore-led-failure.patch new file mode 100644 index 00000000..bf0ff55f --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-ignore-led-failure.patch @@ -0,0 +1,14 @@ +Description: LED operation should not block S3/S4 +Author: Adam Lee <adam8157@gmail.com> + +Some Lenovo Thinkpad models don't have a suspend LED, this should not +block S3/S4. + +--- 1/pm/sleep.d/95led ++++ 1/pm/sleep.d/95led +@@ -14,3 +14,5 @@ + *) exit $NA + ;; + esac ++ ++exit 0 diff --git a/sys-power/pm-utils/files/1.4.1-inhibit-on-right-status.patch b/sys-power/pm-utils/files/1.4.1-inhibit-on-right-status.patch new file mode 100644 index 00000000..18e882c2 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-inhibit-on-right-status.patch @@ -0,0 +1,20 @@ +Description: Do not use the exit status of log rather the exit status of the hook. + +http://bugs.freedesktop.org/show_bug.cgi?id=32210 +http://bugs.gentoo.org/360673 + +--- 1/pm/pm-functions.in ++++ 1/pm/pm-functions.in +@@ -197,9 +197,11 @@ + # rest of args passed to hook unchanged. + log "Running hook $*:" + hook_ok "$1" && "$@" ++ # log() changes the return value, so save it for later ++ local status=$? + log "" + log -n "$*: " +- hook_exit_status $? && LAST_HOOK="${1##*/}" || inhibit ++ hook_exit_status $status && LAST_HOOK="${1##*/}" || inhibit + } + + if profiling; then diff --git a/sys-power/pm-utils/files/1.4.1-logging-append.patch b/sys-power/pm-utils/files/1.4.1-logging-append.patch new file mode 100644 index 00000000..b346986e --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-logging-append.patch @@ -0,0 +1,17 @@ +Author: James Westby <james.westby@ubuntu.com> +Description: Do not clear the log file on each operation, but instead append to it. + This makes debugging of several suspends much easier. +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25255 +Bug-Ubuntu: https://launchpad.net/bugs/410352 + +--- 1/pm/pm-functions.in ++++ 1/pm/pm-functions.in +@@ -271,7 +271,7 @@ + return 1 + fi + export LOGGING=true +- exec > "$1" 2>&1 ++ exec >> "$1" 2>&1 + } + + check_suspend() { [ -n "$SUSPEND_MODULE" ]; } diff --git a/sys-power/pm-utils/files/1.4.1-run-hook-logging.patch b/sys-power/pm-utils/files/1.4.1-run-hook-logging.patch new file mode 100644 index 00000000..86ae43f2 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-run-hook-logging.patch @@ -0,0 +1,17 @@ +Description: In suspend log, put empty line after running the hook, not in between. +Author: Dominique Brazziel <dbrazziel@snet.net> +Bug-Debian: http://bugs.debian.org/661168 + +--- 1/pm/pm-functions.in ++++ 1/pm/pm-functions.in +@@ -199,9 +199,9 @@ + hook_ok "$1" && "$@" + # log() changes the return value, so save it for later + local status=$? +- log "" + log -n "$*: " + hook_exit_status $status && LAST_HOOK="${1##*/}" || inhibit ++ log "" + } + + if profiling; then diff --git a/sys-power/pm-utils/files/1.4.1-suspend-hybrid.patch b/sys-power/pm-utils/files/1.4.1-suspend-hybrid.patch new file mode 100644 index 00000000..96e00810 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-suspend-hybrid.patch @@ -0,0 +1,36 @@ +Description: Add support for in-kernel suspend to both +Author: Bojan Smojver <bojan@rexursive.com> +Author: Jaroslav Škarvada <jskarvad@redhat.com> +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=52572 +Bug-Ubuntu: https://launchpad.net/bugs/1172692 + +--- 1/pm/pm-functions.in ++++ 1/pm/pm-functions.in +@@ -336,8 +336,28 @@ + { + [ -n "${HIBERNATE_MODE}" ] && \ + grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \ ++ HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \ ++ HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \ ++ HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \ + echo -n "${HIBERNATE_MODE}" > /sys/power/disk + echo -n "disk" > /sys/power/state ++ RET=$? ++ echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk ++ return "$RET" ++ } ++fi ++ ++# for kernels that support suspend to both (i.e. hybrid suspend) ++# since kernel 3.6 ++if [ -z "$SUSPEND_HYBRID_MODULE" ] && \ ++ [ -f /sys/power/disk ] && \ ++ grep -q disk /sys/power/state && \ ++ grep -q suspend /sys/power/disk; then ++ SUSPEND_HYBRID_MODULE="kernel" ++ do_suspend_hybrid() ++ { ++ HIBERNATE_MODE="suspend" ++ do_hibernate + } + fi diff --git a/sys-power/pm-utils/files/1.4.1-uswsusp-hibernate-mode.patch b/sys-power/pm-utils/files/1.4.1-uswsusp-hibernate-mode.patch new file mode 100644 index 00000000..27058d06 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-uswsusp-hibernate-mode.patch @@ -0,0 +1,19 @@ +Description: Check HIBERNATE_MODE in uswsusp module +Author: Vadim Solomin <vadic052@gmail.com> +Bug-Debian: http://bugs.debian.org/589553 + +--- 1/pm/module.d/uswsusp ++++ 1/pm/module.d/uswsusp +@@ -87,7 +87,11 @@ + HIBERNATE_MODULE="uswsusp" + do_hibernate() + { +- s2disk ++ if [ -n "$HIBERNATE_MODE" ]; then ++ s2disk -P "shutdown method=$HIBERNATE_MODE" ++ else ++ s2disk ++ fi + } + fi + diff --git a/sys-power/pm-utils/files/1.4.1-xfs_buffer_arguments.patch b/sys-power/pm-utils/files/1.4.1-xfs_buffer_arguments.patch new file mode 100644 index 00000000..3eee9116 --- /dev/null +++ b/sys-power/pm-utils/files/1.4.1-xfs_buffer_arguments.patch @@ -0,0 +1,31 @@ +From fdc626dadfd985e823f4e828f2a542c945aea219 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@st.com> +Date: Tue, 10 Jan 2012 11:21:02 +0100 +Subject: [PATCH 2/2] pm/power.d/xfs_buffer: Fix wrong argument ordering + +Write the values in the correct order. + +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=44620 +Bug-Ubuntu: https://launchpad.net/bugs/645974 + +Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com> +--- + pm/power.d/xfs_buffer | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/pm/power.d/xfs_buffer b/pm/power.d/xfs_buffer +index d21e845..9f06f6e 100644 +--- a/pm/power.d/xfs_buffer ++++ b/pm/power.d/xfs_buffer +@@ -59,7 +59,7 @@ xfs_ac() { + xfs_battery() { + state_exists xfs_buffer_default || \ + read_values |savestate xfs_buffer_default +- write_values "$XFS_AGE_BUFFER" "$XFS_BUFD" "$XFS_SYNCD" ++ write_values "$XFS_AGE_BUFFER" "$XFS_SYNCD" "$XFS_BUFD" + } + + case $1 in +-- +1.7.7.3 + diff --git a/sys-power/pm-utils/files/pm-utils.logrotate b/sys-power/pm-utils/files/pm-utils.logrotate new file mode 100644 index 00000000..85de4003 --- /dev/null +++ b/sys-power/pm-utils/files/pm-utils.logrotate @@ -0,0 +1,8 @@ +/var/log/pm-suspend.log /var/log/pm-powersave.log { + monthly + rotate 4 + delaycompress + compress + notifempty + missingok +} diff --git a/sys-power/pm-utils/files/power.d/pci_devices b/sys-power/pm-utils/files/power.d/pci_devices new file mode 100644 index 00000000..c06b706d --- /dev/null +++ b/sys-power/pm-utils/files/power.d/pci_devices @@ -0,0 +1,61 @@ +#!/bin/sh + +# +# This script adjusts the power control of a set of PCI devices that +# prove beneficial to enable power savings +# + +PCI_DEVICES_PM_ENABLE="${PCI_DEVICES_PM_ENABLE:-true}" + +set_pci_device() +{ + for dev in /sys/bus/pci/devices/* ; do + if [ -e $dev/class -a -e $dev/power/control ]; then + id=`basename $dev` + case `cat $dev/class` in + 0x020000) # ethernet + echo "Setting Ethernet device $id to $1" + echo $1 > $dev/power/control + ;; + 0x028000) # wireless + echo "Setting Wireless device $id to $1" + echo $1 > $dev/power/control + ;; + 0x040300) # audio + echo "Setting Audio device $id to $1" + echo $1 > $dev/power/control + ;; + 0x060000) # host bridge + echo "Setting Host Bridge $id to $1" + echo $1 > $dev/power/control + ;; + 0x080500) # SD card reader + echo "Setting SD card reader device $id to $1" + echo $1 > $dev/power/control + ;; + 0x088000|0x088001) # card reader + echo "Setting card reader device $id to $1" + echo $1 > $dev/power/control + ;; + 0x0c0000|0x0c0010) # firewire + echo "Setting FireWire device $id to $1" + echo $1 > $dev/power/control + ;; + esac + fi + done +} + +case "$1" in + true) # powersaving on + [ "$PCI_DEVICES_PM_ENABLE" = true ] && set_pci_device "auto" + ;; + false) # powersaving off + [ "$PCI_DEVICES_PM_ENABLE" = true ] && set_pci_device "on" + ;; + *) + exit 254 + ;; +esac + +exit 0 diff --git a/sys-power/pm-utils/files/power.d/usb_bluetooth b/sys-power/pm-utils/files/power.d/usb_bluetooth new file mode 100644 index 00000000..615d19e9 --- /dev/null +++ b/sys-power/pm-utils/files/power.d/usb_bluetooth @@ -0,0 +1,45 @@ +#!/bin/sh + +# +# This script adjusts the USB bluetooth device settings via the USB +# power control. This simply sets this to "auto" for power saving and to "on" +# for non-power saving. This has been shown to save about 1W on some +# systems. +# +# According to http://www.usb.org/developers/defined_class +# USB wireless bluetooth devices have baseclass 0xe0, subclass 0x01, +# protocol 0x01 +# + +USB_BLUETOOTH_PM_ENABLE="${USB_BLUETOOTH_PM_ENABLE:-true}" + +set_usb_bluetooth() +{ + for dev in /sys/bus/usb/devices/* ; do + if [ -e $dev/bDeviceClass -a \ + -e $dev/bDeviceSubClass -a \ + -e $dev/bDeviceProtocol -a \ + -e $dev/power/control ]; then + if [ x`cat $dev/bDeviceClass` = xe0 -a \ + x`cat $dev/bDeviceSubClass` = x01 -a \ + x`cat $dev/bDeviceProtocol` = x01 ]; then + echo Setting $dev to $1 + echo $1 > $dev/power/control + fi + fi + done +} + +case "$1" in + true) # powersaving on + [ "$USB_BLUETOOTH_PM_ENABLE" = true ] && set_usb_bluetooth "auto" + ;; + false) # powersaving off + [ "$USB_BLUETOOTH_PM_ENABLE" = true ] && set_usb_bluetooth "on" + ;; + *) + exit 254 + ;; +esac + +exit 0 diff --git a/sys-power/pm-utils/files/sleep.d/50unload_alx b/sys-power/pm-utils/files/sleep.d/50unload_alx new file mode 100644 index 00000000..6d352c50 --- /dev/null +++ b/sys-power/pm-utils/files/sleep.d/50unload_alx @@ -0,0 +1,18 @@ +#!/bin/sh + +# 50unload_alx: unload the alx module during suspend (LP #1173952) + +[ -d /sys/module/alx ] || exit 0 + +. "${PM_FUNCTIONS}" + +case "$1" in + suspend) + echo "Unloading alx kernel module ..." + modunload alx && echo Done. || echo Failed. + ;; + resume) + echo "Reloading alx kernel module ..." + ;; +esac +exit 0 diff --git a/sys-power/pm-utils/metadata.xml b/sys-power/pm-utils/metadata.xml new file mode 100644 index 00000000..26e2876f --- /dev/null +++ b/sys-power/pm-utils/metadata.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>freedesktop-bugs@gentoo.org</email> + </maintainer> + <use> + <flag name="ntp">Install support for <pkg>net-misc/ntp</pkg></flag> + </use> +</pkgmetadata> diff --git a/sys-power/pm-utils/pm-utils-1.4.1-r8.ebuild b/sys-power/pm-utils/pm-utils-1.4.1-r8.ebuild new file mode 100644 index 00000000..de2ae51c --- /dev/null +++ b/sys-power/pm-utils/pm-utils-1.4.1-r8.ebuild @@ -0,0 +1,97 @@ +# Copyright 1999-2022 Gentoo Authors and Martin V\"ath +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit multilib + +DESCRIPTION="Suspend and hibernation utilities" +HOMEPAGE="https://pm-utils.freedesktop.org/" +SRC_URI="https://pm-utils.freedesktop.org/releases/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm ~arm64 ~ia64 ~mips ppc ppc64 s390 sparc x86" +IUSE="alsa debug ntp video_cards_intel video_cards_radeon" + +vbetool="!video_cards_intel? ( sys-apps/vbetool )" +RDEPEND="!<app-laptop/laptop-mode-tools-1.55-r1 + !sys-power/powermgmt-base[-pm-utils(+)] + sys-apps/dbus + >=sys-apps/util-linux-2.13 + sys-power/pm-quirks + alsa? ( media-sound/alsa-utils ) + ntp? ( || ( net-misc/ntp net-misc/openntpd ) ) + amd64? ( ${vbetool} ) + x86? ( ${vbetool} ) + video_cards_radeon? ( sys-apps/radeontool )" +DEPEND="${RDEPEND}" + +DOCS="AUTHORS ChangeLog NEWS pm/HOWTO* README* TODO" + +PATCHES=( + "${FILESDIR}"/${PV}-bluetooth-sync.patch + "${FILESDIR}"/${PV}-disable-sata-alpm.patch + "${FILESDIR}"/${PV}-fix-intel-audio-powersave-hook.patch + "${FILESDIR}"/${PV}-logging-append.patch + "${FILESDIR}"/${PV}-fix-alpm-typo.patch + "${FILESDIR}"/${PV}-inhibit-on-right-status.patch + "${FILESDIR}"/${PV}-ignore-led-failure.patch + "${FILESDIR}"/${PV}-run-hook-logging.patch + "${FILESDIR}"/${PV}-suspend-hybrid.patch + "${FILESDIR}"/${PV}-uswsusp-hibernate-mode.patch + "${FILESDIR}"/${PV}-xfs_buffer_arguments.patch + "${FILESDIR}"/${PV}-echo-n.patch +) + +src_prepare() { + local ignore="01grub" + use ntp || ignore+=" 90clock" + + use debug && echo 'PM_DEBUG="true"' > "${T}"/gentoo + echo "HOOK_BLACKLIST=\"${ignore}\"" >> "${T}"/gentoo + + default +} + +src_configure() { + econf --disable-doc +} + +src_install() { + default + doman man/*.{1,8} + + # Remove duplicate documentation install + rm -r "${ED}"/usr/share/doc/${PN} + + insinto /etc/pm/config.d + doins "${T}"/gentoo + + insinto /etc/logrotate.d + newins "${FILESDIR}"/${PN}.logrotate ${PN} #408091 + + exeinto /usr/$(get_libdir)/${PN}/sleep.d + doexe "${FILESDIR}"/sleep.d/50unload_alx + + exeinto /usr/$(get_libdir)/${PN}/power.d + doexe "${FILESDIR}"/power.d/{pci_devices,usb_bluetooth} + + # No longer required with current networkmanager (rm -f from debian/rules) + rm -f "${ED}"/usr/$(get_libdir)/${PN}/sleep.d/55NetworkManager + + # No longer required with current kernels (rm -f from debian/rules) + rm -f "${ED}"/usr/$(get_libdir)/${PN}/sleep.d/49bluetooth + + # Punt HAL related file wrt #401257 (rm -f from debian/rules) + rm -f "${ED}"/usr/$(get_libdir)/${PN}/power.d/hal-cd-polling + + # Punt hooks which have shown to not reduce, or even increase power usage + # (rm -f from debian rules) + rm -f "${ED}"/usr/$(get_libdir)/${PN}/power.d/{journal-commit,readahead} + + # Remove hooks which are not stable enough yet (rm -f from debian/rules) + rm -f "${ED}"/usr/$(get_libdir)/${PN}/power.d/harddrive + + # Change to executable (chmod +x from debian/rules) + fperms +x /usr/$(get_libdir)/${PN}/defaults +} |