[PATCH 0/4] ACPI: SBS: Fix various issues

Armin Wolf posted 4 patches 2 years, 6 months ago
There is a newer version of this series
drivers/acpi/ec.c       | 44 ++++++++++++++++++++--------------------
drivers/acpi/internal.h | 10 ++++-----
drivers/acpi/sbs.c      | 27 ++++++++++++++++---------
drivers/acpi/sbshc.c    | 45 ++++++++++++++++++++++++++---------------
4 files changed, 74 insertions(+), 52 deletions(-)
[PATCH 0/4] ACPI: SBS: Fix various issues
Posted by Armin Wolf 2 years, 6 months ago
On my Acer Travelmate 4002WLMi, the system locks up upon
suspend/shutdown. After a lot of research, it turned out
that the sbs module was the culprit. The driver would not
correctly mask out the value used to select a battery using
the "Smart Battery Selector" (subset of the "Smart Battery Manager").
This accidentally caused a invalid power source to be selected,
which was automatically corrected by the selector. Upon
notifing the host about the corrected power source, some batteries
would be selected for re-reading, causing a endless loop.
This would lead to some workqueues filling up, which caused the
lockup upon suspend/shutdown.

The first three patches fix a stacktrace on module removal caused
by some locking issues. The last patch finally fixes the
suspend/shutdown issues.

As a side note: This was the first machine on which i installed Linux,
to finally fixing this took ~5 years of tinkering.

Armin Wolf (4):
  ACPI: EC: Add query notifier support
  ACPI: sbshc: Use ec query notifier call chain
  ACPI: EC: Make query handlers private
  ACPI: SBS: Fix handling of Smart Battery Selectors

 drivers/acpi/ec.c       | 44 ++++++++++++++++++++--------------------
 drivers/acpi/internal.h | 10 ++++-----
 drivers/acpi/sbs.c      | 27 ++++++++++++++++---------
 drivers/acpi/sbshc.c    | 45 ++++++++++++++++++++++++++---------------
 4 files changed, 74 insertions(+), 52 deletions(-)

--
2.30.2