Skip to content

Commit

Permalink
arm/omap: use system_wq in mailbox
Browse files Browse the repository at this point in the history
With cmwq, there's no reason to use a separate workqueue for mailbox.
Use the system_wq instead.  mbox->rxq->work is sync flushed in
omap_mbox_fini() to make sure it's not running on any cpu, which makes
sure that no mbox work is running when omap_mbox_exit() is entered.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Hari Kanigeri <hari.kanigeri@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: linux-omap@vger.kernel.org
  • Loading branch information
Tejun Heo committed Jan 26, 2011
1 parent ada609e commit c487300
Showing 1 changed file with 2 additions and 8 deletions.
10 changes: 2 additions & 8 deletions arch/arm/plat-omap/mailbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@

#include <plat/mailbox.h>

static struct workqueue_struct *mboxd;
static struct omap_mbox **mboxes;

static int mbox_configured;
Expand Down Expand Up @@ -197,7 +196,7 @@ static void __mbox_rx_interrupt(struct omap_mbox *mbox)
/* no more messages in the fifo. clear IRQ source. */
ack_mbox_irq(mbox, IRQ_RX);
nomem:
queue_work(mboxd, &mbox->rxq->work);
schedule_work(&mbox->rxq->work);
}

static irqreturn_t mbox_interrupt(int irq, void *p)
Expand Down Expand Up @@ -307,7 +306,7 @@ static void omap_mbox_fini(struct omap_mbox *mbox)
if (!--mbox->use_count) {
free_irq(mbox->irq, mbox);
tasklet_kill(&mbox->txq->tasklet);
flush_work(&mbox->rxq->work);
flush_work_sync(&mbox->rxq->work);
mbox_queue_free(mbox->txq);
mbox_queue_free(mbox->rxq);
}
Expand Down Expand Up @@ -406,10 +405,6 @@ static int __init omap_mbox_init(void)
if (err)
return err;

mboxd = create_workqueue("mboxd");
if (!mboxd)
return -ENOMEM;

/* kfifo size sanity check: alignment and minimal size */
mbox_kfifo_size = ALIGN(mbox_kfifo_size, sizeof(mbox_msg_t));
mbox_kfifo_size = max_t(unsigned int, mbox_kfifo_size,
Expand All @@ -421,7 +416,6 @@ subsys_initcall(omap_mbox_init);

static void __exit omap_mbox_exit(void)
{
destroy_workqueue(mboxd);
class_unregister(&omap_mbox_class);
}
module_exit(omap_mbox_exit);
Expand Down

0 comments on commit c487300

Please sign in to comment.