On Tue, Mar 7, 2023 at 12:32 AM David Matlack <dmatlack@xxxxxxxxxx> wrote: > > Refactor the various KVM stats macros to reduce the amount of duplicate > macro code. This change also improves readability by spelling out > "CUMULATIVE", "INSTANT", and "PEAK" instead of the previous short-hands > which were less clear ("COUNTER", "ICOUNTER", and "PCOUNTER"). > > No functional change intended. > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > Signed-off-by: David Matlack <dmatlack@xxxxxxxxxx> For KVM RISC-V: Acked-by: Anup Patel <anup@xxxxxxxxxxxxxx> Regards, Anup > --- > arch/arm64/kvm/guest.c | 14 +-- > arch/mips/kvm/mips.c | 54 +++++------ > arch/powerpc/kvm/book3s.c | 62 ++++++------ > arch/powerpc/kvm/booke.c | 48 ++++----- > arch/riscv/kvm/vcpu.c | 16 +-- > arch/s390/kvm/kvm-s390.c | 198 +++++++++++++++++++------------------- > arch/x86/kvm/x86.c | 94 +++++++++--------- > include/linux/kvm_host.h | 95 ++++++------------ > 8 files changed, 272 insertions(+), 309 deletions(-) > > diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c > index 07444fa22888..890ed444c237 100644 > --- a/arch/arm64/kvm/guest.c > +++ b/arch/arm64/kvm/guest.c > @@ -44,13 +44,13 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, hvc_exit_stat), > - STATS_DESC_COUNTER(VCPU, wfe_exit_stat), > - STATS_DESC_COUNTER(VCPU, wfi_exit_stat), > - STATS_DESC_COUNTER(VCPU, mmio_exit_user), > - STATS_DESC_COUNTER(VCPU, mmio_exit_kernel), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, exits) > + KVM_STAT(VCPU, CUMULATIVE, NONE, hvc_exit_stat), > + KVM_STAT(VCPU, CUMULATIVE, NONE, wfe_exit_stat), > + KVM_STAT(VCPU, CUMULATIVE, NONE, wfi_exit_stat), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exit_user), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exit_kernel), > + KVM_STAT(VCPU, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exits) > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c > index 36c8991b5d39..b7b2fa400bcf 100644 > --- a/arch/mips/kvm/mips.c > +++ b/arch/mips/kvm/mips.c > @@ -53,34 +53,34 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, wait_exits), > - STATS_DESC_COUNTER(VCPU, cache_exits), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, int_exits), > - STATS_DESC_COUNTER(VCPU, cop_unusable_exits), > - STATS_DESC_COUNTER(VCPU, tlbmod_exits), > - STATS_DESC_COUNTER(VCPU, tlbmiss_ld_exits), > - STATS_DESC_COUNTER(VCPU, tlbmiss_st_exits), > - STATS_DESC_COUNTER(VCPU, addrerr_st_exits), > - STATS_DESC_COUNTER(VCPU, addrerr_ld_exits), > - STATS_DESC_COUNTER(VCPU, syscall_exits), > - STATS_DESC_COUNTER(VCPU, resvd_inst_exits), > - STATS_DESC_COUNTER(VCPU, break_inst_exits), > - STATS_DESC_COUNTER(VCPU, trap_inst_exits), > - STATS_DESC_COUNTER(VCPU, msa_fpe_exits), > - STATS_DESC_COUNTER(VCPU, fpe_exits), > - STATS_DESC_COUNTER(VCPU, msa_disabled_exits), > - STATS_DESC_COUNTER(VCPU, flush_dcache_exits), > - STATS_DESC_COUNTER(VCPU, vz_gpsi_exits), > - STATS_DESC_COUNTER(VCPU, vz_gsfc_exits), > - STATS_DESC_COUNTER(VCPU, vz_hc_exits), > - STATS_DESC_COUNTER(VCPU, vz_grr_exits), > - STATS_DESC_COUNTER(VCPU, vz_gva_exits), > - STATS_DESC_COUNTER(VCPU, vz_ghfc_exits), > - STATS_DESC_COUNTER(VCPU, vz_gpa_exits), > - STATS_DESC_COUNTER(VCPU, vz_resvd_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, wait_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, cache_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, int_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, cop_unusable_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, tlbmod_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, tlbmiss_ld_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, tlbmiss_st_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, addrerr_st_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, addrerr_ld_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, syscall_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, resvd_inst_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, break_inst_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, trap_inst_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, msa_fpe_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, fpe_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, msa_disabled_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, flush_dcache_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_gpsi_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_gsfc_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_hc_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_grr_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_gva_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_ghfc_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_gpa_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_resvd_exits), > #ifdef CONFIG_CPU_LOONGSON64 > - STATS_DESC_COUNTER(VCPU, vz_cpucfg_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, vz_cpucfg_exits), > #endif > }; > > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c > index 57f4e7896d67..8a7a932961d5 100644 > --- a/arch/powerpc/kvm/book3s.c > +++ b/arch/powerpc/kvm/book3s.c > @@ -40,8 +40,8 @@ > > const struct _kvm_stats_desc kvm_vm_stats_desc[] = { > KVM_GENERIC_VM_STATS(), > - STATS_DESC_ICOUNTER(VM, num_2M_pages), > - STATS_DESC_ICOUNTER(VM, num_1G_pages) > + KVM_STAT(VM, INSTANT, NONE, num_2M_pages), > + KVM_STAT(VM, INSTANT, NONE, num_1G_pages) > }; > > const struct kvm_stats_header kvm_vm_stats_header = { > @@ -55,35 +55,35 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, sum_exits), > - STATS_DESC_COUNTER(VCPU, mmio_exits), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, light_exits), > - STATS_DESC_COUNTER(VCPU, itlb_real_miss_exits), > - STATS_DESC_COUNTER(VCPU, itlb_virt_miss_exits), > - STATS_DESC_COUNTER(VCPU, dtlb_real_miss_exits), > - STATS_DESC_COUNTER(VCPU, dtlb_virt_miss_exits), > - STATS_DESC_COUNTER(VCPU, syscall_exits), > - STATS_DESC_COUNTER(VCPU, isi_exits), > - STATS_DESC_COUNTER(VCPU, dsi_exits), > - STATS_DESC_COUNTER(VCPU, emulated_inst_exits), > - STATS_DESC_COUNTER(VCPU, dec_exits), > - STATS_DESC_COUNTER(VCPU, ext_intr_exits), > - STATS_DESC_COUNTER(VCPU, halt_successful_wait), > - STATS_DESC_COUNTER(VCPU, dbell_exits), > - STATS_DESC_COUNTER(VCPU, gdbell_exits), > - STATS_DESC_COUNTER(VCPU, ld), > - STATS_DESC_COUNTER(VCPU, st), > - STATS_DESC_COUNTER(VCPU, pf_storage), > - STATS_DESC_COUNTER(VCPU, pf_instruc), > - STATS_DESC_COUNTER(VCPU, sp_storage), > - STATS_DESC_COUNTER(VCPU, sp_instruc), > - STATS_DESC_COUNTER(VCPU, queue_intr), > - STATS_DESC_COUNTER(VCPU, ld_slow), > - STATS_DESC_COUNTER(VCPU, st_slow), > - STATS_DESC_COUNTER(VCPU, pthru_all), > - STATS_DESC_COUNTER(VCPU, pthru_host), > - STATS_DESC_COUNTER(VCPU, pthru_bad_aff) > + KVM_STAT(VM, CUMULATIVE, NONE, sum_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, mmio_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, light_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, itlb_real_miss_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, itlb_virt_miss_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, dtlb_real_miss_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, dtlb_virt_miss_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, syscall_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, isi_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, dsi_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, emulated_inst_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, dec_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, ext_intr_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, halt_successful_wait), > + KVM_STAT(VM, CUMULATIVE, NONE, dbell_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, gdbell_exits), > + KVM_STAT(VM, CUMULATIVE, NONE, ld), > + KVM_STAT(VM, CUMULATIVE, NONE, st), > + KVM_STAT(VM, CUMULATIVE, NONE, pf_storage), > + KVM_STAT(VM, CUMULATIVE, NONE, pf_instruc), > + KVM_STAT(VM, CUMULATIVE, NONE, sp_storage), > + KVM_STAT(VM, CUMULATIVE, NONE, sp_instruc), > + KVM_STAT(VM, CUMULATIVE, NONE, queue_intr), > + KVM_STAT(VM, CUMULATIVE, NONE, ld_slow), > + KVM_STAT(VM, CUMULATIVE, NONE, st_slow), > + KVM_STAT(VM, CUMULATIVE, NONE, pthru_all), > + KVM_STAT(VM, CUMULATIVE, NONE, pthru_host), > + KVM_STAT(VM, CUMULATIVE, NONE, pthru_bad_aff) > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index 01adffb24667..898bdd583289 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -38,8 +38,8 @@ unsigned long kvmppc_booke_handlers; > > const struct _kvm_stats_desc kvm_vm_stats_desc[] = { > KVM_GENERIC_VM_STATS(), > - STATS_DESC_ICOUNTER(VM, num_2M_pages), > - STATS_DESC_ICOUNTER(VM, num_1G_pages) > + KVM_STAT(VM, INSTANT, NONE, num_2M_pages), > + KVM_STAT(VM, INSTANT, NONE, num_1G_pages) > }; > > const struct kvm_stats_header kvm_vm_stats_header = { > @@ -53,28 +53,28 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, sum_exits), > - STATS_DESC_COUNTER(VCPU, mmio_exits), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, light_exits), > - STATS_DESC_COUNTER(VCPU, itlb_real_miss_exits), > - STATS_DESC_COUNTER(VCPU, itlb_virt_miss_exits), > - STATS_DESC_COUNTER(VCPU, dtlb_real_miss_exits), > - STATS_DESC_COUNTER(VCPU, dtlb_virt_miss_exits), > - STATS_DESC_COUNTER(VCPU, syscall_exits), > - STATS_DESC_COUNTER(VCPU, isi_exits), > - STATS_DESC_COUNTER(VCPU, dsi_exits), > - STATS_DESC_COUNTER(VCPU, emulated_inst_exits), > - STATS_DESC_COUNTER(VCPU, dec_exits), > - STATS_DESC_COUNTER(VCPU, ext_intr_exits), > - STATS_DESC_COUNTER(VCPU, halt_successful_wait), > - STATS_DESC_COUNTER(VCPU, dbell_exits), > - STATS_DESC_COUNTER(VCPU, gdbell_exits), > - STATS_DESC_COUNTER(VCPU, ld), > - STATS_DESC_COUNTER(VCPU, st), > - STATS_DESC_COUNTER(VCPU, pthru_all), > - STATS_DESC_COUNTER(VCPU, pthru_host), > - STATS_DESC_COUNTER(VCPU, pthru_bad_aff) > + KVM_STAT(VCPU, CUMULATIVE, NONE, sum_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, light_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, itlb_real_miss_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, itlb_virt_miss_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, dtlb_real_miss_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, dtlb_virt_miss_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, syscall_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, isi_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, dsi_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, emulated_inst_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, dec_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, ext_intr_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, halt_successful_wait), > + KVM_STAT(VCPU, CUMULATIVE, NONE, dbell_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, gdbell_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, ld), > + KVM_STAT(VCPU, CUMULATIVE, NONE, st), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pthru_all), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pthru_host), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pthru_bad_aff) > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c > index 7d010b0be54e..57f57f6f5baf 100644 > --- a/arch/riscv/kvm/vcpu.c > +++ b/arch/riscv/kvm/vcpu.c > @@ -25,14 +25,14 @@ > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, ecall_exit_stat), > - STATS_DESC_COUNTER(VCPU, wfi_exit_stat), > - STATS_DESC_COUNTER(VCPU, mmio_exit_user), > - STATS_DESC_COUNTER(VCPU, mmio_exit_kernel), > - STATS_DESC_COUNTER(VCPU, csr_exit_user), > - STATS_DESC_COUNTER(VCPU, csr_exit_kernel), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, exits) > + KVM_STAT(VCPU, CUMULATIVE, NONE, ecall_exit_stat), > + KVM_STAT(VCPU, CUMULATIVE, NONE, wfi_exit_stat), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exit_user), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exit_kernel), > + KVM_STAT(VCPU, CUMULATIVE, NONE, csr_exit_user), > + KVM_STAT(VCPU, CUMULATIVE, NONE, csr_exit_kernel), > + KVM_STAT(VCPU, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exits) > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index 39b36562c043..dfb3bc4d4b46 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -61,12 +61,12 @@ > > const struct _kvm_stats_desc kvm_vm_stats_desc[] = { > KVM_GENERIC_VM_STATS(), > - STATS_DESC_COUNTER(VM, inject_io), > - STATS_DESC_COUNTER(VM, inject_float_mchk), > - STATS_DESC_COUNTER(VM, inject_pfault_done), > - STATS_DESC_COUNTER(VM, inject_service_signal), > - STATS_DESC_COUNTER(VM, inject_virtio), > - STATS_DESC_COUNTER(VM, aen_forward) > + KVM_STAT(VM, CUMULATIVE, NONE, inject_io), > + KVM_STAT(VM, CUMULATIVE, NONE, inject_float_mchk), > + KVM_STAT(VM, CUMULATIVE, NONE, inject_pfault_done), > + KVM_STAT(VM, CUMULATIVE, NONE, inject_service_signal), > + KVM_STAT(VM, CUMULATIVE, NONE, inject_virtio), > + KVM_STAT(VM, CUMULATIVE, NONE, aen_forward) > }; > > const struct kvm_stats_header kvm_vm_stats_header = { > @@ -80,99 +80,99 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, exit_userspace), > - STATS_DESC_COUNTER(VCPU, exit_null), > - STATS_DESC_COUNTER(VCPU, exit_external_request), > - STATS_DESC_COUNTER(VCPU, exit_io_request), > - STATS_DESC_COUNTER(VCPU, exit_external_interrupt), > - STATS_DESC_COUNTER(VCPU, exit_stop_request), > - STATS_DESC_COUNTER(VCPU, exit_validity), > - STATS_DESC_COUNTER(VCPU, exit_instruction), > - STATS_DESC_COUNTER(VCPU, exit_pei), > - STATS_DESC_COUNTER(VCPU, halt_no_poll_steal), > - STATS_DESC_COUNTER(VCPU, instruction_lctl), > - STATS_DESC_COUNTER(VCPU, instruction_lctlg), > - STATS_DESC_COUNTER(VCPU, instruction_stctl), > - STATS_DESC_COUNTER(VCPU, instruction_stctg), > - STATS_DESC_COUNTER(VCPU, exit_program_interruption), > - STATS_DESC_COUNTER(VCPU, exit_instr_and_program), > - STATS_DESC_COUNTER(VCPU, exit_operation_exception), > - STATS_DESC_COUNTER(VCPU, deliver_ckc), > - STATS_DESC_COUNTER(VCPU, deliver_cputm), > - STATS_DESC_COUNTER(VCPU, deliver_external_call), > - STATS_DESC_COUNTER(VCPU, deliver_emergency_signal), > - STATS_DESC_COUNTER(VCPU, deliver_service_signal), > - STATS_DESC_COUNTER(VCPU, deliver_virtio), > - STATS_DESC_COUNTER(VCPU, deliver_stop_signal), > - STATS_DESC_COUNTER(VCPU, deliver_prefix_signal), > - STATS_DESC_COUNTER(VCPU, deliver_restart_signal), > - STATS_DESC_COUNTER(VCPU, deliver_program), > - STATS_DESC_COUNTER(VCPU, deliver_io), > - STATS_DESC_COUNTER(VCPU, deliver_machine_check), > - STATS_DESC_COUNTER(VCPU, exit_wait_state), > - STATS_DESC_COUNTER(VCPU, inject_ckc), > - STATS_DESC_COUNTER(VCPU, inject_cputm), > - STATS_DESC_COUNTER(VCPU, inject_external_call), > - STATS_DESC_COUNTER(VCPU, inject_emergency_signal), > - STATS_DESC_COUNTER(VCPU, inject_mchk), > - STATS_DESC_COUNTER(VCPU, inject_pfault_init), > - STATS_DESC_COUNTER(VCPU, inject_program), > - STATS_DESC_COUNTER(VCPU, inject_restart), > - STATS_DESC_COUNTER(VCPU, inject_set_prefix), > - STATS_DESC_COUNTER(VCPU, inject_stop_signal), > - STATS_DESC_COUNTER(VCPU, instruction_epsw), > - STATS_DESC_COUNTER(VCPU, instruction_gs), > - STATS_DESC_COUNTER(VCPU, instruction_io_other), > - STATS_DESC_COUNTER(VCPU, instruction_lpsw), > - STATS_DESC_COUNTER(VCPU, instruction_lpswe), > - STATS_DESC_COUNTER(VCPU, instruction_pfmf), > - STATS_DESC_COUNTER(VCPU, instruction_ptff), > - STATS_DESC_COUNTER(VCPU, instruction_sck), > - STATS_DESC_COUNTER(VCPU, instruction_sckpf), > - STATS_DESC_COUNTER(VCPU, instruction_stidp), > - STATS_DESC_COUNTER(VCPU, instruction_spx), > - STATS_DESC_COUNTER(VCPU, instruction_stpx), > - STATS_DESC_COUNTER(VCPU, instruction_stap), > - STATS_DESC_COUNTER(VCPU, instruction_iske), > - STATS_DESC_COUNTER(VCPU, instruction_ri), > - STATS_DESC_COUNTER(VCPU, instruction_rrbe), > - STATS_DESC_COUNTER(VCPU, instruction_sske), > - STATS_DESC_COUNTER(VCPU, instruction_ipte_interlock), > - STATS_DESC_COUNTER(VCPU, instruction_stsi), > - STATS_DESC_COUNTER(VCPU, instruction_stfl), > - STATS_DESC_COUNTER(VCPU, instruction_tb), > - STATS_DESC_COUNTER(VCPU, instruction_tpi), > - STATS_DESC_COUNTER(VCPU, instruction_tprot), > - STATS_DESC_COUNTER(VCPU, instruction_tsch), > - STATS_DESC_COUNTER(VCPU, instruction_sie), > - STATS_DESC_COUNTER(VCPU, instruction_essa), > - STATS_DESC_COUNTER(VCPU, instruction_sthyi), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_sense), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_sense_running), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_external_call), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_emergency), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_cond_emergency), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_start), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_stop), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_stop_store_status), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_store_status), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_store_adtl_status), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_arch), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_prefix), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_restart), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_init_cpu_reset), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_cpu_reset), > - STATS_DESC_COUNTER(VCPU, instruction_sigp_unknown), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_10), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_44), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_9c), > - STATS_DESC_COUNTER(VCPU, diag_9c_ignored), > - STATS_DESC_COUNTER(VCPU, diag_9c_forward), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_258), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_308), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_500), > - STATS_DESC_COUNTER(VCPU, instruction_diagnose_other), > - STATS_DESC_COUNTER(VCPU, pfault_sync) > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_userspace), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_null), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_external_request), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_io_request), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_external_interrupt), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_stop_request), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_validity), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_instruction), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_pei), > + KVM_STAT(VCPU, CUMULATIVE, NONE, halt_no_poll_steal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_lctl), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_lctlg), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stctl), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stctg), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_program_interruption), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_instr_and_program), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_operation_exception), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_ckc), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_cputm), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_external_call), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_emergency_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_service_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_virtio), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_stop_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_prefix_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_restart_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_program), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_io), > + KVM_STAT(VCPU, CUMULATIVE, NONE, deliver_machine_check), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exit_wait_state), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_ckc), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_cputm), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_external_call), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_emergency_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_mchk), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_pfault_init), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_program), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_restart), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_set_prefix), > + KVM_STAT(VCPU, CUMULATIVE, NONE, inject_stop_signal), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_epsw), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_gs), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_io_other), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_lpsw), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_lpswe), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_pfmf), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_ptff), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sck), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sckpf), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stidp), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_spx), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stpx), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stap), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_iske), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_ri), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_rrbe), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sske), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_ipte_interlock), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stsi), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_stfl), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_tb), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_tpi), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_tprot), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_tsch), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sie), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_essa), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sthyi), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_sense), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_sense_running), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_external_call), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_emergency), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_cond_emergency), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_start), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_stop), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_stop_store_status), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_store_status), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_store_adtl_status), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_arch), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_prefix), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_restart), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_init_cpu_reset), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_cpu_reset), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_sigp_unknown), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_10), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_44), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_9c), > + KVM_STAT(VCPU, CUMULATIVE, NONE, diag_9c_ignored), > + KVM_STAT(VCPU, CUMULATIVE, NONE, diag_9c_forward), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_258), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_308), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_500), > + KVM_STAT(VCPU, CUMULATIVE, NONE, instruction_diagnose_other), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pfault_sync) > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index f706621c35b8..072f5ba83170 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -233,19 +233,19 @@ EXPORT_SYMBOL_GPL(host_xss); > > const struct _kvm_stats_desc kvm_vm_stats_desc[] = { > KVM_GENERIC_VM_STATS(), > - STATS_DESC_COUNTER(VM, mmu_shadow_zapped), > - STATS_DESC_COUNTER(VM, mmu_pte_write), > - STATS_DESC_COUNTER(VM, mmu_pde_zapped), > - STATS_DESC_COUNTER(VM, mmu_flooded), > - STATS_DESC_COUNTER(VM, mmu_recycled), > - STATS_DESC_COUNTER(VM, mmu_cache_miss), > - STATS_DESC_ICOUNTER(VM, mmu_unsync), > - STATS_DESC_ICOUNTER(VM, pages_4k), > - STATS_DESC_ICOUNTER(VM, pages_2m), > - STATS_DESC_ICOUNTER(VM, pages_1g), > - STATS_DESC_ICOUNTER(VM, nx_lpage_splits), > - STATS_DESC_PCOUNTER(VM, max_mmu_rmap_size), > - STATS_DESC_PCOUNTER(VM, max_mmu_page_hash_collisions) > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_shadow_zapped), > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_pte_write), > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_pde_zapped), > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_flooded), > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_recycled), > + KVM_STAT(VM, CUMULATIVE, NONE, mmu_cache_miss), > + KVM_STAT(VM, INSTANT, NONE, mmu_unsync), > + KVM_STAT(VM, INSTANT, NONE, pages_4k), > + KVM_STAT(VM, INSTANT, NONE, pages_2m), > + KVM_STAT(VM, INSTANT, NONE, pages_1g), > + KVM_STAT(VM, INSTANT, NONE, nx_lpage_splits), > + KVM_STAT(VM, PEAK, NONE, max_mmu_rmap_size), > + KVM_STAT(VM, PEAK, NONE, max_mmu_page_hash_collisions) > }; > > const struct kvm_stats_header kvm_vm_stats_header = { > @@ -259,40 +259,40 @@ const struct kvm_stats_header kvm_vm_stats_header = { > > const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > KVM_GENERIC_VCPU_STATS(), > - STATS_DESC_COUNTER(VCPU, pf_taken), > - STATS_DESC_COUNTER(VCPU, pf_fixed), > - STATS_DESC_COUNTER(VCPU, pf_emulate), > - STATS_DESC_COUNTER(VCPU, pf_spurious), > - STATS_DESC_COUNTER(VCPU, pf_fast), > - STATS_DESC_COUNTER(VCPU, pf_mmio_spte_created), > - STATS_DESC_COUNTER(VCPU, pf_guest), > - STATS_DESC_COUNTER(VCPU, tlb_flush), > - STATS_DESC_COUNTER(VCPU, invlpg), > - STATS_DESC_COUNTER(VCPU, exits), > - STATS_DESC_COUNTER(VCPU, io_exits), > - STATS_DESC_COUNTER(VCPU, mmio_exits), > - STATS_DESC_COUNTER(VCPU, signal_exits), > - STATS_DESC_COUNTER(VCPU, irq_window_exits), > - STATS_DESC_COUNTER(VCPU, nmi_window_exits), > - STATS_DESC_COUNTER(VCPU, l1d_flush), > - STATS_DESC_COUNTER(VCPU, halt_exits), > - STATS_DESC_COUNTER(VCPU, request_irq_exits), > - STATS_DESC_COUNTER(VCPU, irq_exits), > - STATS_DESC_COUNTER(VCPU, host_state_reload), > - STATS_DESC_COUNTER(VCPU, fpu_reload), > - STATS_DESC_COUNTER(VCPU, insn_emulation), > - STATS_DESC_COUNTER(VCPU, insn_emulation_fail), > - STATS_DESC_COUNTER(VCPU, hypercalls), > - STATS_DESC_COUNTER(VCPU, irq_injections), > - STATS_DESC_COUNTER(VCPU, nmi_injections), > - STATS_DESC_COUNTER(VCPU, req_event), > - STATS_DESC_COUNTER(VCPU, nested_run), > - STATS_DESC_COUNTER(VCPU, directed_yield_attempted), > - STATS_DESC_COUNTER(VCPU, directed_yield_successful), > - STATS_DESC_COUNTER(VCPU, preemption_reported), > - STATS_DESC_COUNTER(VCPU, preemption_other), > - STATS_DESC_IBOOLEAN(VCPU, guest_mode), > - STATS_DESC_COUNTER(VCPU, notify_window_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_taken), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_fixed), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_emulate), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_spurious), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_fast), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_mmio_spte_created), > + KVM_STAT(VCPU, CUMULATIVE, NONE, pf_guest), > + KVM_STAT(VCPU, CUMULATIVE, NONE, tlb_flush), > + KVM_STAT(VCPU, CUMULATIVE, NONE, invlpg), > + KVM_STAT(VCPU, CUMULATIVE, NONE, exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, io_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, mmio_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, signal_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, irq_window_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, nmi_window_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, l1d_flush), > + KVM_STAT(VCPU, CUMULATIVE, NONE, halt_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, request_irq_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, irq_exits), > + KVM_STAT(VCPU, CUMULATIVE, NONE, host_state_reload), > + KVM_STAT(VCPU, CUMULATIVE, NONE, fpu_reload), > + KVM_STAT(VCPU, CUMULATIVE, NONE, insn_emulation), > + KVM_STAT(VCPU, CUMULATIVE, NONE, insn_emulation_fail), > + KVM_STAT(VCPU, CUMULATIVE, NONE, hypercalls), > + KVM_STAT(VCPU, CUMULATIVE, NONE, irq_injections), > + KVM_STAT(VCPU, CUMULATIVE, NONE, nmi_injections), > + KVM_STAT(VCPU, CUMULATIVE, NONE, req_event), > + KVM_STAT(VCPU, CUMULATIVE, NONE, nested_run), > + KVM_STAT(VCPU, CUMULATIVE, NONE, directed_yield_attempted), > + KVM_STAT(VCPU, CUMULATIVE, NONE, directed_yield_successful), > + KVM_STAT(VCPU, CUMULATIVE, NONE, preemption_reported), > + KVM_STAT(VCPU, CUMULATIVE, NONE, preemption_other), > + KVM_STAT(VCPU, INSTANT, BOOLEAN, guest_mode), > + KVM_STAT(VCPU, CUMULATIVE, NONE, notify_window_exits), > }; > > const struct kvm_stats_header kvm_vcpu_stats_header = { > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 8ada23756b0e..02b1151c2753 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -1785,80 +1785,43 @@ struct _kvm_stats_desc { > }, \ > .name = #stat, \ > } > + > /* SCOPE: VM, VM_GENERIC, VCPU, VCPU_GENERIC */ > #define STATS_DESC(SCOPE, stat, type, unit, base, exp, sz, bsz) \ > SCOPE##_STATS_DESC(stat, type, unit, base, exp, sz, bsz) > > -#define STATS_DESC_CUMULATIVE(SCOPE, name, unit, base, exponent) \ > - STATS_DESC(SCOPE, name, KVM_STATS_TYPE_CUMULATIVE, \ > - unit, base, exponent, 1, 0) > -#define STATS_DESC_INSTANT(SCOPE, name, unit, base, exponent) \ > - STATS_DESC(SCOPE, name, KVM_STATS_TYPE_INSTANT, \ > - unit, base, exponent, 1, 0) > -#define STATS_DESC_PEAK(SCOPE, name, unit, base, exponent) \ > - STATS_DESC(SCOPE, name, KVM_STATS_TYPE_PEAK, \ > - unit, base, exponent, 1, 0) > -#define STATS_DESC_LINEAR_HIST(SCOPE, name, unit, base, exponent, sz, bsz) \ > - STATS_DESC(SCOPE, name, KVM_STATS_TYPE_LINEAR_HIST, \ > - unit, base, exponent, sz, bsz) > -#define STATS_DESC_LOG_HIST(SCOPE, name, unit, base, exponent, sz) \ > - STATS_DESC(SCOPE, name, KVM_STATS_TYPE_LOG_HIST, \ > - unit, base, exponent, sz, 0) > - > -/* Cumulative counter, read/write */ > -#define STATS_DESC_COUNTER(SCOPE, name) \ > - STATS_DESC_CUMULATIVE(SCOPE, name, KVM_STATS_UNIT_NONE, \ > - KVM_STATS_BASE_POW10, 0) > -/* Instantaneous counter, read only */ > -#define STATS_DESC_ICOUNTER(SCOPE, name) \ > - STATS_DESC_INSTANT(SCOPE, name, KVM_STATS_UNIT_NONE, \ > - KVM_STATS_BASE_POW10, 0) > -/* Peak counter, read/write */ > -#define STATS_DESC_PCOUNTER(SCOPE, name) \ > - STATS_DESC_PEAK(SCOPE, name, KVM_STATS_UNIT_NONE, \ > - KVM_STATS_BASE_POW10, 0) > - > -/* Instantaneous boolean value, read only */ > -#define STATS_DESC_IBOOLEAN(SCOPE, name) \ > - STATS_DESC_INSTANT(SCOPE, name, KVM_STATS_UNIT_BOOLEAN, \ > - KVM_STATS_BASE_POW10, 0) > -/* Peak (sticky) boolean value, read/write */ > -#define STATS_DESC_PBOOLEAN(SCOPE, name) \ > - STATS_DESC_PEAK(SCOPE, name, KVM_STATS_UNIT_BOOLEAN, \ > - KVM_STATS_BASE_POW10, 0) > - > -/* Cumulative time in nanosecond */ > -#define STATS_DESC_TIME_NSEC(SCOPE, name) \ > - STATS_DESC_CUMULATIVE(SCOPE, name, KVM_STATS_UNIT_SECONDS, \ > - KVM_STATS_BASE_POW10, -9) > -/* Linear histogram for time in nanosecond */ > -#define STATS_DESC_LINHIST_TIME_NSEC(SCOPE, name, sz, bsz) \ > - STATS_DESC_LINEAR_HIST(SCOPE, name, KVM_STATS_UNIT_SECONDS, \ > - KVM_STATS_BASE_POW10, -9, sz, bsz) > -/* Logarithmic histogram for time in nanosecond */ > -#define STATS_DESC_LOGHIST_TIME_NSEC(SCOPE, name, sz) \ > - STATS_DESC_LOG_HIST(SCOPE, name, KVM_STATS_UNIT_SECONDS, \ > - KVM_STATS_BASE_POW10, -9, sz) > +#define KVM_STAT(SCOPE, TYPE, UNIT, _stat) \ > + STATS_DESC(SCOPE, _stat, KVM_STATS_TYPE_##TYPE, \ > + KVM_STATS_UNIT_##UNIT, KVM_STATS_BASE_POW10, 0, 1, 0) > + > +#define KVM_STAT_NSEC(SCOPE, _stat) \ > + STATS_DESC(SCOPE, _stat, KVM_STATS_TYPE_CUMULATIVE, \ > + KVM_STATS_UNIT_SECONDS, KVM_STATS_BASE_POW10, -9, 1, 0) > + > +#define KVM_HIST_NSEC(SCOPE, TYPE, _stat, _size, _bucket_size) \ > + STATS_DESC(VCPU_GENERIC, _stat, KVM_STATS_TYPE_##TYPE##_HIST, \ > + KVM_STATS_UNIT_SECONDS, KVM_STATS_BASE_POW10, -9, \ > + _size, _bucket_size) > > #define KVM_GENERIC_VM_STATS() \ > - STATS_DESC_COUNTER(VM_GENERIC, remote_tlb_flush), \ > - STATS_DESC_COUNTER(VM_GENERIC, remote_tlb_flush_requests) > + KVM_STAT(VM_GENERIC, CUMULATIVE, NONE, remote_tlb_flush), \ > + KVM_STAT(VM_GENERIC, CUMULATIVE, NONE, remote_tlb_flush_requests) > + > +#define KVM_HALT_POLL_HIST(_stat) \ > + KVM_HIST_NSEC(VCPU_GENERIC, LOG, _stat, HALT_POLL_HIST_COUNT, 0) > > #define KVM_GENERIC_VCPU_STATS() \ > - STATS_DESC_COUNTER(VCPU_GENERIC, halt_successful_poll), \ > - STATS_DESC_COUNTER(VCPU_GENERIC, halt_attempted_poll), \ > - STATS_DESC_COUNTER(VCPU_GENERIC, halt_poll_invalid), \ > - STATS_DESC_COUNTER(VCPU_GENERIC, halt_wakeup), \ > - STATS_DESC_TIME_NSEC(VCPU_GENERIC, halt_poll_success_ns), \ > - STATS_DESC_TIME_NSEC(VCPU_GENERIC, halt_poll_fail_ns), \ > - STATS_DESC_TIME_NSEC(VCPU_GENERIC, halt_wait_ns), \ > - STATS_DESC_LOGHIST_TIME_NSEC(VCPU_GENERIC, halt_poll_success_hist, \ > - HALT_POLL_HIST_COUNT), \ > - STATS_DESC_LOGHIST_TIME_NSEC(VCPU_GENERIC, halt_poll_fail_hist, \ > - HALT_POLL_HIST_COUNT), \ > - STATS_DESC_LOGHIST_TIME_NSEC(VCPU_GENERIC, halt_wait_hist, \ > - HALT_POLL_HIST_COUNT), \ > - STATS_DESC_IBOOLEAN(VCPU_GENERIC, blocking) > + KVM_STAT(VCPU_GENERIC, CUMULATIVE, NONE, halt_successful_poll), \ > + KVM_STAT(VCPU_GENERIC, CUMULATIVE, NONE, halt_attempted_poll), \ > + KVM_STAT(VCPU_GENERIC, CUMULATIVE, NONE, halt_poll_invalid), \ > + KVM_STAT(VCPU_GENERIC, CUMULATIVE, NONE, halt_wakeup), \ > + KVM_STAT_NSEC(VCPU_GENERIC, halt_poll_success_ns), \ > + KVM_STAT_NSEC(VCPU_GENERIC, halt_poll_fail_ns), \ > + KVM_STAT_NSEC(VCPU_GENERIC, halt_wait_ns), \ > + KVM_HALT_POLL_HIST(halt_poll_success_hist), \ > + KVM_HALT_POLL_HIST(halt_poll_fail_hist), \ > + KVM_HALT_POLL_HIST(halt_wait_hist), \ > + KVM_STAT(VCPU_GENERIC, INSTANT, BOOLEAN, blocking) > > extern struct dentry *kvm_debugfs_dir; > > -- > 2.40.0.rc0.216.gc4246ad0f0-goog >