hdparm settings configured in laptop-mode being overwritten by some kernel api (almost) every time when switching to BATTERY state and never become actual. kernel 2.6.38-r1 Reproducible: Sometimes Steps to Reproduce: 1. configure laptop-mode (/etc/laptop-mode/laptop-mode.conf): ENABLE_LAPTOP_MODE_TOOLS=1 VERBOSE_OUTPUT=1 ENABLE_LAPTOP_MODE_ON_BATTERY=1 CONTROL_HD_POWERMGMT="auto" BATT_HD_POWERMGMT=128 2. check current hdparm settings: hdparm -B /dev/sda /dev/sda: APM_level = 254 3. unplug AC (switch to battery) Actual Results: # hdparm -B /dev/sda /dev/sda: APM_level = 1 Expected Results: # hdparm -B /dev/sda /dev/sda: APM_level = 128 tail -f /var/log/messages Apr 7 07:23:37 localhost logger: ACPI event unhandled: ac_adapter AC 00000080 00000000 Apr 7 07:23:37 localhost laptop-mode: Determining power state from /sys/class/power_supply/AC/online. Apr 7 07:23:37 localhost laptop-mode: Not trying other options, already found a power supply. Apr 7 07:23:37 localhost laptop-mode: On battery power: Activating, because ENABLE_LAPTOP_MODE_ON_BATTERY is set. ......................................................... ........................................................ Apr 7 07:23:39 localhost laptop-mode: Invoking module /usr/share/laptop-mode-tools/modules/hdparm. Apr 7 07:23:39 localhost laptop-mode: Setting powermanagement on drives to 128. Apr 7 07:23:39 localhost laptop-mode: Querying /dev/sda media type using udevinfo: Apr 7 07:23:39 localhost laptop-mode: type 'disk' on bus 'ata' detected Apr 7 07:23:39 localhost laptop-mode: Querying /dev/sda media type using udevinfo: Apr 7 07:23:39 localhost laptop-mode: type 'disk' on bus 'ata' detected Apr 7 07:23:39 localhost laptop-mode: Executing: hdparm -B 128 /dev/sda Apr 7 07:23:39 localhost laptop-mode: Apr 7 07:23:39 localhost /dev/sda: Apr 7 07:23:39 localhost setting Advanced Power Management level to 0x80 (128) Apr 7 07:23:39 localhost APM_level = 128 ............................................ ............................................ Apr 7 07:23:41 localhost kernel: ata1.00: configured for UDMA/133 Apr 7 07:23:41 localhost kernel: ata1: EH complete Apr 7 07:23:41 localhost kernel: sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA ........................................... =================================================================================== Quick & dirty FIX which actually works for me is to add sleep in laptop-mode exec-command.conf in order to give kernel to do its work first: /etc/laptop-mode/conf.d/exec-commands.conf: BATT_EXEC_COMMAND_0="sleep 3" # Enable power saving feature 0 here enable modules in main config: ENABLE_AUTO_MODULES=1 In this case: pr 7 07:36:15 localhost logger: ACPI event unhandled: ac_adapter AC 00000080 00000000 Apr 7 07:36:15 localhost laptop-mode: Determining power state from /sys/class/power_supply/AC/online. Apr 7 07:36:15 localhost laptop-mode: Not trying other options, already found a power supply. Apr 7 07:36:15 localhost laptop-mode: On battery power: Activating, because ENABLE_LAPTOP_MODE_ON_BATTERY is set. ................................................. .................................................. Apr 7 07:36:16 localhost laptop-mode: Invoking module /usr/share/laptop-mode-tools/modules/exec-commands. Apr 7 07:36:16 localhost laptop-mode: Executing comand sleep 3 Apr 7 07:36:16 localhost kernel: ata1.00: configured for UDMA/133 Apr 7 07:36:16 localhost kernel: ata1: EH complete Apr 7 07:36:16 localhost kernel: sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA Apr 7 07:36:17 localhost kernel: sd 2:0:0:0: [sdb] No Caching mode page present Apr 7 07:36:17 localhost kernel: sd 2:0:0:0: [sdb] Assuming drive cache: write through .................................................... .................................................... Apr 7 07:36:19 localhost laptop-mode: Invoking module /usr/share/laptop-mode-tools/modules/hdparm. Apr 7 07:36:19 localhost laptop-mode: Setting powermanagement on drives to 128. Apr 7 07:36:19 localhost laptop-mode: Querying /dev/sda media type using udevinfo: Apr 7 07:36:19 localhost laptop-mode: type 'disk' on bus 'ata' detected Apr 7 07:36:19 localhost laptop-mode: Querying /dev/sda media type using udevinfo: Apr 7 07:36:19 localhost laptop-mode: type 'disk' on bus 'ata' detected Apr 7 07:36:19 localhost laptop-mode: Executing: hdparm -B 128 /dev/sda Apr 7 07:36:19 localhost laptop-mode: Apr 7 07:36:19 localhost /dev/sda: Apr 7 07:36:19 localhost setting Advanced Power Management level to 0x80 (128) Apr 7 07:36:19 localhost APM_level = 128 ....................................................... Hope there is more reliable solution.
Created attachment 268803 [details] emerge --info
Created attachment 268805 [details] .config Linux/x86_64 2.6.38-gentoo-r1 Kernel Configuration
Created attachment 309997 [details] kernel config
Created attachment 309999 [details] emerge --info I had the same problem. Thank Viacheslav Gagara. Your solution works.
Your solution works when the notebook is turned on and connect/disconnect the power cord. But when the laptop is switched on without the power cord (battery mode), this solution does not work. Another solution is to disable the kernel option "ATA_ACPI" (Device Drivers -> SATA PATA Drivers -> ATA ACPI Support) or add a boot option to the kernel "libata.noacpi=1". I added a boot option to the kernel. It works for me.
(In reply to comment #5) > Your solution works when the notebook is turned on and connect/disconnect > the power cord. But when the laptop is switched on without the power cord > (battery mode), this solution does not work. > Another solution is to disable the kernel option "ATA_ACPI" (Device Drivers > -> SATA PATA Drivers -> ATA ACPI Support) or add a boot option to the kernel > "libata.noacpi=1". > I added a boot option to the kernel. It works for me. Sorry, it is not work.
Probably not kernel rewrites settings. I think it makes pm-utils. I looked to /usr/lib/pm-utils/power.d/harddrive and rewrite two options to the following form: DRIVE_SPINDOWN_VALUE_BAT="${DRIVE_SPINDOWN_VALUE_BAT:-0}" DRIVE_POWER_MGMT_BAT="${DRIVE_POWER_MGMT_BAT:-254}" For me it works.
(In reply to comment #7) > Probably not kernel rewrites settings. I think it makes pm-utils. I looked > to /usr/lib/pm-utils/power.d/harddrive and rewrite two options to the > following form: > DRIVE_SPINDOWN_VALUE_BAT="${DRIVE_SPINDOWN_VALUE_BAT:-0}" > DRIVE_POWER_MGMT_BAT="${DRIVE_POWER_MGMT_BAT:-254}" > For me it works. Not sure if both as supposed to work together
(In reply to comment #8) > Not sure if both as supposed to work together These options work for me for six months. And I do not use 'laptop-mode-tools'.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f146bb7e14ac3405429772d4adfef555f7810c20 commit f146bb7e14ac3405429772d4adfef555f7810c20 Author: Jakov Smolic <jakov.smolic@sartura.hr> AuthorDate: 2021-02-21 10:56:16 +0000 Commit: David Seifert <soap@gentoo.org> CommitDate: 2021-02-21 10:56:16 +0000 sys-power/pm-utils: Remove last-rited pkg Closes: https://bugs.gentoo.org/659616 Closes: https://bugs.gentoo.org/703026 Closes: https://bugs.gentoo.org/666380 Closes: https://bugs.gentoo.org/579912 Closes: https://bugs.gentoo.org/549848 Closes: https://bugs.gentoo.org/533168 Closes: https://bugs.gentoo.org/489650 Closes: https://bugs.gentoo.org/443530 Closes: https://bugs.gentoo.org/442052 Closes: https://bugs.gentoo.org/437930 Closes: https://bugs.gentoo.org/426952 Closes: https://bugs.gentoo.org/426510 Closes: https://bugs.gentoo.org/403523 Closes: https://bugs.gentoo.org/401257 Closes: https://bugs.gentoo.org/362387 Closes: https://bugs.gentoo.org/257156 Signed-off-by: Jakov Smolic <jakov.smolic@sartura.hr> Signed-off-by: David Seifert <soap@gentoo.org> profiles/arch/amd64/package.use.mask | 4 - profiles/arch/base/package.use.mask | 4 - profiles/arch/hppa/use.mask | 4 - profiles/arch/x86/package.use.mask | 4 - sys-power/pm-utils/Manifest | 1 - .../pm-utils/files/1.4.1-bluetooth-sync.patch | 43 ---------- .../pm-utils/files/1.4.1-disable-sata-alpm.patch | 24 ------ sys-power/pm-utils/files/1.4.1-echo-n.patch | 51 ------------ sys-power/pm-utils/files/1.4.1-fix-alpm-typo.patch | 29 ------- .../1.4.1-fix-intel-audio-powersave-hook.patch | 40 --------- .../pm-utils/files/1.4.1-ignore-led-failure.patch | 14 ---- .../files/1.4.1-inhibit-on-right-status.patch | 20 ----- .../pm-utils/files/1.4.1-logging-append.patch | 17 ---- .../pm-utils/files/1.4.1-run-hook-logging.patch | 17 ---- .../pm-utils/files/1.4.1-suspend-hybrid.patch | 36 --------- .../files/1.4.1-uswsusp-hibernate-mode.patch | 19 ----- .../files/1.4.1-xfs_buffer_arguments.patch | 31 ------- sys-power/pm-utils/files/pm-utils.logrotate | 8 -- sys-power/pm-utils/files/power.d/pci_devices | 61 -------------- sys-power/pm-utils/files/power.d/usb_bluetooth | 45 ----------- sys-power/pm-utils/files/sleep.d/50unload_alx | 18 ----- sys-power/pm-utils/metadata.xml | 10 --- sys-power/pm-utils/pm-utils-1.4.1-r7.ebuild | 94 ---------------------- 23 files changed, 594 deletions(-)