Hi All,
This is an update of
https://lore.kernel.org/linux-acpi/5049211.GXAFRqVoOG@rafael.j.wysocki/
and the version is 2.1 because I've already posted a v2 of the first patch:
https://lore.kernel.org/linux-acpi/5967663.DvuYhMxLoT@rafael.j.wysocki/
which is updated again (in a minor way) is this series.
The original motivation was to make the _OSC evaluation more robust against
platform firmware deficiencies related to setting error bits in _OSC return
buffers by mistake (which apparently don't affect alternative OSes), but
since it can be argued that the current implementation of acpi_run_osc()
does not follow the specification exactly (see the changelog of patch
[1/8] for details), this is now more in the fixes territory. However,
all of the patches except for the [1/8] can be regarded as cleanups and
optimizations.
The essential changes takes place in patch [1/8] this time. It fixes
the error handling in acpi_run_osc() to remove inconsistencies from it
and follow the _OSC definition more closely, which also addresses the
"robustness" issue as kind of a side effect.
The second one reworks the printing of debug messages from acpi_run_osc()
for clarity, like in v1. Patch [3/8] splits the _OSC evaluation code out
of acpi_run_osc() (so it can be used in other functions), and patch [4/8]
splits the handling of _OSC error bits out of it (for the same purpose).
Patch [5/8] is just a by-the-way simple cleanup.
Patch [6/8] introduces a new helper function for handling _OSC handshakes
in a generic way that should allow some code duplication and unnecessary
overhead to be avoided going forward and makes the \_SB._OSC platform
features handling code use it.
Patch [7/8] is a cleanup on top of the previous one, and patch [8/8]
updates the USB4 \_SB._OSC features handling to use the new function
introduced in patch [6/8].
Thanks!