On (05/18/12 09:49), Lekensteyn wrote:
On Thursday 17 May 2012 19:44:58 Sergey Senozhatsky wrote:
> [PATCH] factor out powertop_init() function
>
> Factor out powertop_init() function to perform basic initialization on
> powertop start up.
>
> Commit 057d6126eb6329c86b29a2e0219c0d0e49a84191 moved init after
> commandline options parsing. However, in some cases we need it before
> parsing, e.g. -- calibration.
>
> Reported-by: Lekensteyn <lekensteyn(a)gmail.com>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
Please Cc the list next time.
Tested-by: Lekensteyn <lekensteyn(a)gmail.com>
Thank you for testing.
Now this problem is solved, I hit another problem with --calibrate.
The
program throws an exception because my
/sys/class/power_supply/BAT0/current_now returns -ENODEV when the cable is
removed from the laptop (and thus when the battery is being used). This issue
is at least in kernel 3.2, but probably occurs in 3.0 too. 2.6.38 is half
unaffected (only shortly after disconnecting the power cable). I saw somewhere
that this device is replaced by power_current (cannot remember exact name),
but I have no power... entries in the BAT0 directory.
With the 1.97 version from Debian, I do not see ACPI power estimate, but it
does not crash either. The old powertop 1 (1.13?) showed the ACPI power
estimate correctly.
The backtrace for the error:
Loaded 0 prior measurements
Cannot load from file /var/cache/powertop/saved_parameters.powertop
Starting PowerTOP power estimate calibration
Calibrating idle
terminate called after throwing an instance of 'std::ios_base::failure'
what(): basic_filebuf::underflow error reading the file
well, from the top of my head, the only sane solution is to catch fstream
(as fstream cast) exceptions.
I'll send a patch in a minute.
-ss
#10 0x000000000041b0e3 in read_sysfs (filename=...,
ok=0x7fffffffc45d) at
lib.cpp:190
#11 0x0000000000441f84 in sysfs_power_meter::get_sysfs_attr (this=<optimized
out>, attribute=<optimized out>, value=0x7fffffffd4ac)
at measurement/sysfs.cpp:44
#12 0x00000000004420ff in sysfs_power_meter::set_rate_from_current
(this=0x83faf0, voltage=11.994) at measurement/sysfs.cpp:86
#13 0x00000000004422c9 in sysfs_power_meter::measure (this=0x83faf0) at
measurement/sysfs.cpp:143
#14 0x000000000043ff6d in end_power_measurement () at
measurement/measurement.cpp:86
#15 0x0000000000442e3a in one_measurement (seconds=<optimized out>) at
main.cpp:190
#16 0x000000000043f762 in idle_calibration () at calibrate/calibrate.cpp:423
#17 calibrate () at calibrate/calibrate.cpp:466
#18 0x00000000004066b5 in main (argc=2, argv=0x7fffffffe728) at main.cpp:379
... (gdb) up ...
#10 0x000000000041b0e3 in read_sysfs (filename=..., ok=0x7fffffffc45d) at
lib.cpp:190
190 file >> i;
(gdb) print filename.c_str()
$2 = 0x844d78 "/sys/class/power_supply/BAT0/current_now"
Below is are the contents of the BAT0 directory with connected power cable:
> alarm:0
> charge_full:4231000
> charge_full_design:5600000
> charge_now:4231000
> current_now:0
> cycle_count:0
> manufacturer:NOTEBOOK
> model_name:BAT
> present:1
> serial_number:0001
> status:Full
> technology:Li-ion
> type:Battery
> uevent:POWER_SUPPLY_NAME=BAT0
> uevent:POWER_SUPPLY_STATUS=Full
> uevent:POWER_SUPPLY_PRESENT=1
> uevent:POWER_SUPPLY_TECHNOLOGY=Li-ion
> uevent:POWER_SUPPLY_CYCLE_COUNT=0
> uevent:POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
> uevent:POWER_SUPPLY_VOLTAGE_NOW=12720000
> uevent:POWER_SUPPLY_CURRENT_NOW=0
> uevent:POWER_SUPPLY_CHARGE_FULL_DESIGN=5600000
> uevent:POWER_SUPPLY_CHARGE_FULL=4231000
> uevent:POWER_SUPPLY_CHARGE_NOW=4231000
> uevent:POWER_SUPPLY_MODEL_NAME=BAT
> uevent:POWER_SUPPLY_MANUFACTURER=NOTEBOOK
> uevent:POWER_SUPPLY_SERIAL_NUMBER=0001
> voltage_min_design:11100000
> voltage_now:12720000
And here with cable disconnected:
> alarm:0
> charge_full:4231000
> charge_full_design:5600000
> charge_now:4205000
> grep: current_now: No such device
> cycle_count:0
> manufacturer:NOTEBOOK
> model_name:BAT
> present:1
> serial_number:0001
> status:Discharging
> technology:Li-ion
> type:Battery
> uevent:POWER_SUPPLY_NAME=BAT0
> uevent:POWER_SUPPLY_STATUS=Discharging
> uevent:POWER_SUPPLY_PRESENT=1
> uevent:POWER_SUPPLY_TECHNOLOGY=Li-ion
> uevent:POWER_SUPPLY_CYCLE_COUNT=0
> uevent:POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
> uevent:POWER_SUPPLY_VOLTAGE_NOW=12263000
> uevent:POWER_SUPPLY_CHARGE_FULL_DESIGN=5600000
> uevent:POWER_SUPPLY_CHARGE_FULL=4231000
> uevent:POWER_SUPPLY_CHARGE_NOW=4205000
> uevent:POWER_SUPPLY_MODEL_NAME=BAT
> uevent:POWER_SUPPLY_MANUFACTURER=NOTEBOOK
> uevent:POWER_SUPPLY_SERIAL_NUMBER=0001
> voltage_min_design:11100000
> voltage_now:12263000
I am trying to find out which commit caused it.
Regards,
Peter