lkml.org 
[lkml]   [2006]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch] irq: do not mask interrupts by default
    Dear Ingo

    I tried your patch with 2.6.19-rc5.

    The irq is generated properly.


    Thanks!

    Best Regards
    Komuro


    >>
    >------------>
    >Subject: irq: do not mask interrupts by default
    >From: Ingo Molnar <mingo@elte.hu>
    >
    >never mask interrupts immediately upon request. Disabling
    >interrupts in high-performance codepaths is rare, and on
    >the other hand this change could recover lost edges (or
    >even other types of lost interrupts) by conservatively
    >only masking interrupts after they happen. (NOTE: with
    >this change the highlevel irq-disable code still soft-disables
    >this IRQ line - and if such an interrupt happens then the
    >IRQ flow handler keeps the IRQ masked.)
    >
    >Signed-off-by: Ingo Molnar <mingo@elte.hu>
    >---
    > kernel/irq/chip.c | 13 +++++++------
    > 1 file changed, 7 insertions(+), 6 deletions(-)
    >
    >Index: linux/kernel/irq/chip.c
    >===================================================================
    >--- linux.orig/kernel/irq/chip.c
    >+++ linux/kernel/irq/chip.c
    >@@ -202,10 +202,6 @@ static void default_enable(unsigned int
    > */
    > static void default_disable(unsigned int irq)
    > {
    >- struct irq_desc *desc = irq_desc + irq;
    >-
    >- if (!(desc->status & IRQ_DELAYED_DISABLE))
    >- desc->chip->mask(irq);
    > }
    >
    > /*
    >@@ -272,8 +268,11 @@ handle_simple_irq(unsigned int irq, stru
    > kstat_cpu(cpu).irqs[irq]++;
    >
    > action = desc->action;
    >- if (unlikely(!action || (desc->status & IRQ_DISABLED)))
    >+ if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
    >+ if (desc->chip->mask)
    >+ desc->chip->mask(irq);
    > goto out_unlock;
    >+ }
    >
    > desc->status |= IRQ_INPROGRESS;
    > spin_unlock(&desc->lock);
    >@@ -366,11 +365,13 @@ handle_fasteoi_irq(unsigned int irq, str
    >
    > /*
    > * If its disabled or no action available
    >- * keep it masked and get out of here
    >+ * then mask it and get out of here:
    > */
    > action = desc->action;
    > if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
    > desc->status |= IRQ_PENDING;
    >+ if (desc->chip->mask)
    >+ desc->chip->mask(irq);
    > goto out;
    > }
    >
    >
    >

    -
    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: 2006-11-14 13:45    [W:0.043 / U:0.344 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site