From: Loic Pallardy <loic.palla...@st.com>

TX: replace spin by mutex to release CPU
during wait on mailbox resource.

Signed-off-by: Loic Pallardy <loic.palla...@st.com>
Signed-off-by: Linus Walleij <linus.wall...@linaro.org>
---
 drivers/mailbox/mailbox.c          | 5 +++--
 drivers/mailbox/mailbox_internal.h | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c
index 6b43e7c..ff6595a 100644
--- a/drivers/mailbox/mailbox.c
+++ b/drivers/mailbox/mailbox.c
@@ -94,7 +94,7 @@ int mailbox_msg_send(struct mailbox *mbox, struct mailbox_msg 
*msg)
        struct mailbox_queue *mq = mbox->txq;
        int ret = 0, len;
 
-       spin_lock_bh(&mq->lock);
+       mutex_lock(&mq->mlock);
 
        if (kfifo_avail(&mq->fifo) < (sizeof(msg) + msg->size)) {
                ret = -ENOMEM;
@@ -118,7 +118,7 @@ int mailbox_msg_send(struct mailbox *mbox, struct 
mailbox_msg *msg)
        tasklet_schedule(&mbox->txq->tasklet);
 
 out:
-       spin_unlock_bh(&mq->lock);
+       mutex_unlock(&mq->mlock);
        return ret;
 }
 EXPORT_SYMBOL(mailbox_msg_send);
@@ -289,6 +289,7 @@ static struct mailbox_queue *mbox_queue_alloc(struct 
mailbox *mbox,
                return NULL;
 
        spin_lock_init(&mq->lock);
+       mutex_init(&mq->mlock);
 
        if (kfifo_alloc(&mq->fifo, mbox_kfifo_size, GFP_KERNEL))
                goto error;
diff --git a/drivers/mailbox/mailbox_internal.h 
b/drivers/mailbox/mailbox_internal.h
index ba03910..04f83bf 100644
--- a/drivers/mailbox/mailbox_internal.h
+++ b/drivers/mailbox/mailbox_internal.h
@@ -45,6 +45,7 @@ struct mailbox_ops {
 
 struct mailbox_queue {
        spinlock_t              lock;
+       struct mutex            mlock;
        struct kfifo            fifo;
        struct work_struct      work;
        struct tasklet_struct   tasklet;
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to