msm: rpm-smd: Fix memory leak on free_request

After acknowledging a transaction, all buffers previously
allocated must be properly freed.

CRs-fixed: 401535
Change-Id: I70488357ccd32a1ce8c212f3cb0077aa502687c6
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
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>