lkml.org 
[lkml]   [2011]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 01/32] arm/omap: use system_wq in mailbox
    From
    Tejun,

    On Mon, Jan 3, 2011 at 7:49 AM, Tejun Heo <tj@kernel.org> wrote:
    > 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>
    > Cc: Tony Lindgren <tony@atomide.com>
    > Cc: linux-omap@vger.kernel.org
    > ---
    > Only compile tested.  Please feel free to take it into the subsystem
    > tree or simply ack - I'll route it through the wq tree.

    This was changed to dedicated work queue because of performance issues
    when there is heavy mailbox traffic between the cores.

    Reference:
    http://www.mail-archive.com/linux-omap@vger.kernel.org/msg24240.html


    >
    > Thanks.
    >
    >  arch/arm/plat-omap/mailbox.c |   10 ++--------
    >  1 files changed, 2 insertions(+), 8 deletions(-)
    >
    > diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c
    > index d2fafb8..5bc4d7b 100644
    > --- a/arch/arm/plat-omap/mailbox.c
    > +++ b/arch/arm/plat-omap/mailbox.c
    > @@ -31,7 +31,6 @@
    >
    >  #include <plat/mailbox.h>
    >
    > -static struct workqueue_struct *mboxd;
    >  static struct omap_mbox **mboxes;
    >  static bool rq_full;
    >
    > @@ -186,7 +185,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)
    > @@ -291,7 +290,7 @@ static void omap_mbox_fini(struct omap_mbox *mbox)
    >  {
    >        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);
    >
    > @@ -385,10 +384,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, sizeof(mbox_msg_t));
    > @@ -399,7 +394,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);
    > --
    > 1.7.1
    >
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at  http://vger.kernel.org/majordomo-info.html
    >



    --
    Thank you,
    Best regards,
    Hari Kanigeri
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-01-03 22:37    [W:2.256 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site