| From cb7a435c2211b301598ded1ae051138b077b6eb9 Mon Sep 17 00:00:00 2001 |
| From: Wu Zhangjin <wuzhangjin@gmail.com> |
| Date: Wed, 10 Mar 2010 02:27:12 +0800 |
| Subject: [PATCH] RT: MIPS: Un-thread several interrupts |
| |
| commit cb7a435c2211b301598ded1ae051138b077b6eb9 in tip. |
| |
| This patch un-thread all of the interrupts whose handler is no_action, |
| which can return quickly, and also, several other interrupts, such as |
| bus error interrupt, halt interrupt, for they are urgent to the system, |
| to un-thread them too. |
| |
| Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> |
| |
| diff --git a/arch/mips/ar7/irq.c b/arch/mips/ar7/irq.c |
| index c781556..fce30ee 100644 |
| --- a/arch/mips/ar7/irq.c |
| +++ b/arch/mips/ar7/irq.c |
| @@ -97,7 +97,8 @@ static struct irq_chip ar7_sec_irq_type = { |
| |
| static struct irqaction ar7_cascade_action = { |
| .handler = no_action, |
| - .name = "AR7 cascade interrupt" |
| + .name = "AR7 cascade interrupt", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static void __init ar7_irq_init(int base) |
| diff --git a/arch/mips/bcm63xx/irq.c b/arch/mips/bcm63xx/irq.c |
| index a0c5cd1..3e60c93 100644 |
| --- a/arch/mips/bcm63xx/irq.c |
| +++ b/arch/mips/bcm63xx/irq.c |
| @@ -234,6 +234,7 @@ static struct irq_chip bcm63xx_external_irq_chip = { |
| static struct irqaction cpu_ip2_cascade_action = { |
| .handler = no_action, |
| .name = "cascade_ip2", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| void __init arch_init_irq(void) |
| diff --git a/arch/mips/cobalt/irq.c b/arch/mips/cobalt/irq.c |
| index cb9bf82..0cbd3b6 100644 |
| --- a/arch/mips/cobalt/irq.c |
| +++ b/arch/mips/cobalt/irq.c |
| @@ -48,6 +48,7 @@ asmlinkage void plat_irq_dispatch(void) |
| static struct irqaction cascade = { |
| .handler = no_action, |
| .name = "cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| void __init arch_init_irq(void) |
| diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c |
| index bd5431e..61b8d9c 100644 |
| --- a/arch/mips/dec/setup.c |
| +++ b/arch/mips/dec/setup.c |
| @@ -100,20 +100,24 @@ int cpu_fpu_mask = DEC_CPU_IRQ_MASK(DEC_CPU_INR_FPU); |
| static struct irqaction ioirq = { |
| .handler = no_action, |
| .name = "cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| static struct irqaction fpuirq = { |
| .handler = no_action, |
| .name = "fpu", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static struct irqaction busirq = { |
| .flags = IRQF_DISABLED, |
| .name = "bus error", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static struct irqaction haltirq = { |
| .handler = dec_intr_halt, |
| .name = "halt", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| |
| diff --git a/arch/mips/emma/markeins/irq.c b/arch/mips/emma/markeins/irq.c |
| index 9504b7e..acf3ca9 100644 |
| --- a/arch/mips/emma/markeins/irq.c |
| +++ b/arch/mips/emma/markeins/irq.c |
| @@ -182,7 +182,7 @@ void emma2rh_gpio_irq_init(void) |
| |
| static struct irqaction irq_cascade = { |
| .handler = no_action, |
| - .flags = 0, |
| + .flags = IRQF_NODELAY, |
| .name = "cascade", |
| .dev_id = NULL, |
| .next = NULL, |
| diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c |
| index 1353fb1..c8a4e0e 100644 |
| --- a/arch/mips/lasat/interrupt.c |
| +++ b/arch/mips/lasat/interrupt.c |
| @@ -105,6 +105,7 @@ asmlinkage void plat_irq_dispatch(void) |
| static struct irqaction cascade = { |
| .handler = no_action, |
| .name = "cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| void __init arch_init_irq(void) |
| diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c |
| index 4c3fca1..b985560 100644 |
| --- a/arch/mips/mti-malta/malta-int.c |
| +++ b/arch/mips/mti-malta/malta-int.c |
| @@ -350,12 +350,14 @@ unsigned int plat_ipi_resched_int_xlate(unsigned int cpu) |
| |
| static struct irqaction i8259irq = { |
| .handler = no_action, |
| - .name = "XT-PIC cascade" |
| + .name = "XT-PIC cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static struct irqaction corehi_irqaction = { |
| .handler = no_action, |
| - .name = "CoreHi" |
| + .name = "CoreHi", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static msc_irqmap_t __initdata msc_irqmap[] = { |
| diff --git a/arch/mips/nxp/pnx8550/common/int.c b/arch/mips/nxp/pnx8550/common/int.c |
| index 7aca7d5..ca27dcb 100644 |
| --- a/arch/mips/nxp/pnx8550/common/int.c |
| +++ b/arch/mips/nxp/pnx8550/common/int.c |
| @@ -166,7 +166,7 @@ static struct irq_chip level_irq_type = { |
| |
| static struct irqaction gic_action = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "GIC", |
| }; |
| |
| diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq.c b/arch/mips/pmc-sierra/msp71xx/msp_irq.c |
| index 734d598..704a60b 100644 |
| --- a/arch/mips/pmc-sierra/msp71xx/msp_irq.c |
| +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq.c |
| @@ -97,8 +97,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) |
| } |
| |
| static struct irqaction cascade_msp = { |
| - .handler = no_action, |
| - .name = "MSP cascade" |
| + .handler= no_action, |
| + .name = "MSP cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| |
| diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c |
| index 383f11d..18b1a24 100644 |
| --- a/arch/mips/sgi-ip22/ip22-int.c |
| +++ b/arch/mips/sgi-ip22/ip22-int.c |
| @@ -163,32 +163,32 @@ static void __irq_entry indy_buserror_irq(void) |
| |
| static struct irqaction local0_cascade = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "local0 cascade", |
| }; |
| |
| static struct irqaction local1_cascade = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "local1 cascade", |
| }; |
| |
| static struct irqaction buserr = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "Bus Error", |
| }; |
| |
| static struct irqaction map0_cascade = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "mapable0 cascade", |
| }; |
| |
| #ifdef USE_LIO3_IRQ |
| static struct irqaction map1_cascade = { |
| .handler = no_action, |
| - .flags = IRQF_DISABLED, |
| + .flags = IRQF_DISABLED | IRQF_NODELAY, |
| .name = "mapable1 cascade", |
| }; |
| #define SGI_INTERRUPTS SGINT_END |
| diff --git a/arch/mips/sni/rm200.c b/arch/mips/sni/rm200.c |
| index 31e2583..8a0bb58 100644 |
| --- a/arch/mips/sni/rm200.c |
| +++ b/arch/mips/sni/rm200.c |
| @@ -361,6 +361,7 @@ void sni_rm200_init_8259A(void) |
| static struct irqaction sni_rm200_irq2 = { |
| .handler = no_action, |
| .name = "cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| static struct resource sni_rm200_pic1_resource = { |
| diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c |
| index bef0687..e16b1c8 100644 |
| --- a/arch/mips/vr41xx/common/irq.c |
| +++ b/arch/mips/vr41xx/common/irq.c |
| @@ -33,6 +33,7 @@ static irq_cascade_t irq_cascade[NR_IRQS] __cacheline_aligned; |
| static struct irqaction cascade_irqaction = { |
| .handler = no_action, |
| .name = "cascade", |
| + .flags = IRQF_NODELAY, |
| }; |
| |
| int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int)) |
| -- |
| 1.7.1.1 |
| |