mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: Long playing threaded interrupt handlers
Date: Wed, 2 Jun 2010 00:45:20 -0700	[thread overview]
Message-ID: <20100602074520.GI3713@core.coreip.homeip.net> (raw)
In-Reply-To: <alpine.LFD.2.00.1006020913310.2933@localhost.localdomain>

On Wed, Jun 02, 2010 at 09:19:21AM +0200, Thomas Gleixner wrote:
> On Wed, 2 Jun 2010, Dmitry Torokhov wrote:
> 
> > HI Thomas,
> > 
> > The threaded IRQ infrastructure that went into the kernel is extremely
> > helpful, however in the input land there are quite a few devices that
> > require polling after an IRQ has been raised.
> > 
> > Currently most such drivers, instead of threaded interrupts, still use
> > [delayed] work to do the polling, and still face the issue of shutting
> > down interrupt and scheduled work in a raceless way leaving irq enable
> > counter balanced. Is it allowed to have threaded ISR execute for
> > extended a amount of time, and do the required polling, provided that
> > ISR does certain checks to finish promply in case when we unbind the
> > driver or try to suspend the device?
> 
> Sure, why not ?

Great, that is what I wanted to hear!

> The only thing we need to think about is when the poll
> is busy polling for a long time, then we need to lower the irq thread
> priority to SCHED_OTHER in order not to hog the CPU.

I don't think the drivers will actively polling for a long time, they
are likely to poll and then sleep for some time (100-200-300 msecs), so
typical loop will be:

handler()
{
	while (!shutdown_or_suspend) {
		poll_device();

		if (all_up)
			break;

		msleep(poll_interval);
	}

	return IRQ_HANDLED;
}

Thanks.

-- 
Dmitry

      reply	other threads:[~2010-06-02  7:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-02  7:09 Dmitry Torokhov
2010-06-02  7:19 ` Thomas Gleixner
2010-06-02  7:45   ` Dmitry Torokhov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100602074520.GI3713@core.coreip.homeip.net \
    --to=dmitry.torokhov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®