aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/include
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2013-05-06 15:20:26 -0400
committerHelge Deller <deller@gmx.de>2013-05-07 16:39:22 -0400
commitcd85d5514d5c4d7e78abac923fc032457d0c5091 (patch)
treeb8a9ce478be624481fa8ec7341dd0ab96e7fb7ca /arch/parisc/include
parent200c880420a2c02a0899120ce52d801fad705b90 (diff)
parisc: more irq statistics in /proc/interrupts
Add framework and initial values for more fine grained statistics in /proc/interrupts. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/include')
-rw-r--r--arch/parisc/include/asm/hardirq.h36
-rw-r--r--arch/parisc/include/asm/processor.h1
2 files changed, 35 insertions, 2 deletions
diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h
index 0d68184a76cb..a9c0fb195253 100644
--- a/arch/parisc/include/asm/hardirq.h
+++ b/arch/parisc/include/asm/hardirq.h
@@ -1,11 +1,45 @@
1/* hardirq.h: PA-RISC hard IRQ support. 1/* hardirq.h: PA-RISC hard IRQ support.
2 * 2 *
3 * Copyright (C) 2001 Matthew Wilcox <matthew@wil.cx> 3 * Copyright (C) 2001 Matthew Wilcox <matthew@wil.cx>
4 * Copyright (C) 2013 Helge Deller <deller@gmx.de>
4 */ 5 */
5 6
6#ifndef _PARISC_HARDIRQ_H 7#ifndef _PARISC_HARDIRQ_H
7#define _PARISC_HARDIRQ_H 8#define _PARISC_HARDIRQ_H
8 9
9#include <asm-generic/hardirq.h> 10#include <linux/cache.h>
11#include <linux/threads.h>
12#include <linux/irq.h>
13
14typedef struct {
15 unsigned int __softirq_pending;
16#ifdef CONFIG_DEBUG_STACKOVERFLOW
17 unsigned int kernel_stack_usage;
18#endif
19#ifdef CONFIG_SMP
20 unsigned int irq_resched_count;
21 unsigned int irq_call_count;
22 /*
23 * irq_tlb_count is double-counted in irq_call_count, so it must be
24 * subtracted from irq_call_count when displaying irq_call_count
25 */
26 unsigned int irq_tlb_count;
27#endif
28} ____cacheline_aligned irq_cpustat_t;
29
30DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
31
32#define __ARCH_IRQ_STAT
33#define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)
34#define inc_irq_stat(member) this_cpu_inc(irq_stat.member)
35#define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending)
36
37#define __ARCH_SET_SOFTIRQ_PENDING
38
39#define set_softirq_pending(x) \
40 this_cpu_write(irq_stat.__softirq_pending, (x))
41#define or_softirq_pending(x) this_cpu_or(irq_stat.__softirq_pending, (x))
42
43#define ack_bad_irq(irq) WARN(1, "unexpected IRQ trap at vector %02x\n", irq)
10 44
11#endif /* _PARISC_HARDIRQ_H */ 45#endif /* _PARISC_HARDIRQ_H */
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
index 242f06a5fbd8..064015547d1e 100644
--- a/arch/parisc/include/asm/processor.h
+++ b/arch/parisc/include/asm/processor.h
@@ -112,7 +112,6 @@ struct cpuinfo_parisc {
112 unsigned long txn_addr; /* MMIO addr of EIR or id_eid */ 112 unsigned long txn_addr; /* MMIO addr of EIR or id_eid */
113#ifdef CONFIG_SMP 113#ifdef CONFIG_SMP
114 unsigned long pending_ipi; /* bitmap of type ipi_message_type */ 114 unsigned long pending_ipi; /* bitmap of type ipi_message_type */
115 unsigned long ipi_count; /* number ipi Interrupts */
116#endif 115#endif
117 unsigned long bh_count; /* number of times bh was invoked */ 116 unsigned long bh_count; /* number of times bh was invoked */
118 unsigned long prof_counter; /* per CPU profiling support */ 117 unsigned long prof_counter; /* per CPU profiling support */