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; | |
fd0f5869 TS |
25 | /* |
26 | * irq_tlb_count is double-counted in irq_call_count, so it must be | |
27 | * subtracted from irq_call_count when displaying irq_call_count | |
28 | */ | |
22da7b3d | 29 | unsigned int irq_tlb_count; |
2de3a5f7 | 30 | #endif |
0444c9bd | 31 | #ifdef CONFIG_X86_THERMAL_VECTOR |
22da7b3d | 32 | unsigned int irq_thermal_count; |
0444c9bd JB |
33 | #endif |
34 | #ifdef CONFIG_X86_MCE_THRESHOLD | |
22da7b3d | 35 | unsigned int irq_threshold_count; |
2de3a5f7 | 36 | #endif |
24fd78a8 AG |
37 | #ifdef CONFIG_X86_MCE_AMD |
38 | unsigned int irq_deferred_error_count; | |
39 | #endif | |
7ff42473 | 40 | #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN) |
929320e4 TG |
41 | unsigned int irq_hv_callback_count; |
42 | #endif | |
22da7b3d BG |
43 | } ____cacheline_aligned irq_cpustat_t; |
44 | ||
9b8de747 | 45 | DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); |
22da7b3d | 46 | |
22da7b3d BG |
47 | #define __ARCH_IRQ_STAT |
48 | ||
c6ae41e7 | 49 | #define inc_irq_stat(member) this_cpu_inc(irq_stat.member) |
22da7b3d | 50 | |
c6ae41e7 | 51 | #define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending) |
22da7b3d BG |
52 | |
53 | #define __ARCH_SET_SOFTIRQ_PENDING | |
54 | ||
c6ae41e7 AS |
55 | #define set_softirq_pending(x) \ |
56 | this_cpu_write(irq_stat.__softirq_pending, (x)) | |
57 | #define or_softirq_pending(x) this_cpu_or(irq_stat.__softirq_pending, (x)) | |
22da7b3d BG |
58 | |
59 | extern void ack_bad_irq(unsigned int irq); | |
a2eddfa9 JB |
60 | |
61 | extern u64 arch_irq_stat_cpu(unsigned int cpu); | |
62 | #define arch_irq_stat_cpu arch_irq_stat_cpu | |
63 | ||
64 | extern u64 arch_irq_stat(void); | |
65 | #define arch_irq_stat arch_irq_stat | |
22da7b3d BG |
66 | |
67 | #endif /* _ASM_X86_HARDIRQ_H */ |