Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 362387

Summary: sys-power/pm-utils: hdparm settings overwritten by pm-utils when switching to BATTERY
Product: Gentoo Linux Reporter: Viacheslav Gagara <viacheslavg>
Component: Current packagesAssignee: Freedesktop bugs <freedesktop-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: qnikst, zero_coool
Priority: Normal Keywords: PMASKED
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: emerge --info
.config
kernel config
emerge --info

Description Viacheslav Gagara 2011-04-07 04:47:59 UTC
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.
Comment 1 Viacheslav Gagara 2011-04-07 04:50:56 UTC
Created attachment 268803 [details]
emerge --info
Comment 2 Viacheslav Gagara 2011-04-07 04:52:56 UTC
Created attachment 268805 [details]
.config

Linux/x86_64 2.6.38-gentoo-r1 Kernel Configuration
Comment 3 Alex 2012-04-25 08:46:29 UTC
Created attachment 309997 [details]
kernel config
Comment 4 Alex 2012-04-25 08:54:11 UTC
Created attachment 309999 [details]
emerge --info

I had the same problem.
Thank Viacheslav Gagara. Your solution works.
Comment 5 Alex 2012-05-06 16:18:07 UTC
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.
Comment 6 Alex 2012-05-06 17:57:55 UTC
(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.
Comment 7 Alex 2012-05-10 14:35:59 UTC
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.
Comment 8 Pacho Ramos gentoo-dev 2012-11-18 13:44:48 UTC
(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
Comment 9 Alex 2012-11-18 17:05:43 UTC
(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'.
Comment 10 Larry the Git Cow gentoo-dev 2021-02-21 10:57:12 UTC
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(-)