[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100421112807.5eca9f9d@bike.lwn.net>
Date: Wed, 21 Apr 2010 11:28:07 -0600
From: Jonathan Corbet <corbet@....net>
To: Will Newton <will.newton@...il.com>
Cc: Linux Kernel list <linux-kernel@...r.kernel.org>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: Threaded irq handler question
On Wed, 21 Apr 2010 17:35:32 +0100
Will Newton <will.newton@...il.com> wrote:
> My problem is that this structure does not work, because once I call
> disable_irq_nosync() on the irq in the check handler the thread will
> no longer run because the irq is disabled. However if I don't call
> disable_irq_nosync() I will get endless irqs because the line is
> level-triggered and will not be deasserted until the thread has run.
Trying to disable IRQs at this level is the wrong approach. You need to
do enough in the primary interrupt handler to cause the hardware to
stop interrupting in the first place; usually that's just a matter of
some sort of acknowledgment. Then the threaded handler can move data
around in peace.
jon
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists