This has gone out of sync over time. Introduce a simplistic mechanism to hopefully keep things in sync going forward.
Signed-off-by: Jan Beulich <jbeul...@suse.com> --- I wasn't sure about the #ifdef: Using CONFIG_PERF_COUNTERS there would seem slightly odd next to a construct which specifically abstracts away this aspect. --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -3869,7 +3869,10 @@ void vmx_vmexit_handler(struct cpu_user_ else HVMTRACE_ND(VMEXIT, 0, 1/*cycles*/, exit_reason, regs->eip); - perfc_incra(vmexits, exit_reason); +#ifdef VMX_PERF_EXIT_REASON_SIZE + BUILD_BUG_ON(VMX_PERF_EXIT_REASON_SIZE != EXIT_REASON_LAST + 1); +#endif + perfc_incra(vmexits, (uint16_t)exit_reason); /* Handle the interrupt we missed before allowing any more in. */ switch ( (uint16_t)exit_reason ) --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -220,6 +220,8 @@ static inline void pi_clear_sn(struct pi #define EXIT_REASON_XSAVES 63 #define EXIT_REASON_XRSTORS 64 +#define EXIT_REASON_LAST EXIT_REASON_XRSTORS + /* * Interruption-information format */ --- a/xen/include/asm-x86/perfc_defn.h +++ b/xen/include/asm-x86/perfc_defn.h @@ -6,7 +6,7 @@ PERFCOUNTER_ARRAY(exceptions, #ifdef CONFIG_HVM -#define VMX_PERF_EXIT_REASON_SIZE 56 +#define VMX_PERF_EXIT_REASON_SIZE 65 #define VMX_PERF_VECTOR_SIZE 0x20 PERFCOUNTER_ARRAY(vmexits, "vmexits", VMX_PERF_EXIT_REASON_SIZE) PERFCOUNTER_ARRAY(cause_vector, "cause vector", VMX_PERF_VECTOR_SIZE)