diff options
Diffstat (limited to 'arch/mips/kernel/irq.c')
| -rw-r--r-- | arch/mips/kernel/irq.c | 72 | 
1 files changed, 7 insertions, 65 deletions
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 4f93db58a79..d2bfbc2e899 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c @@ -13,7 +13,6 @@  #include <linux/init.h>  #include <linux/interrupt.h>  #include <linux/kernel_stat.h> -#include <linux/module.h>  #include <linux/proc_fs.h>  #include <linux/mm.h>  #include <linux/random.h> @@ -23,8 +22,7 @@  #include <linux/kgdb.h>  #include <linux/ftrace.h> -#include <asm/atomic.h> -#include <asm/system.h> +#include <linux/atomic.h>  #include <asm/uaccess.h>  #ifdef CONFIG_KGDB @@ -50,7 +48,7 @@ again:  }  /* - * Allocate the 16 legacy interrupts for i8259 devices.  This happens early + * Allocate the 16 legacy interrupts for i8259 devices.	 This happens early   * in the kernel initialization so treating allocation failure as BUG() is   * ok.   */ @@ -64,9 +62,9 @@ void __init alloc_legacy_irqno(void)  void free_irqno(unsigned int irq)  { -	smp_mb__before_clear_bit(); +	smp_mb__before_atomic();  	clear_bit(irq, irq_map); -	smp_mb__after_clear_bit(); +	smp_mb__after_atomic();  }  /* @@ -75,54 +73,14 @@ void free_irqno(unsigned int irq)   */  void ack_bad_irq(unsigned int irq)  { -	smtc_im_ack_irq(irq);  	printk("unexpected IRQ # %d\n", irq);  }  atomic_t irq_err_count; -/* - * Generic, controller-independent functions: - */ - -int show_interrupts(struct seq_file *p, void *v) +int arch_show_interrupts(struct seq_file *p, int prec)  { -	int i = *(loff_t *) v, j; -	struct irqaction * action; -	unsigned long flags; - -	if (i == 0) { -		seq_printf(p, "           "); -		for_each_online_cpu(j) -			seq_printf(p, "CPU%d       ", j); -		seq_putc(p, '\n'); -	} - -	if (i < NR_IRQS) { -		raw_spin_lock_irqsave(&irq_desc[i].lock, flags); -		action = irq_desc[i].action; -		if (!action) -			goto skip; -		seq_printf(p, "%3d: ", i); -#ifndef CONFIG_SMP -		seq_printf(p, "%10u ", kstat_irqs(i)); -#else -		for_each_online_cpu(j) -			seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); -#endif -		seq_printf(p, " %14s", irq_desc[i].chip->name); -		seq_printf(p, "  %s", action->name); - -		for (action=action->next; action; action = action->next) -			seq_printf(p, ", %s", action->name); - -		seq_putc(p, '\n'); -skip: -		raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags); -	} else if (i == NR_IRQS) { -		seq_putc(p, '\n'); -		seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); -	} +	seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));  	return 0;  } @@ -141,7 +99,7 @@ void __init init_IRQ(void)  #endif  	for (i = 0; i < NR_IRQS; i++) -		set_irq_noprobe(i); +		irq_set_noprobe(i);  	arch_init_irq(); @@ -183,23 +141,7 @@ void __irq_entry do_IRQ(unsigned int irq)  {  	irq_enter();  	check_stack_overflow(); -	__DO_IRQ_SMTC_HOOK(irq); -	generic_handle_irq(irq); -	irq_exit(); -} - -#ifdef CONFIG_MIPS_MT_SMTC_IRQAFF -/* - * To avoid inefficient and in some cases pathological re-checking of - * IRQ affinity, we have this variant that skips the affinity check. - */ - -void __irq_entry do_IRQ_no_affinity(unsigned int irq) -{ -	irq_enter(); -	__NO_AFFINITY_IRQ_SMTC_HOOK(irq);  	generic_handle_irq(irq);  	irq_exit();  } -#endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */  | 
