libhealthloop: Only wake up for power supply events
healthd receives power supply information as uevents and holds a wakelock while receiving these uevents. Without uevent filter, suspend is postponed indefinitely if a uevent is generated during suspend. Fix this by attaching a BPF program to the uevent socket that filters out all events that are not power supply events. This CL replaces the following CLs: * Lianwei Wang, healthd: Don't set all eventpoll wakeup-able, 2015-07-09 (https://android-review.googlesource.com/c/platform/system/core/+/158851 ). * Stephane Lee, Add BPF filter to filter uevents for SUBSYSTEM=powersupply, 2022-05-06. Multiple ideas and some code in this CL have been borrowed from Stephane Lee's CL. Bug: 139203596 Bug: 140330870 Bug: 203131934 Bug: 203229817 Bug: 203462310 Bug: 221725014 Test: Verified that a Pixel 2024 still wakes up if a USB cable is connected or disconnected. Test: Verified that suspend and resume still works for a Pixel 2024 device. Test: Verified that the following text appears in the Cuttlefish logcat output: "HealthLoop: Successfully attached BPF program to uevent socket" Test: Verified as follows that recovery mode works fine with Cuttlefish: adb reboot recovery && adb root && adb shell dmesg | grep -E 'F DEBUG|HealthLoop' Change-Id: I64446b103d660d220880461bdef7ef0f531e1734 Signed-off-by:Bart Van Assche <bvanassche@google.com>
Loading
Please register or sign in to comment