root/arch/x86/include/asm/hardirq.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. kvm_set_cpu_l1tf_flush_l1d
  2. kvm_clear_cpu_l1tf_flush_l1d
  3. kvm_get_cpu_l1tf_flush_l1d
  4. kvm_set_cpu_l1tf_flush_l1d

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_X86_HARDIRQ_H
   3 #define _ASM_X86_HARDIRQ_H
   4 
   5 #include <linux/threads.h>
   6 
   7 typedef struct {
   8         u16          __softirq_pending;
   9 #if IS_ENABLED(CONFIG_KVM_INTEL)
  10         u8           kvm_cpu_l1tf_flush_l1d;
  11 #endif
  12         unsigned int __nmi_count;       /* arch dependent */
  13 #ifdef CONFIG_X86_LOCAL_APIC
  14         unsigned int apic_timer_irqs;   /* arch dependent */
  15         unsigned int irq_spurious_count;
  16         unsigned int icr_read_retry_count;
  17 #endif
  18 #ifdef CONFIG_HAVE_KVM
  19         unsigned int kvm_posted_intr_ipis;
  20         unsigned int kvm_posted_intr_wakeup_ipis;
  21         unsigned int kvm_posted_intr_nested_ipis;
  22 #endif
  23         unsigned int x86_platform_ipis; /* arch dependent */
  24         unsigned int apic_perf_irqs;
  25         unsigned int apic_irq_work_irqs;
  26 #ifdef CONFIG_SMP
  27         unsigned int irq_resched_count;
  28         unsigned int irq_call_count;
  29 #endif
  30         unsigned int irq_tlb_count;
  31 #ifdef CONFIG_X86_THERMAL_VECTOR
  32         unsigned int irq_thermal_count;
  33 #endif
  34 #ifdef CONFIG_X86_MCE_THRESHOLD
  35         unsigned int irq_threshold_count;
  36 #endif
  37 #ifdef CONFIG_X86_MCE_AMD
  38         unsigned int irq_deferred_error_count;
  39 #endif
  40 #ifdef CONFIG_X86_HV_CALLBACK_VECTOR
  41         unsigned int irq_hv_callback_count;
  42 #endif
  43 #if IS_ENABLED(CONFIG_HYPERV)
  44         unsigned int irq_hv_reenlightenment_count;
  45         unsigned int hyperv_stimer0_count;
  46 #endif
  47 } ____cacheline_aligned irq_cpustat_t;
  48 
  49 DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
  50 
  51 #define __ARCH_IRQ_STAT
  52 
  53 #define inc_irq_stat(member)    this_cpu_inc(irq_stat.member)
  54 
  55 extern void ack_bad_irq(unsigned int irq);
  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
  62 
  63 
  64 #if IS_ENABLED(CONFIG_KVM_INTEL)
  65 static inline void kvm_set_cpu_l1tf_flush_l1d(void)
  66 {
  67         __this_cpu_write(irq_stat.kvm_cpu_l1tf_flush_l1d, 1);
  68 }
  69 
  70 static inline void kvm_clear_cpu_l1tf_flush_l1d(void)
  71 {
  72         __this_cpu_write(irq_stat.kvm_cpu_l1tf_flush_l1d, 0);
  73 }
  74 
  75 static inline bool kvm_get_cpu_l1tf_flush_l1d(void)
  76 {
  77         return __this_cpu_read(irq_stat.kvm_cpu_l1tf_flush_l1d);
  78 }
  79 #else /* !IS_ENABLED(CONFIG_KVM_INTEL) */
  80 static inline void kvm_set_cpu_l1tf_flush_l1d(void) { }
  81 #endif /* IS_ENABLED(CONFIG_KVM_INTEL) */
  82 
  83 #endif /* _ASM_X86_HARDIRQ_H */

/* [<][>][^][v][top][bottom][index][help] */