Commit | Line | Data |
---|---|---|
22da7b3d BG |
1 | #ifndef _ASM_X86_HARDIRQ_H |
2 | #define _ASM_X86_HARDIRQ_H | |
3 | ||
4 | #include <linux/threads.h> | |
5 | #include <linux/irq.h> | |
6 | ||
7 | typedef struct { | |
8 | unsigned int __softirq_pending; | |
9 | unsigned int __nmi_count; /* arch dependent */ | |
22da7b3d | 10 | unsigned int irq0_irqs; |
2de3a5f7 BG |
11 | #ifdef CONFIG_X86_LOCAL_APIC |
12 | unsigned int apic_timer_irqs; /* arch dependent */ | |
13 | unsigned int irq_spurious_count; | |
14 | #endif | |
4a4de9c7 | 15 | unsigned int x86_platform_ipis; /* arch dependent */ |
bfe2a3c3 | 16 | unsigned int apic_perf_irqs; |
e360adbe | 17 | unsigned int apic_irq_work_irqs; |
2de3a5f7 | 18 | #ifdef CONFIG_SMP |
22da7b3d BG |
19 | unsigned int irq_resched_count; |
20 | unsigned int irq_call_count; | |
21 | unsigned int irq_tlb_count; | |
2de3a5f7 | 22 | #endif |
0444c9bd | 23 | #ifdef CONFIG_X86_THERMAL_VECTOR |
22da7b3d | 24 | unsigned int irq_thermal_count; |
0444c9bd JB |
25 | #endif |
26 | #ifdef CONFIG_X86_MCE_THRESHOLD | |
22da7b3d | 27 | unsigned int irq_threshold_count; |
2de3a5f7 | 28 | #endif |
22da7b3d BG |
29 | } ____cacheline_aligned irq_cpustat_t; |
30 | ||
9b8de747 | 31 | DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); |
22da7b3d BG |
32 | |
33 | /* We can have at most NR_VECTORS irqs routed to a cpu at a time */ | |
34 | #define MAX_HARDIRQS_PER_CPU NR_VECTORS | |
35 | ||
36 | #define __ARCH_IRQ_STAT | |
37 | ||
402af0d7 | 38 | #define inc_irq_stat(member) percpu_inc(irq_stat.member) |
22da7b3d BG |
39 | |
40 | #define local_softirq_pending() percpu_read(irq_stat.__softirq_pending) | |
41 | ||
42 | #define __ARCH_SET_SOFTIRQ_PENDING | |
43 | ||
44 | #define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x)) | |
45 | #define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x)) | |
46 | ||
47 | extern void ack_bad_irq(unsigned int irq); | |
a2eddfa9 JB |
48 | |
49 | extern u64 arch_irq_stat_cpu(unsigned int cpu); | |
50 | #define arch_irq_stat_cpu arch_irq_stat_cpu | |
51 | ||
52 | extern u64 arch_irq_stat(void); | |
53 | #define arch_irq_stat arch_irq_stat | |
22da7b3d BG |
54 | |
55 | #endif /* _ASM_X86_HARDIRQ_H */ |