• Alan Cox's avatar
    Improve behaviour of spurious IRQ detect · 4f27c00b
    Alan Cox authored
    Currently we handle spurious IRQ activity based upon seeing a lot of
    invalid interrupts, and we clear things back on the base of lots of valid
    interrupts.
    
    Unfortunately in some cases you get legitimate invalid interrupts caused by
    timing asynchronicity between the PCI bus and the APIC bus when disabling
    interrupts and pulling other tricks.  In this case although the spurious
    IRQs are not a problem our unhandled counters didn't clear and they act as
    a slow running timebomb.  (This is effectively what the serial port/tty
    problem that was fixed by clearing counters when registering a handler
    showed up)
    
    It's easy enough to add a second parameter - time.  This means that if we
    see a regular stream of harmless spurious interrupts which are not harming
    processing we don't go off and do something stupid like disable the IRQ
    after a month of running.  OTOH lockups and performance killers show up a
    lot more than 10/second
    
    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: default avatarAlan Cox <alan@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4f27c00b
spurious.c 5.83 KB