Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83d4e6e7 authored by Andreas Mohr's avatar Andreas Mohr Committed by Linus Torvalds
Browse files

[PATCH] make noirqdebug/irqfixup __read_mostly, add (un)likely()



Signed-off-by: default avatarAndreas Mohr <andi@lisas.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e6022603
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
}

+6 −6
Original line number Diff line number Diff line
@@ -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)
{