Hi all,
I tried diving into the acpica utility to check if I can make the state
reports work on some of our machines. Currently I am testing it on the
lenovo x250 and the hp 840 laptops.
However, I am not sure how and if to proceed here.
The current behaviour is as following:
When the machine starts up, it produces the reports of acpi_ac and
acpi_battery correctly. When I disconnect the power outlet, these
reports do not get updated. instead, I do get acpi_ec report updates on
some of the different events, such as connecting and disconnecting the
laptop to AC. These events have different values on the different laptops.
The ec report acpica produces on the hp840:
[init -> acpi_report_rom] report 'acpica -> acpi_ec'
[init -> acpi_report_rom] <acpi_ec>
[init -> acpi_report_rom] <ec>
[init -> acpi_report_rom] <data value="8"
count="36">triggered</data> <-- this is added on a charge up event
(it seems to trigger periodically when the battery is not full and AC is
connected
[init -> acpi_report_rom] <data value="9"
count="53"/> <-- this is added on a
charge down event (it seems to trigger periodically when the battery is
not full)
[init -> acpi_report_rom] <data value="6"
count="2"/> <-- AC connect/disconnect
event (this triggers once when disconnecting and once when connecting)
[init -> acpi_report_rom] </ec>
[init -> acpi_report_rom] </acpi_ec>
on the x250:
[init -> acpi_report_rom] report 'acpica -> acpi_ec'
[init -> acpi_report_rom] <acpi_ec>
[init -> acpi_report_rom] <ec>
[init -> acpi_report_rom] <data value="38"
count="1">triggered</data> <-- AC disconnect event (this triggers
once when disconnecting)
[init -> acpi_report_rom] <data value="77"
count="1"/> <-- AC connect event (this
triggers once when connecting)
[init -> acpi_report_rom] <data value="39"
count="1"/> <-- AC connect event (this
also triggers once when connecting)
[init -> acpi_report_rom] </ec>
[init -> acpi_report_rom] </acpi_ec>
Some observations:
* The charge/discharge events do not work on the x250.
* On the hp840 connecting and deconnecting share the same data value.
* On both laptops, disconnecting and reconnecting the AC outlet only
triggers the ec report once, and doing it again does not produce a
report. Reconnecting AC a second time also seems to cause the charge
events to stop being reported on the hp840.
* The lid report only works on the hp840.
* The power button works on the hp840 and only works on the x250 if
you press it for a longer time (but not so long as to turn off the
device).
* Ideally, for some device, such as one of the above, we would like
all of these reports to be updated correctly.
I have some questions about this:
* You mentioned in your issue about sculpt EA that the reports not
getting updated are a known issue. Do you have any plans of fixing
this in the future?
* Do you think solutions to this issue are going to be device
specific? Which parts are generally the same for different laptops?
* Is the difference in handling of the events on these machines caused
by the acpica C code not supporting these machines, or by the Genode
code not supporting them? or both?
* A workaround could be installing a timer and generating the initial
reports periodically. Do you think this would be worth implementing
or would fixing the problem be easier?
* For device specific parts: suppose it works on your test setup, how
should we proceed to make it work on other hardware?
--
Met vriendelijke groet / kind regards,
Boris Mulder
Cyber Security Labs B.V. | Gooimeer 6-31 | 1411 DD Naarden | The Netherlands
+31 35 631 3253 (office)