]>
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 */ | |
2de3a5f7 BG |
10 | #ifdef CONFIG_X86_LOCAL_APIC |
11 | unsigned int apic_timer_irqs; /* arch dependent */ | |
12 | unsigned int irq_spurious_count; | |
b49d7d87 | 13 | unsigned int icr_read_retry_count; |
d78f2664 YZ |
14 | #endif |
15 | #ifdef CONFIG_HAVE_KVM | |
16 | unsigned int kvm_posted_intr_ipis; | |
f6b3c72c | 17 | unsigned int kvm_posted_intr_wakeup_ipis; |
2de3a5f7 | 18 | #endif |
4a4de9c7 | 19 | unsigned int x86_platform_ipis; /* arch dependent */ |
bfe2a3c3 | 20 | unsigned int apic_perf_irqs; |
e360adbe | 21 | unsigned int apic_irq_work_irqs; |
2de3a5f7 | 22 | #ifdef CONFIG_SMP |
22da7b3d BG |
23 | unsigned int irq_resched_count; |
24 | unsigned int irq_call_count; | |
25 | unsigned int irq_tlb_count; | |
2de3a5f7 | 26 | #endif |
0444c9bd | 27 | #ifdef CONFIG_X86_THERMAL_VECTOR |
22da7b3d | 28 | unsigned int irq_thermal_count; |
0444c9bd JB |
29 | #endif |
30 | #ifdef CONFIG_X86_MCE_THRESHOLD | |
22da7b3d | 31 | unsigned int irq_threshold_count; |
2de3a5f7 | 32 | #endif |
24fd78a8 AG |
33 | #ifdef CONFIG_X86_MCE_AMD |
34 | unsigned int irq_deferred_error_count; | |
35 | #endif | |
7ff42473 | 36 | #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN) |
929320e4 TG |
37 | unsigned int irq_hv_callback_count; |
38 | #endif | |
22da7b3d BG |
39 | } ____cacheline_aligned irq_cpustat_t; |
40 | ||
9b8de747 | 41 | DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); |
22da7b3d | 42 | |
22da7b3d BG |
43 | #define __ARCH_IRQ_STAT |
44 | ||
c6ae41e7 | 45 | #define inc_irq_stat(member) this_cpu_inc(irq_stat.member) |
22da7b3d | 46 | |
c6ae41e7 | 47 | #define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending) |
22da7b3d BG |
48 | |
49 | #define __ARCH_SET_SOFTIRQ_PENDING | |
50 | ||
c6ae41e7 AS |
51 | #define set_softirq_pending(x) \ |
52 | this_cpu_write(irq_stat.__softirq_pending, (x)) | |
53 | #define or_softirq_pending(x) this_cpu_or(irq_stat.__softirq_pending, (x)) | |
22da7b3d BG |
54 | |
55 | extern void ack_bad_irq(unsigned int irq); | |
a2eddfa9 JB |
56 | |
57 | extern u64 arch_irq_stat_cpu(unsigned int cpu); | |
58 | #define arch_irq_stat_cpu arch_irq_stat_cpu | |
59 | ||
60 | extern u64 arch_irq_stat(void); | |
61 | #define arch_irq_stat arch_irq_stat | |
22da7b3d BG |
62 | |
63 | #endif /* _ASM_X86_HARDIRQ_H */ |