* PATCH: spurious_count cleanup
@ 2001-12-01 5:45 Bradley D. LaRonde
2001-12-04 7:19 ` Atsushi Nemoto
0 siblings, 1 reply; 3+ messages in thread
From: Bradley D. LaRonde @ 2001-12-01 5:45 UTC (permalink / raw)
To: ralf; +Cc: linux-mips
2001-11-30 Bradley D. LaRonde <brad@ltc.com>
arch/mips/kernel/irq.c prints irq_err_count, but spurious_interupt
incremented spurious_count, not irq_err_count. irq_err_count is
used for counting spurious interrupts on other platforms.
* increment irq_err_count instead of spurious_count in spurious_interrupt
* eliminate spurious_count variable
* use common spurious intterrupt handler in au1000
--- arch/mips/au1000/common/int-handler.S 2001/05/18 22:13:23 1.2
+++ arch/mips/au1000/common/int-handler.S 2001/11/30 18:42:05
@@ -65,7 +65,5 @@
5:
move a0, sp
- jal mips_spurious_interrupt
-done:
- j ret_from_irq
+ j spurious_interrupt
END(au1000_IRQ)
--- arch/mips/au1000/common/irq.c 2001/10/31 12:47:14 1.8
+++ arch/mips/au1000/common/irq.c 2001/11/30 18:42:05
@@ -84,7 +84,7 @@
inline void local_enable_irq(unsigned int irq_nr);
inline void local_disable_irq(unsigned int irq_nr);
-unsigned long spurious_interrupts;
+volatile unsigned long irq_err_count;
extern unsigned int do_IRQ(int irq, struct pt_regs *regs);
extern void __init init_generic_irq(void);
@@ -455,12 +455,6 @@
set_debug_traps();
breakpoint();
#endif
-}
-
-
-void mips_spurious_interrupt(struct pt_regs *regs)
-{
- spurious_interrupts++;
}
--- arch/mips/baget/irq.c 2001/03/12 02:46:14 1.12
+++ arch/mips/baget/irq.c 2001/11/30 18:42:05
@@ -27,7 +27,7 @@
#include <asm/baget/baget.h>
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
/*
* This table is a correspondence between IRQ numbers and CPU PILs
--- arch/mips/dec/irq.c 2001/09/27 23:45:52 1.16
+++ arch/mips/dec/irq.c 2001/11/30 18:42:05
@@ -34,7 +34,7 @@
extern asmlinkage void decstation_handle_int(void);
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
static inline void mask_irq(unsigned int irq_nr)
{
--- arch/mips/galileo-boards/ev64120/irq.c 2001/11/05 20:15:26 1.6
+++ arch/mips/galileo-boards/ev64120/irq.c 2001/11/30 18:42:05
@@ -189,7 +189,7 @@
*/
irq_desc_t irq_desc[NR_IRQS];
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
int get_irq_list(char *buf)
{
@@ -219,7 +219,7 @@
}
len += sprintf(buf + len, "\n");
}
- len += sprintf(buf + len, "BAD: %10lu\n", spurious_count);
+ len += sprintf(buf + len, "BAD: %10lu\n", irq_err_count);
return len;
}
--- arch/mips/galileo-boards/ev96100/irq.c 2001/11/30 13:28:06 1.10
+++ arch/mips/galileo-boards/ev96100/irq.c 2001/11/30 18:42:06
@@ -64,7 +64,7 @@
extern asmlinkage void ev96100IRQ(void);
unsigned int local_bh_count[NR_CPUS];
unsigned int local_irq_count[NR_CPUS];
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
irq_desc_t irq_desc[NR_IRQS];
irq_desc_t *irq_desc_base=&irq_desc[0];
@@ -153,7 +153,7 @@
}
len += sprintf(buf+len, "\n");
}
- len += sprintf(buf+len, "BAD: %10lu\n", spurious_count);
+ len += sprintf(buf+len, "BAD: %10lu\n", irq_err_count);
return len;
}
@@ -210,7 +210,7 @@
}
else
{
- spurious_count++;
+ irq_err_count++;
printk("Unhandled interrupt %x, cause %x, disabled\n",
(unsigned)irq, (unsigned)cause);
disable_irq(1<<irq);
--- arch/mips/galileo-boards/ev96100/time.c 2001/10/05 15:08:28 1.5
+++ arch/mips/galileo-boards/ev96100/time.c 2001/11/30 18:42:06
@@ -48,7 +48,6 @@
#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
-extern unsigned long spurious_count;
extern volatile unsigned long wall_jiffies;
unsigned long missed_heart_beats = 0;
--- arch/mips/kernel/entry.S 2001/11/27 01:26:46 1.32
+++ arch/mips/kernel/entry.S 2001/11/30 18:42:07
@@ -95,12 +95,12 @@
* Someone tried to fool us by sending an interrupt but we
* couldn't find a cause for it.
*/
- lui t1,%hi(spurious_count)
+ lui t1,%hi(irq_err_count)
.set reorder
- lw t0,%lo(spurious_count)(t1)
+ lw t0,%lo(irq_err_count)(t1)
.set noreorder
addiu t0,1
- sw t0,%lo(spurious_count)(t1)
+ sw t0,%lo(irq_err_count)(t1)
j ret_from_irq
END(spurious_interrupt)
--- arch/mips/kernel/irq.c 2001/10/12 01:41:17 1.36
+++ arch/mips/kernel/irq.c 2001/11/30 18:42:09
@@ -64,7 +64,7 @@
end_none
};
-volatile unsigned long irq_err_count, spurious_count;
+volatile unsigned long irq_err_count;
/*
* Generic, controller-independent functions:
--- arch/mips/kernel/old-irq.c 2001/08/22 03:23:59 1.5
+++ arch/mips/kernel/old-irq.c 2001/11/30 18:42:09
@@ -69,7 +69,7 @@
#define cached_21 (__byte(0,cached_irq_mask))
#define cached_A1 (__byte(1,cached_irq_mask))
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
/*
* (un)mask_irq, disable_irq() and enable_irq() only handle (E)ISA and
--- arch/mips/mips-boards/atlas/atlas_int.c 2001/05/04 20:43:25 1.7
+++ arch/mips/mips-boards/atlas/atlas_int.c 2001/11/30 18:42:09
@@ -42,7 +42,7 @@
extern asmlinkage void mipsIRQ(void);
extern void do_IRQ(int irq, struct pt_regs *regs);
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
irq_desc_t irq_desc[NR_IRQS];
#if 0
@@ -196,7 +196,7 @@
/* if action == NULL, then we don't have a handler for the irq */
if ( action == NULL ) {
printk("No handler for hw0 irq: %i\n", irq);
- spurious_count++;
+ irq_err_count++;
return;
}
--- arch/mips64/kernel/entry.S 2001/08/22 03:23:59 1.10
+++ arch/mips64/kernel/entry.S 2001/11/30 18:42:09
@@ -81,9 +81,9 @@
* Someone tried to fool us by sending an interrupt but we
* couldn't find a cause for it.
*/
- lui t1,%hi(spurious_count)
- lw t0,%lo(spurious_count)(t1)
+ lui t1,%hi(irq_err_count)
+ lw t0,%lo(irq_err_count)(t1)
addiu t0,1
- sw t0,%lo(spurious_count)(t1)
+ sw t0,%lo(irq_err_count)(t1)
j ret_from_irq
END(spurious_interrupt)
--- arch/mips64/mips-boards/atlas/atlas_int.c 2001/04/27 13:19:19 1.1
+++ arch/mips64/mips-boards/atlas/atlas_int.c 2001/11/30 18:42:09
@@ -43,7 +43,7 @@
extern asmlinkage void mipsIRQ(void);
extern void do_IRQ(int irq, struct pt_regs *regs);
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
irq_desc_t irq_desc[NR_IRQS];
#if 0
@@ -192,7 +192,7 @@
/* if action == NULL, then we don't have a handler for the irq */
if ( action == NULL ) {
printk("No handler for hw0 irq: %i\n", irq);
- spurious_count++;
+ irq_err_count++;
return;
}
--- arch/mips64/mips-boards/malta/malta_int.c 2001/04/27 13:19:19 1.1
+++ arch/mips64/mips-boards/malta/malta_int.c 2001/11/30 18:42:10
@@ -45,7 +45,7 @@
unsigned int local_bh_count[NR_CPUS];
unsigned int local_irq_count[NR_CPUS];
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
static struct irqaction *hw0_irq_action[MALTAINT_END] = {
NULL, NULL, NULL, NULL,
--- arch/mips64/sgi-ip22/ip22-int.c 2001/03/18 04:20:23 1.10
+++ arch/mips64/sgi-ip22/ip22-int.c 2001/11/30 18:42:12
@@ -68,7 +68,7 @@
extern void rs_kgdb_hook(int);
#endif
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
/* Local IRQ's are layed out logically like this:
*
--- arch/mips64/sgi-ip27/ip27-irq.c 2001/11/30 13:28:06 1.43
+++ arch/mips64/sgi-ip27/ip27-irq.c 2001/11/30 18:42:12
@@ -73,7 +73,7 @@
int intr_connect_level(int cpu, int bit);
int intr_disconnect_level(int cpu, int bit);
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
/*
* There is a single intpend register per node, and we want to have
--- arch/mips64/sgi-ip32/ip32-irq.c 2001/10/27 00:49:55 1.3
+++ arch/mips64/sgi-ip32/ip32-irq.c 2001/11/30 18:42:13
@@ -116,7 +116,7 @@
0, "CRIME CPU error", NULL,
NULL };
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
extern void ip32_handle_int (void);
asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs);
@@ -605,7 +605,7 @@
do_IRQ (CLOCK_IRQ, regs);
}
-volatile unsigned long irq_err_count, spurious_count;
+volatile unsigned long irq_err_count;
/*
* Generic, controller-independent functions:
--- arch/mips64/sibyte/sb1250/irq.c 2001/11/08 02:22:49 1.1
+++ arch/mips64/sibyte/sb1250/irq.c 2001/11/30 18:42:13
@@ -188,12 +188,12 @@
/* Defined in arch/mips/sibyte/sb1250/irq_handler.S */
extern void sb1250_irq_handler(void);
/*
- * spurious_count is used in arch/mips/kernel/entry.S to record the
+ * irq_err_count is used in arch/mips/kernel/entry.S to record the
* number of spurious interrupts we see before the handler is installed.
* It doesn't provide any particularly relevant information for us, so
* we basically ignore it.
*/
-unsigned long spurious_count = 0;
+volatile unsigned long irq_err_count;
/*
* The interrupt handler calls this once for every unmasked interrupt
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: PATCH: spurious_count cleanup
2001-12-01 5:45 PATCH: spurious_count cleanup Bradley D. LaRonde
@ 2001-12-04 7:19 ` Atsushi Nemoto
2001-12-07 2:47 ` Ralf Baechle
0 siblings, 1 reply; 3+ messages in thread
From: Atsushi Nemoto @ 2001-12-04 7:19 UTC (permalink / raw)
To: brad; +Cc: ralf, linux-mips
BTW, ".set noreorder" in this code seems dangerous while the jump
instruction is not followed by nop...
> --- arch/mips/kernel/entry.S 2001/11/27 01:26:46 1.32
> +++ arch/mips/kernel/entry.S 2001/11/30 18:42:07
> @@ -95,12 +95,12 @@
> * Someone tried to fool us by sending an interrupt but we
> * couldn't find a cause for it.
> */
> - lui t1,%hi(spurious_count)
> + lui t1,%hi(irq_err_count)
> .set reorder
> - lw t0,%lo(spurious_count)(t1)
> + lw t0,%lo(irq_err_count)(t1)
> .set noreorder
> addiu t0,1
> - sw t0,%lo(spurious_count)(t1)
> + sw t0,%lo(irq_err_count)(t1)
> j ret_from_irq
> END(spurious_interrupt)
>
---
Atsushi Nemoto
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PATCH: spurious_count cleanup
2001-12-04 7:19 ` Atsushi Nemoto
@ 2001-12-07 2:47 ` Ralf Baechle
0 siblings, 0 replies; 3+ messages in thread
From: Ralf Baechle @ 2001-12-07 2:47 UTC (permalink / raw)
To: Atsushi Nemoto; +Cc: brad, linux-mips
On Tue, Dec 04, 2001 at 04:19:28PM +0900, Atsushi Nemoto wrote:
> > --- arch/mips/kernel/entry.S 2001/11/27 01:26:46 1.32
> > +++ arch/mips/kernel/entry.S 2001/11/30 18:42:07
> > @@ -95,12 +95,12 @@
> > * Someone tried to fool us by sending an interrupt but we
> > * couldn't find a cause for it.
> > */
> > - lui t1,%hi(spurious_count)
> > + lui t1,%hi(irq_err_count)
> > .set reorder
> > - lw t0,%lo(spurious_count)(t1)
> > + lw t0,%lo(irq_err_count)(t1)
> > .set noreorder
> > addiu t0,1
> > - sw t0,%lo(spurious_count)(t1)
> > + sw t0,%lo(irq_err_count)(t1)
> > j ret_from_irq
> > END(spurious_interrupt)
The spurious_count vs. irq_err_count is already fixed in the meantime.
For the rest of the function using noreorder was entirely pointless, so
just removed those directives.
Ralf
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2001-12-07 15:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-12-01 5:45 PATCH: spurious_count cleanup Bradley D. LaRonde
2001-12-04 7:19 ` Atsushi Nemoto
2001-12-07 2:47 ` Ralf Baechle
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.