mirror of https://gitee.com/openkylin/linux.git
[PATCH] make noirqdebug/irqfixup __read_mostly, add (un)likely()
Signed-off-by: Andreas Mohr <andi@lisas.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
e6022603b9
commit
83d4e6e7fb
|
@ -52,7 +52,7 @@
|
|||
*/
|
||||
#define MAX_IRQ_CNT 100000
|
||||
|
||||
static int noirqdebug;
|
||||
static int noirqdebug __read_mostly;
|
||||
static volatile unsigned long irq_err_count;
|
||||
static DEFINE_SPINLOCK(irq_controller_lock);
|
||||
static LIST_HEAD(irq_pending);
|
||||
|
@ -81,7 +81,7 @@ irqreturn_t no_action(int irq, void *dev_id, struct pt_regs *regs)
|
|||
|
||||
void do_bad_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
|
||||
{
|
||||
irq_err_count += 1;
|
||||
irq_err_count++;
|
||||
printk(KERN_ERR "IRQ: spurious interrupt %d\n", irq);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include <linux/kallsyms.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
static int irqfixup;
|
||||
static int irqfixup __read_mostly;
|
||||
|
||||
/*
|
||||
* Recovery handler for misrouted interrupts.
|
||||
|
@ -136,9 +136,9 @@ static void report_bad_irq(unsigned int irq, irq_desc_t *desc, irqreturn_t actio
|
|||
void note_interrupt(unsigned int irq, irq_desc_t *desc, irqreturn_t action_ret,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
if (action_ret != IRQ_HANDLED) {
|
||||
if (unlikely(action_ret != IRQ_HANDLED)) {
|
||||
desc->irqs_unhandled++;
|
||||
if (action_ret != IRQ_NONE)
|
||||
if (unlikely(action_ret != IRQ_NONE))
|
||||
report_bad_irq(irq, desc, action_ret);
|
||||
}
|
||||
|
||||
|
@ -152,11 +152,11 @@ void note_interrupt(unsigned int irq, irq_desc_t *desc, irqreturn_t action_ret,
|
|||
}
|
||||
|
||||
desc->irq_count++;
|
||||
if (desc->irq_count < 100000)
|
||||
if (likely(desc->irq_count < 100000))
|
||||
return;
|
||||
|
||||
desc->irq_count = 0;
|
||||
if (desc->irqs_unhandled > 99900) {
|
||||
if (unlikely(desc->irqs_unhandled > 99900)) {
|
||||
/*
|
||||
* The interrupt is stuck
|
||||
*/
|
||||
|
@ -171,7 +171,7 @@ void note_interrupt(unsigned int irq, irq_desc_t *desc, irqreturn_t action_ret,
|
|||
desc->irqs_unhandled = 0;
|
||||
}
|
||||
|
||||
int noirqdebug;
|
||||
int noirqdebug __read_mostly;
|
||||
|
||||
int __init noirqdebug_setup(char *str)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue