https://bugzilla.kernel.org/show_bug.cgi?id=28192
Summary: battery confuses mW and mA reporting units => wrong rate/energy Product: ACPI Version: 2.5 Kernel Version: v2.6.38-rc3 Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Power-Battery AssignedTo: acpi_power-batt...@kernel-bugs.osdl.org ReportedBy: chron...@gmx.de Regression: Yes On Thinkpad X201, often either of these erroneous power supply data (from /sys/class/power_supply/BAT0) are visible in user space apps: - energy and rate too low by factor of ~10 - energy and rate too high by factor of ~10 This happens mostly after resuming from hibernate or after fresh boot. I've compiled battery as module -- reloading the module corrects the data most of the time. Using ACPI tracing, I checked the data returned by _BIF and _BST (it always checks out with the corresponding raw sysfs values). My suspicion as to what is happening: - _BIF, which among others returns the reporting unit of the battery data, is only called once at module load. Depending on the unit, either sysfs file current_now or power_now is set up -- after that, always containing the number in the second field of the package returned by _BST. - Thinkpad X201 sometimes changes its mind which unit the data is in it reports to the periodically called _BST. - But the module doesn't detect that and so there are two possibilities of miscalculations (data set used see at bottom): 1. unit mW at module load, changed to mA: - power_now is present, but its value is a current, e.g. 1312000 (= 1.312 A) - so power is 1.312 "W", instead of voltage_now*current_now = 14.6 W 2. unit mA at module load, changed to mW: - current_now is present, but its value is a power, e.g. 14740000 (= 14.74 W) - so power is calculated as voltage_now*current now, yielding 163.7 "W" in user space apps (like gnome-power-manager) - reloading the module calls _BIF and _BST in short succession and the data units and values fit again. The approximate factor 10 can be identified as voltage_now, which is about 11 V. Data set used as example follows. Here, _BIF must have reported mW initially, but _BST reports mA numbers. After reloading the module, the X201 changes its mind and reports mW again. - fresh boot: $ cat energy_now voltage_now power_now 2049000 11093000 1312000 - after reloading battery module: $ cat energy_now voltage_now power_now 20360000 11108000 14740000 Please note I suspect this is a regression since v2.6.35 or so, but I'm having trouble bisecting because it's very time consuming. Most of the time, the error only appears after the X201 was turned off for a longer time period. Please advise if I can help, though I don't feel competent (yet) for developing a fix. -- Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. ------------------------------------------------------------------------------ The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's connectivity to a physical network are well understood - see how these rules translate into the virtual world? http://p.sf.net/sfu/oracle-sfdevnlfb _______________________________________________ acpi-bugzilla mailing list acpi-bugzilla@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla