msm: rpm-smd: Fix locking performance issues
Fix a issue where primary core could get starved resulting in a
watchdog. The issue happens when a client holds a spinlock while for
polling for an ACK from RPM in an atomic context. The ack would also
trigger an interrupt handler that schedules a workqueue to process the
data. However the workqueue ends up waiting on the spinlock held by
the client invoking the API in atomic context.
Switch to using mutexes to provide concurrency between sleepable tasks
when waiting on a RPM transaction. This frees up the CPUs for scheduling
when waiting on a mutex.
Change-Id: I381bcb91da01cbfe9f4045ec46898bb42e52c142
Signed-off-by:
Mahesh Sivasubramanian <msivasub@codeaurora.org>
Loading
Please register or sign in to comment