aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/hardirq_32.h14
-rw-r--r--arch/x86/include/asm/hardirq_64.h10
2 files changed, 15 insertions, 9 deletions
diff --git a/arch/x86/include/asm/hardirq_32.h b/arch/x86/include/asm/hardirq_32.h
index a70ed050fdef..e5a332c28c98 100644
--- a/arch/x86/include/asm/hardirq_32.h
+++ b/arch/x86/include/asm/hardirq_32.h
@@ -14,6 +14,7 @@ typedef struct {
14 unsigned int irq_tlb_count; 14 unsigned int irq_tlb_count;
15 unsigned int irq_thermal_count; 15 unsigned int irq_thermal_count;
16 unsigned int irq_spurious_count; 16 unsigned int irq_spurious_count;
17 unsigned int irq_threshold_count;
17} ____cacheline_aligned irq_cpustat_t; 18} ____cacheline_aligned irq_cpustat_t;
18 19
19DECLARE_PER_CPU(irq_cpustat_t, irq_stat); 20DECLARE_PER_CPU(irq_cpustat_t, irq_stat);
@@ -22,11 +23,16 @@ DECLARE_PER_CPU(irq_cpustat_t, irq_stat);
22#define MAX_HARDIRQS_PER_CPU NR_VECTORS 23#define MAX_HARDIRQS_PER_CPU NR_VECTORS
23 24
24#define __ARCH_IRQ_STAT 25#define __ARCH_IRQ_STAT
25#define __IRQ_STAT(cpu, member) (per_cpu(irq_stat, cpu).member)
26 26
27#define inc_irq_stat(member) (__get_cpu_var(irq_stat).member++) 27#define inc_irq_stat(member) percpu_add(irq_stat.member, 1)
28 28
29void ack_bad_irq(unsigned int irq); 29#define local_softirq_pending() percpu_read(irq_stat.__softirq_pending)
30#include <linux/irq_cpustat.h> 30
31#define __ARCH_SET_SOFTIRQ_PENDING
32
33#define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x))
34#define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x))
35
36extern void ack_bad_irq(unsigned int irq);
31 37
32#endif /* _ASM_X86_HARDIRQ_32_H */ 38#endif /* _ASM_X86_HARDIRQ_32_H */
diff --git a/arch/x86/include/asm/hardirq_64.h b/arch/x86/include/asm/hardirq_64.h
index 873c3c7bffcc..392e7d614579 100644
--- a/arch/x86/include/asm/hardirq_64.h
+++ b/arch/x86/include/asm/hardirq_64.h
@@ -22,16 +22,16 @@ DECLARE_PER_CPU(irq_cpustat_t, irq_stat);
22/* We can have at most NR_VECTORS irqs routed to a cpu at a time */ 22/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
23#define MAX_HARDIRQS_PER_CPU NR_VECTORS 23#define MAX_HARDIRQS_PER_CPU NR_VECTORS
24 24
25#define __ARCH_IRQ_STAT 1 25#define __ARCH_IRQ_STAT
26 26
27#define inc_irq_stat(member) percpu_add(irq_stat.member, 1) 27#define inc_irq_stat(member) percpu_add(irq_stat.member, 1)
28 28
29#define local_softirq_pending() percpu_read(irq_stat.__softirq_pending) 29#define local_softirq_pending() percpu_read(irq_stat.__softirq_pending)
30 30
31#define __ARCH_SET_SOFTIRQ_PENDING 1 31#define __ARCH_SET_SOFTIRQ_PENDING
32 32
33#define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x)) 33#define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x))
34#define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x)) 34#define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x))
35 35
36extern void ack_bad_irq(unsigned int irq); 36extern void ack_bad_irq(unsigned int irq);
37 37