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

From: Armin Wolf
Date: Tue Mar 14 2023 - 19:05:15 EST


Am 14.03.23 um 20:49 schrieb Rafael J. Wysocki:

On Sun, Mar 12, 2023 at 6:15 PM Armin Wolf <W_Armin@xxxxxx> wrote:
Am 25.02.23 um 12:51 schrieb Armin Wolf:

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.
What is the status of this patchset? Should i use a SRCU notifier chain
for the query notifiers? I would really like to see this getting fixed,
as it prevents me from using linux on this machine.
I'm not entirely convinced about the query notifiers idea TBH.

I already thought about just flushing the query workqueue, but acpi_ec_remove_query_handler()
would still also remove query handlers installed to handle _Qxx methods. This might cause errors,
as for example on the Acer Travelmate 4002WLMI, the SMBUS query handler (_Q20) resets the SMBUS
alert bit in case no EC SMBus driver is overriding it.
Is there any specific reason for your dislike of the query notifiers? I could turn them into
SRCU call chains to avoid performance issues.

Armin Wolf