Commit 812756a8 authored by Emanuele Giuseppe Esposito's avatar Emanuele Giuseppe Esposito Committed by Paolo Bonzini
Browse files

kvm_host: unify VM_STAT and VCPU_STAT definitions in a single place



The macros VM_STAT and VCPU_STAT are redundantly implemented in multiple
files, each used by a different architecure to initialize the debugfs
entries for statistics. Since they all have the same purpose, they can be
unified in a single common definition in include/linux/kvm_host.h

Signed-off-by: default avatarEmanuele Giuseppe Esposito <eesposit@redhat.com>
Message-Id: <20200414155625.20559-1-eesposit@redhat.com>
Acked-by: default avatarCornelia Huck <cohuck@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 63d04348
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -29,20 +29,17 @@

#include "trace.h"

#define VM_STAT(x) { #x, offsetof(struct kvm, stat.x), KVM_STAT_VM }
#define VCPU_STAT(x) { #x, offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU }

struct kvm_stats_debugfs_item debugfs_entries[] = {
	VCPU_STAT(halt_successful_poll),
	VCPU_STAT(halt_attempted_poll),
	VCPU_STAT(halt_poll_invalid),
	VCPU_STAT(halt_wakeup),
	VCPU_STAT(hvc_exit_stat),
	VCPU_STAT(wfe_exit_stat),
	VCPU_STAT(wfi_exit_stat),
	VCPU_STAT(mmio_exit_user),
	VCPU_STAT(mmio_exit_kernel),
	VCPU_STAT(exits),
	VCPU_STAT("halt_successful_poll", halt_successful_poll),
	VCPU_STAT("halt_attempted_poll", halt_attempted_poll),
	VCPU_STAT("halt_poll_invalid", halt_poll_invalid),
	VCPU_STAT("halt_wakeup", halt_wakeup),
	VCPU_STAT("hvc_exit_stat", hvc_exit_stat),
	VCPU_STAT("wfe_exit_stat", wfe_exit_stat),
	VCPU_STAT("wfi_exit_stat", wfi_exit_stat),
	VCPU_STAT("mmio_exit_user", mmio_exit_user),
	VCPU_STAT("mmio_exit_kernel", mmio_exit_kernel),
	VCPU_STAT("exits", exits),
	{ NULL }
};

+30 −31
Original line number Diff line number Diff line
@@ -39,40 +39,39 @@
#define VECTORSPACING 0x100	/* for EI/VI mode */
#endif

#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x)
struct kvm_stats_debugfs_item debugfs_entries[] = {
	{ "wait",	  VCPU_STAT(wait_exits),	 KVM_STAT_VCPU },
	{ "cache",	  VCPU_STAT(cache_exits),	 KVM_STAT_VCPU },
	{ "signal",	  VCPU_STAT(signal_exits),	 KVM_STAT_VCPU },
	{ "interrupt",	  VCPU_STAT(int_exits),		 KVM_STAT_VCPU },
	{ "cop_unusable", VCPU_STAT(cop_unusable_exits), KVM_STAT_VCPU },
	{ "tlbmod",	  VCPU_STAT(tlbmod_exits),	 KVM_STAT_VCPU },
	{ "tlbmiss_ld",	  VCPU_STAT(tlbmiss_ld_exits),	 KVM_STAT_VCPU },
	{ "tlbmiss_st",	  VCPU_STAT(tlbmiss_st_exits),	 KVM_STAT_VCPU },
	{ "addrerr_st",	  VCPU_STAT(addrerr_st_exits),	 KVM_STAT_VCPU },
	{ "addrerr_ld",	  VCPU_STAT(addrerr_ld_exits),	 KVM_STAT_VCPU },
	{ "syscall",	  VCPU_STAT(syscall_exits),	 KVM_STAT_VCPU },
	{ "resvd_inst",	  VCPU_STAT(resvd_inst_exits),	 KVM_STAT_VCPU },
	{ "break_inst",	  VCPU_STAT(break_inst_exits),	 KVM_STAT_VCPU },
	{ "trap_inst",	  VCPU_STAT(trap_inst_exits),	 KVM_STAT_VCPU },
	{ "msa_fpe",	  VCPU_STAT(msa_fpe_exits),	 KVM_STAT_VCPU },
	{ "fpe",	  VCPU_STAT(fpe_exits),		 KVM_STAT_VCPU },
	{ "msa_disabled", VCPU_STAT(msa_disabled_exits), KVM_STAT_VCPU },
	{ "flush_dcache", VCPU_STAT(flush_dcache_exits), KVM_STAT_VCPU },
	VCPU_STAT("wait", wait_exits),
	VCPU_STAT("cache", cache_exits),
	VCPU_STAT("signal", signal_exits),
	VCPU_STAT("interrupt", int_exits),
	VCPU_STAT("cop_unusable", cop_unusable_exits),
	VCPU_STAT("tlbmod", tlbmod_exits),
	VCPU_STAT("tlbmiss_ld", tlbmiss_ld_exits),
	VCPU_STAT("tlbmiss_st", tlbmiss_st_exits),
	VCPU_STAT("addrerr_st", addrerr_st_exits),
	VCPU_STAT("addrerr_ld", addrerr_ld_exits),
	VCPU_STAT("syscall", syscall_exits),
	VCPU_STAT("resvd_inst", resvd_inst_exits),
	VCPU_STAT("break_inst", break_inst_exits),
	VCPU_STAT("trap_inst", trap_inst_exits),
	VCPU_STAT("msa_fpe", msa_fpe_exits),
	VCPU_STAT("fpe", fpe_exits),
	VCPU_STAT("msa_disabled", msa_disabled_exits),
	VCPU_STAT("flush_dcache", flush_dcache_exits),
#ifdef CONFIG_KVM_MIPS_VZ
	{ "vz_gpsi",	  VCPU_STAT(vz_gpsi_exits),	 KVM_STAT_VCPU },
	{ "vz_gsfc",	  VCPU_STAT(vz_gsfc_exits),	 KVM_STAT_VCPU },
	{ "vz_hc",	  VCPU_STAT(vz_hc_exits),	 KVM_STAT_VCPU },
	{ "vz_grr",	  VCPU_STAT(vz_grr_exits),	 KVM_STAT_VCPU },
	{ "vz_gva",	  VCPU_STAT(vz_gva_exits),	 KVM_STAT_VCPU },
	{ "vz_ghfc",	  VCPU_STAT(vz_ghfc_exits),	 KVM_STAT_VCPU },
	{ "vz_gpa",	  VCPU_STAT(vz_gpa_exits),	 KVM_STAT_VCPU },
	{ "vz_resvd",	  VCPU_STAT(vz_resvd_exits),	 KVM_STAT_VCPU },
	VCPU_STAT("vz_gpsi", vz_gpsi_exits),
	VCPU_STAT("vz_gsfc", vz_gsfc_exits),
	VCPU_STAT("vz_hc", vz_hc_exits),
	VCPU_STAT("vz_grr", vz_grr_exits),
	VCPU_STAT("vz_gva", vz_gva_exits),
	VCPU_STAT("vz_ghfc", vz_ghfc_exits),
	VCPU_STAT("vz_gpa", vz_gpa_exits),
	VCPU_STAT("vz_resvd", vz_resvd_exits),
#endif
	{ "halt_successful_poll", VCPU_STAT(halt_successful_poll), KVM_STAT_VCPU },
	{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll), KVM_STAT_VCPU },
	{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid), KVM_STAT_VCPU },
	{ "halt_wakeup",  VCPU_STAT(halt_wakeup),	 KVM_STAT_VCPU },
	VCPU_STAT("halt_successful_poll", halt_successful_poll),
	VCPU_STAT("halt_attempted_poll", halt_attempted_poll),
	VCPU_STAT("halt_poll_invalid", halt_poll_invalid),
	VCPU_STAT("halt_wakeup", halt_wakeup),
	{NULL}
};

+29 −32
Original line number Diff line number Diff line
@@ -36,41 +36,38 @@
#include "book3s.h"
#include "trace.h"

#define VM_STAT(x, ...) offsetof(struct kvm, stat.x), KVM_STAT_VM, ## __VA_ARGS__
#define VCPU_STAT(x, ...) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU, ## __VA_ARGS__

/* #define EXIT_DEBUG */

struct kvm_stats_debugfs_item debugfs_entries[] = {
	{ "exits",       VCPU_STAT(sum_exits) },
	{ "mmio",        VCPU_STAT(mmio_exits) },
	{ "sig",         VCPU_STAT(signal_exits) },
	{ "sysc",        VCPU_STAT(syscall_exits) },
	{ "inst_emu",    VCPU_STAT(emulated_inst_exits) },
	{ "dec",         VCPU_STAT(dec_exits) },
	{ "ext_intr",    VCPU_STAT(ext_intr_exits) },
	{ "queue_intr",  VCPU_STAT(queue_intr) },
	{ "halt_poll_success_ns",	VCPU_STAT(halt_poll_success_ns) },
	{ "halt_poll_fail_ns",		VCPU_STAT(halt_poll_fail_ns) },
	{ "halt_wait_ns",		VCPU_STAT(halt_wait_ns) },
	{ "halt_successful_poll", VCPU_STAT(halt_successful_poll), },
	{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll), },
	{ "halt_successful_wait",	VCPU_STAT(halt_successful_wait) },
	{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid) },
	{ "halt_wakeup", VCPU_STAT(halt_wakeup) },
	{ "pf_storage",  VCPU_STAT(pf_storage) },
	{ "sp_storage",  VCPU_STAT(sp_storage) },
	{ "pf_instruc",  VCPU_STAT(pf_instruc) },
	{ "sp_instruc",  VCPU_STAT(sp_instruc) },
	{ "ld",          VCPU_STAT(ld) },
	{ "ld_slow",     VCPU_STAT(ld_slow) },
	{ "st",          VCPU_STAT(st) },
	{ "st_slow",     VCPU_STAT(st_slow) },
	{ "pthru_all",       VCPU_STAT(pthru_all) },
	{ "pthru_host",      VCPU_STAT(pthru_host) },
	{ "pthru_bad_aff",   VCPU_STAT(pthru_bad_aff) },
	{ "largepages_2M",    VM_STAT(num_2M_pages, .mode = 0444) },
	{ "largepages_1G",    VM_STAT(num_1G_pages, .mode = 0444) },
	VCPU_STAT("exits", sum_exits),
	VCPU_STAT("mmio", mmio_exits),
	VCPU_STAT("sig", signal_exits),
	VCPU_STAT("sysc", syscall_exits),
	VCPU_STAT("inst_emu", emulated_inst_exits),
	VCPU_STAT("dec", dec_exits),
	VCPU_STAT("ext_intr", ext_intr_exits),
	VCPU_STAT("queue_intr", queue_intr),
	VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns),
	VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
	VCPU_STAT("halt_wait_ns", halt_wait_ns),
	VCPU_STAT("halt_successful_poll", halt_successful_poll),
	VCPU_STAT("halt_attempted_poll", halt_attempted_poll),
	VCPU_STAT("halt_successful_wait", halt_successful_wait),
	VCPU_STAT("halt_poll_invalid", halt_poll_invalid),
	VCPU_STAT("halt_wakeup", halt_wakeup),
	VCPU_STAT("pf_storage", pf_storage),
	VCPU_STAT("sp_storage", sp_storage),
	VCPU_STAT("pf_instruc", pf_instruc),
	VCPU_STAT("sp_instruc", sp_instruc),
	VCPU_STAT("ld", ld),
	VCPU_STAT("ld_slow", ld_slow),
	VCPU_STAT("st", st),
	VCPU_STAT("st_slow", st_slow),
	VCPU_STAT("pthru_all", pthru_all),
	VCPU_STAT("pthru_host", pthru_host),
	VCPU_STAT("pthru_bad_aff", pthru_bad_aff),
	VM_STAT("largepages_2M", num_2M_pages, .mode = 0444),
	VM_STAT("largepages_1G", num_1G_pages, .mode = 0444),
	{ NULL }
};

+19 −22
Original line number Diff line number Diff line
@@ -35,29 +35,26 @@

unsigned long kvmppc_booke_handlers;

#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM
#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU

struct kvm_stats_debugfs_item debugfs_entries[] = {
	{ "mmio",       VCPU_STAT(mmio_exits) },
	{ "sig",        VCPU_STAT(signal_exits) },
	{ "itlb_r",     VCPU_STAT(itlb_real_miss_exits) },
	{ "itlb_v",     VCPU_STAT(itlb_virt_miss_exits) },
	{ "dtlb_r",     VCPU_STAT(dtlb_real_miss_exits) },
	{ "dtlb_v",     VCPU_STAT(dtlb_virt_miss_exits) },
	{ "sysc",       VCPU_STAT(syscall_exits) },
	{ "isi",        VCPU_STAT(isi_exits) },
	{ "dsi",        VCPU_STAT(dsi_exits) },
	{ "inst_emu",   VCPU_STAT(emulated_inst_exits) },
	{ "dec",        VCPU_STAT(dec_exits) },
	{ "ext_intr",   VCPU_STAT(ext_intr_exits) },
	{ "halt_successful_poll", VCPU_STAT(halt_successful_poll) },
	{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll) },
	{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid) },
	{ "halt_wakeup", VCPU_STAT(halt_wakeup) },
	{ "doorbell", VCPU_STAT(dbell_exits) },
	{ "guest doorbell", VCPU_STAT(gdbell_exits) },
	{ "remote_tlb_flush", VM_STAT(remote_tlb_flush) },
	VCPU_STAT("mmio", mmio_exits),
	VCPU_STAT("sig", signal_exits),
	VCPU_STAT("itlb_r", itlb_real_miss_exits),
	VCPU_STAT("itlb_v", itlb_virt_miss_exits),
	VCPU_STAT("dtlb_r", dtlb_real_miss_exits),
	VCPU_STAT("dtlb_v", dtlb_virt_miss_exits),
	VCPU_STAT("sysc", syscall_exits),
	VCPU_STAT("isi", isi_exits),
	VCPU_STAT("dsi", dsi_exits),
	VCPU_STAT("inst_emu", emulated_inst_exits),
	VCPU_STAT("dec", dec_exits),
	VCPU_STAT("ext_intr", ext_intr_exits),
	VCPU_STAT("halt_successful_poll", halt_successful_poll),
	VCPU_STAT("halt_attempted_poll", halt_attempted_poll),
	VCPU_STAT("halt_poll_invalid", halt_poll_invalid),
	VCPU_STAT("halt_wakeup", halt_wakeup),
	VCPU_STAT("doorbell", dbell_exits),
	VCPU_STAT("guest doorbell", gdbell_exits),
	VM_STAT("remote_tlb_flush", remote_tlb_flush),
	{ NULL }
};

+100 −103
Original line number Diff line number Diff line
@@ -57,110 +57,107 @@
#define VCPU_IRQS_MAX_BUF (sizeof(struct kvm_s390_irq) * \
			   (KVM_MAX_VCPUS + LOCAL_IRQS))

#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU
#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM

struct kvm_stats_debugfs_item debugfs_entries[] = {
	{ "userspace_handled", VCPU_STAT(exit_userspace) },
	{ "exit_null", VCPU_STAT(exit_null) },
	{ "exit_validity", VCPU_STAT(exit_validity) },
	{ "exit_stop_request", VCPU_STAT(exit_stop_request) },
	{ "exit_external_request", VCPU_STAT(exit_external_request) },
	{ "exit_io_request", VCPU_STAT(exit_io_request) },
	{ "exit_external_interrupt", VCPU_STAT(exit_external_interrupt) },
	{ "exit_instruction", VCPU_STAT(exit_instruction) },
	{ "exit_pei", VCPU_STAT(exit_pei) },
	{ "exit_program_interruption", VCPU_STAT(exit_program_interruption) },
	{ "exit_instr_and_program_int", VCPU_STAT(exit_instr_and_program) },
	{ "exit_operation_exception", VCPU_STAT(exit_operation_exception) },
	{ "halt_successful_poll", VCPU_STAT(halt_successful_poll) },
	{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll) },
	{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid) },
	{ "halt_no_poll_steal", VCPU_STAT(halt_no_poll_steal) },
	{ "halt_wakeup", VCPU_STAT(halt_wakeup) },
	{ "instruction_lctlg", VCPU_STAT(instruction_lctlg) },
	{ "instruction_lctl", VCPU_STAT(instruction_lctl) },
	{ "instruction_stctl", VCPU_STAT(instruction_stctl) },
	{ "instruction_stctg", VCPU_STAT(instruction_stctg) },
	{ "deliver_ckc", VCPU_STAT(deliver_ckc) },
	{ "deliver_cputm", VCPU_STAT(deliver_cputm) },
	{ "deliver_emergency_signal", VCPU_STAT(deliver_emergency_signal) },
	{ "deliver_external_call", VCPU_STAT(deliver_external_call) },
	{ "deliver_service_signal", VCPU_STAT(deliver_service_signal) },
	{ "deliver_virtio", VCPU_STAT(deliver_virtio) },
	{ "deliver_stop_signal", VCPU_STAT(deliver_stop_signal) },
	{ "deliver_prefix_signal", VCPU_STAT(deliver_prefix_signal) },
	{ "deliver_restart_signal", VCPU_STAT(deliver_restart_signal) },
	{ "deliver_program", VCPU_STAT(deliver_program) },
	{ "deliver_io", VCPU_STAT(deliver_io) },
	{ "deliver_machine_check", VCPU_STAT(deliver_machine_check) },
	{ "exit_wait_state", VCPU_STAT(exit_wait_state) },
	{ "inject_ckc", VCPU_STAT(inject_ckc) },
	{ "inject_cputm", VCPU_STAT(inject_cputm) },
	{ "inject_external_call", VCPU_STAT(inject_external_call) },
	{ "inject_float_mchk", VM_STAT(inject_float_mchk) },
	{ "inject_emergency_signal", VCPU_STAT(inject_emergency_signal) },
	{ "inject_io", VM_STAT(inject_io) },
	{ "inject_mchk", VCPU_STAT(inject_mchk) },
	{ "inject_pfault_done", VM_STAT(inject_pfault_done) },
	{ "inject_program", VCPU_STAT(inject_program) },
	{ "inject_restart", VCPU_STAT(inject_restart) },
	{ "inject_service_signal", VM_STAT(inject_service_signal) },
	{ "inject_set_prefix", VCPU_STAT(inject_set_prefix) },
	{ "inject_stop_signal", VCPU_STAT(inject_stop_signal) },
	{ "inject_pfault_init", VCPU_STAT(inject_pfault_init) },
	{ "inject_virtio", VM_STAT(inject_virtio) },
	{ "instruction_epsw", VCPU_STAT(instruction_epsw) },
	{ "instruction_gs", VCPU_STAT(instruction_gs) },
	{ "instruction_io_other", VCPU_STAT(instruction_io_other) },
	{ "instruction_lpsw", VCPU_STAT(instruction_lpsw) },
	{ "instruction_lpswe", VCPU_STAT(instruction_lpswe) },
	{ "instruction_pfmf", VCPU_STAT(instruction_pfmf) },
	{ "instruction_ptff", VCPU_STAT(instruction_ptff) },
	{ "instruction_stidp", VCPU_STAT(instruction_stidp) },
	{ "instruction_sck", VCPU_STAT(instruction_sck) },
	{ "instruction_sckpf", VCPU_STAT(instruction_sckpf) },
	{ "instruction_spx", VCPU_STAT(instruction_spx) },
	{ "instruction_stpx", VCPU_STAT(instruction_stpx) },
	{ "instruction_stap", VCPU_STAT(instruction_stap) },
	{ "instruction_iske", VCPU_STAT(instruction_iske) },
	{ "instruction_ri", VCPU_STAT(instruction_ri) },
	{ "instruction_rrbe", VCPU_STAT(instruction_rrbe) },
	{ "instruction_sske", VCPU_STAT(instruction_sske) },
	{ "instruction_ipte_interlock", VCPU_STAT(instruction_ipte_interlock) },
	{ "instruction_essa", VCPU_STAT(instruction_essa) },
	{ "instruction_stsi", VCPU_STAT(instruction_stsi) },
	{ "instruction_stfl", VCPU_STAT(instruction_stfl) },
	{ "instruction_tb", VCPU_STAT(instruction_tb) },
	{ "instruction_tpi", VCPU_STAT(instruction_tpi) },
	{ "instruction_tprot", VCPU_STAT(instruction_tprot) },
	{ "instruction_tsch", VCPU_STAT(instruction_tsch) },
	{ "instruction_sthyi", VCPU_STAT(instruction_sthyi) },
	{ "instruction_sie", VCPU_STAT(instruction_sie) },
	{ "instruction_sigp_sense", VCPU_STAT(instruction_sigp_sense) },
	{ "instruction_sigp_sense_running", VCPU_STAT(instruction_sigp_sense_running) },
	{ "instruction_sigp_external_call", VCPU_STAT(instruction_sigp_external_call) },
	{ "instruction_sigp_emergency", VCPU_STAT(instruction_sigp_emergency) },
	{ "instruction_sigp_cond_emergency", VCPU_STAT(instruction_sigp_cond_emergency) },
	{ "instruction_sigp_start", VCPU_STAT(instruction_sigp_start) },
	{ "instruction_sigp_stop", VCPU_STAT(instruction_sigp_stop) },
	{ "instruction_sigp_stop_store_status", VCPU_STAT(instruction_sigp_stop_store_status) },
	{ "instruction_sigp_store_status", VCPU_STAT(instruction_sigp_store_status) },
	{ "instruction_sigp_store_adtl_status", VCPU_STAT(instruction_sigp_store_adtl_status) },
	{ "instruction_sigp_set_arch", VCPU_STAT(instruction_sigp_arch) },
	{ "instruction_sigp_set_prefix", VCPU_STAT(instruction_sigp_prefix) },
	{ "instruction_sigp_restart", VCPU_STAT(instruction_sigp_restart) },
	{ "instruction_sigp_cpu_reset", VCPU_STAT(instruction_sigp_cpu_reset) },
	{ "instruction_sigp_init_cpu_reset", VCPU_STAT(instruction_sigp_init_cpu_reset) },
	{ "instruction_sigp_unknown", VCPU_STAT(instruction_sigp_unknown) },
	{ "instruction_diag_10", VCPU_STAT(diagnose_10) },
	{ "instruction_diag_44", VCPU_STAT(diagnose_44) },
	{ "instruction_diag_9c", VCPU_STAT(diagnose_9c) },
	{ "diag_9c_ignored", VCPU_STAT(diagnose_9c_ignored) },
	{ "instruction_diag_258", VCPU_STAT(diagnose_258) },
	{ "instruction_diag_308", VCPU_STAT(diagnose_308) },
	{ "instruction_diag_500", VCPU_STAT(diagnose_500) },
	{ "instruction_diag_other", VCPU_STAT(diagnose_other) },
	VCPU_STAT("userspace_handled", exit_userspace),
	VCPU_STAT("exit_null", exit_null),
	VCPU_STAT("exit_validity", exit_validity),
	VCPU_STAT("exit_stop_request", exit_stop_request),
	VCPU_STAT("exit_external_request", exit_external_request),
	VCPU_STAT("exit_io_request", exit_io_request),
	VCPU_STAT("exit_external_interrupt", exit_external_interrupt),
	VCPU_STAT("exit_instruction", exit_instruction),
	VCPU_STAT("exit_pei", exit_pei),
	VCPU_STAT("exit_program_interruption", exit_program_interruption),
	VCPU_STAT("exit_instr_and_program_int", exit_instr_and_program),
	VCPU_STAT("exit_operation_exception", exit_operation_exception),
	VCPU_STAT("halt_successful_poll", halt_successful_poll),
	VCPU_STAT("halt_attempted_poll", halt_attempted_poll),
	VCPU_STAT("halt_poll_invalid", halt_poll_invalid),
	VCPU_STAT("halt_no_poll_steal", halt_no_poll_steal),
	VCPU_STAT("halt_wakeup", halt_wakeup),
	VCPU_STAT("instruction_lctlg", instruction_lctlg),
	VCPU_STAT("instruction_lctl", instruction_lctl),
	VCPU_STAT("instruction_stctl", instruction_stctl),
	VCPU_STAT("instruction_stctg", instruction_stctg),
	VCPU_STAT("deliver_ckc", deliver_ckc),
	VCPU_STAT("deliver_cputm", deliver_cputm),
	VCPU_STAT("deliver_emergency_signal", deliver_emergency_signal),
	VCPU_STAT("deliver_external_call", deliver_external_call),
	VCPU_STAT("deliver_service_signal", deliver_service_signal),
	VCPU_STAT("deliver_virtio", deliver_virtio),
	VCPU_STAT("deliver_stop_signal", deliver_stop_signal),
	VCPU_STAT("deliver_prefix_signal", deliver_prefix_signal),
	VCPU_STAT("deliver_restart_signal", deliver_restart_signal),
	VCPU_STAT("deliver_program", deliver_program),
	VCPU_STAT("deliver_io", deliver_io),
	VCPU_STAT("deliver_machine_check", deliver_machine_check),
	VCPU_STAT("exit_wait_state", exit_wait_state),
	VCPU_STAT("inject_ckc", inject_ckc),
	VCPU_STAT("inject_cputm", inject_cputm),
	VCPU_STAT("inject_external_call", inject_external_call),
	VM_STAT("inject_float_mchk", inject_float_mchk),
	VCPU_STAT("inject_emergency_signal", inject_emergency_signal),
	VM_STAT("inject_io", inject_io),
	VCPU_STAT("inject_mchk", inject_mchk),
	VM_STAT("inject_pfault_done", inject_pfault_done),
	VCPU_STAT("inject_program", inject_program),
	VCPU_STAT("inject_restart", inject_restart),
	VM_STAT("inject_service_signal", inject_service_signal),
	VCPU_STAT("inject_set_prefix", inject_set_prefix),
	VCPU_STAT("inject_stop_signal", inject_stop_signal),
	VCPU_STAT("inject_pfault_init", inject_pfault_init),
	VM_STAT("inject_virtio", inject_virtio),
	VCPU_STAT("instruction_epsw", instruction_epsw),
	VCPU_STAT("instruction_gs", instruction_gs),
	VCPU_STAT("instruction_io_other", instruction_io_other),
	VCPU_STAT("instruction_lpsw", instruction_lpsw),
	VCPU_STAT("instruction_lpswe", instruction_lpswe),
	VCPU_STAT("instruction_pfmf", instruction_pfmf),
	VCPU_STAT("instruction_ptff", instruction_ptff),
	VCPU_STAT("instruction_stidp", instruction_stidp),
	VCPU_STAT("instruction_sck", instruction_sck),
	VCPU_STAT("instruction_sckpf", instruction_sckpf),
	VCPU_STAT("instruction_spx", instruction_spx),
	VCPU_STAT("instruction_stpx", instruction_stpx),
	VCPU_STAT("instruction_stap", instruction_stap),
	VCPU_STAT("instruction_iske", instruction_iske),
	VCPU_STAT("instruction_ri", instruction_ri),
	VCPU_STAT("instruction_rrbe", instruction_rrbe),
	VCPU_STAT("instruction_sske", instruction_sske),
	VCPU_STAT("instruction_ipte_interlock", instruction_ipte_interlock),
	VCPU_STAT("instruction_essa", instruction_essa),
	VCPU_STAT("instruction_stsi", instruction_stsi),
	VCPU_STAT("instruction_stfl", instruction_stfl),
	VCPU_STAT("instruction_tb", instruction_tb),
	VCPU_STAT("instruction_tpi", instruction_tpi),
	VCPU_STAT("instruction_tprot", instruction_tprot),
	VCPU_STAT("instruction_tsch", instruction_tsch),
	VCPU_STAT("instruction_sthyi", instruction_sthyi),
	VCPU_STAT("instruction_sie", instruction_sie),
	VCPU_STAT("instruction_sigp_sense", instruction_sigp_sense),
	VCPU_STAT("instruction_sigp_sense_running", instruction_sigp_sense_running),
	VCPU_STAT("instruction_sigp_external_call", instruction_sigp_external_call),
	VCPU_STAT("instruction_sigp_emergency", instruction_sigp_emergency),
	VCPU_STAT("instruction_sigp_cond_emergency", instruction_sigp_cond_emergency),
	VCPU_STAT("instruction_sigp_start", instruction_sigp_start),
	VCPU_STAT("instruction_sigp_stop", instruction_sigp_stop),
	VCPU_STAT("instruction_sigp_stop_store_status", instruction_sigp_stop_store_status),
	VCPU_STAT("instruction_sigp_store_status", instruction_sigp_store_status),
	VCPU_STAT("instruction_sigp_store_adtl_status", instruction_sigp_store_adtl_status),
	VCPU_STAT("instruction_sigp_set_arch", instruction_sigp_arch),
	VCPU_STAT("instruction_sigp_set_prefix", instruction_sigp_prefix),
	VCPU_STAT("instruction_sigp_restart", instruction_sigp_restart),
	VCPU_STAT("instruction_sigp_cpu_reset", instruction_sigp_cpu_reset),
	VCPU_STAT("instruction_sigp_init_cpu_reset", instruction_sigp_init_cpu_reset),
	VCPU_STAT("instruction_sigp_unknown", instruction_sigp_unknown),
	VCPU_STAT("instruction_diag_10", diagnose_10),
	VCPU_STAT("instruction_diag_44", diagnose_44),
	VCPU_STAT("instruction_diag_9c", diagnose_9c),
	VCPU_STAT("diag_9c_ignored", diagnose_9c_ignored),
	VCPU_STAT("instruction_diag_258", diagnose_258),
	VCPU_STAT("instruction_diag_308", diagnose_308),
	VCPU_STAT("instruction_diag_500", diagnose_500),
	VCPU_STAT("instruction_diag_other", diagnose_other),
	{ NULL }
};

Loading