RE: [Patch] speed up interrupt handling

From: Peter Chubb <peter_at_chubb.wattle.id.au>
Date: 2004-02-28 15:22:41
>>>>> "David" == David Mosberger <davidm@napali.hpl.hp.com> writes:

>>>>> On Sat, 28 Feb 2004 08:27:40 +1100, Peter Chubb <peter@chubb.wattle.id.au> said:
>>>>> "David" == David Mosberger <davidm@napali.hpl.hp.com> writes:

Peter> Because IRQs are disabled for every hardware interrupt, and
Peter> enabled after each interrupt returns.

David> OK, it's been really long since I worked on this, but AFAIR,
David> for level-triggered interrupts, there should be no
David> masking/unmasking during interrupt delivery.  What am I
David> missing?

Sorry, I should have been more clear.  For the user-mode driver, we
need to disable the interrupt so that it can be acknowledged to the
device in the user-level code after the in-kernel generic  interrupt
handler has returned.

So the sequence goes:
  Kernel					Userspace handler
						read(irqfd)
						  enable_irq()
						  down(semaphore)	

   do_IRQ
      desc->handler->ack()
      desc->action() (= stub_handler())		
	disable_irq				
	up(semaphore)
	return IRQ_HANDLED
      desc->handler->end()
						return from read()
						Read device status
							register
						Handle interrupt

I'm sure I also saw enable_irq() in the profile for the normal
in-kernel driver, but I don't know where it comes from, and can't see
it now.

Peter C
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Fri Feb 27 23:26:31 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:23 EST