soc: qcom: service-notifier: Use ordered workqueue for PDR
Currently, a global multi-threaded workqueue is used for
handling acks sent to the root PD for a subsystem during PDR.
Since the new EARLY_PD_DOWN indication does not require an ack,
the remote PD can continue with the PD teardown sequence,
and send a PD_DOWN indication, before we have handled the
EARLY_DOWN indication. Since the workqueue is multi-threaded,
the worker threads handling both of these indications can race
against each other, resulting in non-deterministic behavior with
respect to the order in which the EARLY_PD_DOWN and PD_DOWN
indications are processed.
Use an ordered workqueue to ensure that indications are
processed in the order in which they arrive, and migrate
from using a global workqueue for handling acks, to
per-service workqueues, to maintain parallelism between PDRs
for two distinct PDs.
Change-Id: I4e95524a927bbccc079eaf6481a254fda808b85c
Signed-off-by:
Isaac J. Manjarres <isaacm@codeaurora.org>
Loading
Please register or sign in to comment