irq consolidation, new attempt (alpha part)
PATCH 1/1 irq consolidation, new attempt (alpha part)
Hi all,
alpha specific part of irq handling code consolidation patchset. Patch is against 2.5.73. Compiles, but untested.
Best regards.
Signature · 2 lines
Andrey Panin | Linux and UNIX system administrator [email protected] | PGP key: wwwkeys.pgp.net
arch/alpha/Kconfig +4 -0
@@ -15,6 +15,10 @@ bool default y +config GENERIC_IRQ + bool + default y + config UID16 bool
arch/alpha/kernel/irq_alpha.c +2 -2
@@ -26,7 +26,7 @@static void dummy_perf (unsigned long vector,struct pt_regs *regs) { - irq_err_count++; +atomic_inc (&irq_err_count);printk (KERN_CRIT "Performance counter interrupt!\n" ); }
@@ -46,7 +46,7 @@handle_ipi (regs);return ;#else - irq_err_count++; +atomic_inc (&irq_err_count);printk (KERN_CRIT "Interprocessor interrupt? " "You must be kidding!\n" );#endif
arch/alpha/kernel/irq.c +18 -642
725 lines not on this page · raw message
include/asm-alpha/hw_irq.h +35 -1
@@ -2,10 +2,15 @@#define _ALPHA_HW_IRQ_H#include <linux/config.h> +#include <asm/machvec.h> static inline void hw_resend_irq (struct hw_interrupt_type *h,unsigned int i) {} -extern volatile unsigned long irq_err_count; +extern atomic_t irq_err_count; + +extern void select_smp_affinity (int irq); + +extern irq_desc_t irq_desc[NR_IRQS ];#ifdef CONFIG_ALPHA_GENERIC #define ACTUAL_NR_IRQS alpha_mv.nr_irqs
@@ -13,4 +18,33 @@#define ACTUAL_NR_IRQS NR_IRQS#endif +#define arch_ack_bad_irq (irq) do { } while (0) + +/* Return a pointer to the irq descriptor for IRQ. */ +#define irq_desc (irq) (irq_desc + (irq)) + +/* Check irq number */ +#define irq_valid (irq) ((irq) < ACTUAL_NR_IRQS) + +#define for_each_irq (i) for (i = 0; i < NR_IRQS; i++) \ + if (!irq_valid(i)) \ + continue; \ + else + +/* Arch specific hook for setup_irq() */ +#ifdef CONFIG_SMP +#define arch_setup_irq (irq, desc, irqaction) select_smp_affinity(irq) +#else +#define arch_setup_irq (irq, desc, irqaction) do { } while (0) +#endif + +/* Used in setup_irq() */ +#define ARCH_NONSHARED_IRQ_MASK ~IRQ_DISABLED + +#define ARCH_AFFINITY_WIDTH 16 + +#define ARCH_DEFAULT_IRQ_AFFINITY ~0UL + +#define arch_can_create_irq_proc () (ACTUAL_NR_IRQS < (PROC_NDYNAMIC / 4)) +#endif