ENXIOing non-present battery

Colin Percival cperciva at freebsd.org
Sun Dec 7 07:55:44 UTC 2014


Hi ACPI people,

On my Dell Latitude E7440 laptop, the ACPI reports two batteries: First
the battery which exists; and second, a "Not Present" battery with zeroed
statistics.  FreeBSD, not realizing that this second battery is a complete
myth -- the E7440 only has one battery, and there is nowhere to add another
-- faithfully reports the data from ACPI to userland.

Unfortunately it causes some problems there; in particular, KDE interprets
it as meaning that the system should have two batteries, and when it sees
that the "second" battery has 0% power remaining it kicks off the "battery
is low, turn the laptop off" code.  If that code is disabled, it still
displays the wrong battery-charge-remaining status icons.

For dealing with such broken ACPIs, it seems like not attaching a non-present
battery would be a good idea.  This shouldn't be the default behaviour, since
there are plenty of systems where a non-present battery might be inserted at
a later time; but I see nothing wrong with adding an option.

The attached patch adds a acpi.cmbat.hide_not_present loader tunable which,
as the name suggests, hides non-present batteries; this is done in the probe
code by returning ENXIO if the tunable is set to a nonzero value and
acpi_BatteryIsPresent returns zero.  With this patch and the tunable set my
laptop behaves appropriately; and (aside from wasting a few bytes of memory)
there should be no effect on systems where the tunable is not set.

Any objections to me committing this?

-- 
Colin Percival
Security Officer Emeritus, FreeBSD | The power to serve
Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hide_not_present.patch
Type: text/x-patch
Size: 859 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-acpi/attachments/20141206/a30914b5/attachment.bin>


More information about the freebsd-acpi mailing list