public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* Excessive time to handle interrupts
@ 2004-02-26 23:44 Peter Chubb
  2004-02-27  0:06 ` David Mosberger
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Peter Chubb @ 2004-02-26 23:44 UTC (permalink / raw)
  To: linux-ia64


I'm seeing very long interrupt handling times here, on McKinley (HP
ZX2000) -- of the order of a few microseconds.

Profiling indicates more than 4000 cycles are being spent in
enable_irq() after each interrupt.  As enable_irq() disables interrupt
collection, it's a bit difficult to get profiling data within that
function, but I strongly suspect it's the readl() in unmask_irq()
that's taking the time -- and likewise in mask_irq().


Code like this in arch/ia64/kernel/iosapic.c

    spin_lock_irqsave(&iosapic_lock, flags);
    {
	writel(IOSAPIC_RTE_LOW(rte_index), addr + IOSAPIC_REG_SELECT);
        low32 = readl(addr + IOSAPIC_WINDOW);
        low32 &= ~(1 << IOSAPIC_MASK_SHIFT);    /* set only the mask bit */
	writel(low32, addr + IOSAPIC_WINDOW);
    }
    spin_unlock_irqrestore(&iosapic_lock, flags);

I don't know enough about the hardware to say for sure, is it
feasible to keep a soft copy of the register rather than do the read
all the time?  If that's not going to break the hardware, I'll code it
up and see if interrupt latencies go down.

--
Dr Peter Chubb  http://www.gelato.unsw.edu.au  peterc AT gelato.unsw.edu.au
The technical we do immediately,  the political takes *forever*



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-02-27  2:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-26 23:44 Excessive time to handle interrupts Peter Chubb
2004-02-27  0:06 ` David Mosberger
2004-02-27  0:18 ` Chen, Kenneth W
2004-02-27  2:07 ` Grant Grundler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox