[PATCH v2 1/4] KVM: Refactor stats descriptor generation macros
David Matlack
dmatlack at google.com
Mon Mar 6 11:01:53 PST 2023
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 at google.com>
Signed-off-by: David Matlack <dmatlack at google.com>
---
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
More information about the kvm-riscv
mailing list