From: Masahiro A. <m-...@aa...> - 2001-07-13 11:34:41
|
On Thu, 12 Jul 2001 17:17:29 +0900 (JST) NIIBE Yutaka <gn...@m1...> wrote: > The semantics has been changed. I simply forgot to update > irq_{imask,intc2,ipr}.c. We need not to enable (unmask) the IRQ if > it's disabled. Your irq_maskreg.c needs similar change. Please look at > the change I've done (just committed). I've found some more changes needed. Please apply if those are appropriate. ----- diff -ruN linux-cvs0712/arch/sh/kernel/irq_ipr.c linux-cvs0712+/arch/sh/kernel/irq_ipr.c --- linux-cvs0712/arch/sh/kernel/irq_ipr.c Thu Jul 12 18:22:32 2001 +++ linux-cvs0712+/arch/sh/kernel/irq_ipr.c Fri Jul 13 19:46:43 2001 @@ -177,7 +177,8 @@ static void end_pint_irq(unsigned int irq) { - enable_pint_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + enable_pint_irq(irq); } void make_pint_irq(unsigned int irq) diff -ruN linux-cvs0712/arch/sh/kernel/setup_bigsur.c linux-cvs0712+/arch/sh/kernel/setup_bigsur.c --- linux-cvs0712/arch/sh/kernel/setup_bigsur.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_bigsur.c Fri Jul 13 19:57:29 2001 @@ -181,10 +181,12 @@ static void end_bigsur_irq(unsigned int irq) { DPRINTK("end_bigsur_irq IRQ %d\n", irq); - if(irq >= BIGSUR_IRQ_LOW && irq < BIGSUR_IRQ_HIGH) - enable_bigsur_l1irq(irq); - else - enable_bigsur_l2irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) { + if(irq >= BIGSUR_IRQ_LOW && irq < BIGSUR_IRQ_HIGH) + enable_bigsur_l1irq(irq); + else + enable_bigsur_l2irq(irq); + } } static unsigned int startup_bigsur_irq(unsigned int irq) diff -ruN linux-cvs0712/arch/sh/kernel/setup_cqreek.c linux-cvs0712+/arch/sh/kernel/setup_cqreek.c --- linux-cvs0712/arch/sh/kernel/setup_cqreek.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_cqreek.c Fri Jul 13 19:54:23 2001 @@ -93,7 +93,8 @@ static void end_cqreek_irq(unsigned int irq) { - enable_cqreek_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + enable_cqreek_irq(irq); } static unsigned int startup_cqreek_irq(unsigned int irq) diff -ruN linux-cvs0712/arch/sh/kernel/setup_dc.c linux-cvs0712+/arch/sh/kernel/setup_dc.c --- linux-cvs0712/arch/sh/kernel/setup_dc.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_dc.c Fri Jul 13 19:59:49 2001 @@ -98,7 +98,8 @@ /* After a IRQ has been ack'd and responded to, it needs to be renabled */ static void end_systemasic_irq(unsigned int irq) { - enable_systemasic_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + enable_systemasic_irq(irq); } static unsigned int startup_systemasic_irq(unsigned int irq) diff -ruN linux-cvs0712/arch/sh/kernel/setup_ec3104.c linux-cvs0712+/arch/sh/kernel/setup_ec3104.c --- linux-cvs0712/arch/sh/kernel/setup_ec3104.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_ec3104.c Fri Jul 13 20:02:35 2001 @@ -167,7 +167,8 @@ static void end_ec3104_irq(unsigned int irq) { - unmask_ec3104_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + unmask_ec3104_irq(irq); } static unsigned int startup_ec3104_irq(unsigned int irq) diff -ruN linux-cvs0712/arch/sh/kernel/setup_hd64461.c linux-cvs0712+/arch/sh/kernel/setup_hd64461.c --- linux-cvs0712/arch/sh/kernel/setup_hd64461.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_hd64461.c Fri Jul 13 20:09:59 2001 @@ -57,7 +57,8 @@ static void end_hd64461_irq(unsigned int irq) { - enable_hd64461_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + enable_hd64461_irq(irq); } diff -ruN linux-cvs0712/arch/sh/kernel/setup_hd64465.c linux-cvs0712+/arch/sh/kernel/setup_hd64465.c --- linux-cvs0712/arch/sh/kernel/setup_hd64465.c Thu Jul 12 18:16:28 2001 +++ linux-cvs0712+/arch/sh/kernel/setup_hd64465.c Fri Jul 13 20:10:16 2001 @@ -70,7 +70,8 @@ static void end_hd64465_irq(unsigned int irq) { - enable_hd64465_irq(irq); + if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) + enable_hd64465_irq(irq); } ----- ================================= Masahiro ABE, A&D Co., Ltd. Japan |