diff mbox

[RESEND,V5,4/5] kvm/stats: Add provisioning for ulong vm stats and u64 vcpu stats

Message ID 1470110603-20695-4-git-send-email-sjitindarsingh@gmail.com
State Accepted
Headers show

Commit Message

Suraj Jitindar Singh Aug. 2, 2016, 4:03 a.m. UTC
vms and vcpus have statistics associated with them which can be viewed
within the debugfs. Currently it is assumed within the vcpu_stat_get() and
vm_stat_get() functions that all of these statistics are represented as
u32s, however the next patch adds some u64 vcpu statistics.

Change all vcpu statistics to u64 and modify vcpu_stat_get() accordingly.
Since vcpu statistics are per vcpu, they will only be updated by a single
vcpu at a time so this shouldn't present a problem on 32-bit machines
which can't atomically increment 64-bit numbers. However vm statistics
could potentially be updated by multiple vcpus from that vm at a time.
To avoid the overhead of atomics make all vm statistics ulong such that
they are 64-bit on 64-bit systems where they can be atomically incremented
and are 32-bit on 32-bit systems which may not be able to atomically
increment 64-bit numbers. Modify vm_stat_get() to expect ulongs.

Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Reviewed-by: David Matlack <dmatlack@google.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

---
Change Log:

V2 -> V3:
	- Instead of implementing separate u32 and u64 functions keep the
	  generic functions and modify them to expect u64s. Thus update all
	  vm and vcpu statistics to u64s accordingly.
V3 -> V4:
	- Change vm_stats from u64 to ulong
---
 arch/arm/include/asm/kvm_host.h     |  12 ++--
 arch/arm64/include/asm/kvm_host.h   |  12 ++--
 arch/mips/include/asm/kvm_host.h    |  46 ++++++-------
 arch/powerpc/include/asm/kvm_host.h |  60 ++++++++---------
 arch/s390/include/asm/kvm_host.h    | 128 ++++++++++++++++++------------------
 arch/x86/include/asm/kvm_host.h     |  72 ++++++++++----------
 virt/kvm/kvm_main.c                 |   4 +-
 7 files changed, 167 insertions(+), 167 deletions(-)

Comments

Paul Mackerras Sept. 8, 2016, 3:21 a.m. UTC | #1
Paolo (and others),

Are you OK with me taking the patch below via my kvm-ppc-next tree?

Thanks,
Paul.

On Tue, Aug 02, 2016 at 02:03:22PM +1000, Suraj Jitindar Singh wrote:
> vms and vcpus have statistics associated with them which can be viewed
> within the debugfs. Currently it is assumed within the vcpu_stat_get() and
> vm_stat_get() functions that all of these statistics are represented as
> u32s, however the next patch adds some u64 vcpu statistics.
> 
> Change all vcpu statistics to u64 and modify vcpu_stat_get() accordingly.
> Since vcpu statistics are per vcpu, they will only be updated by a single
> vcpu at a time so this shouldn't present a problem on 32-bit machines
> which can't atomically increment 64-bit numbers. However vm statistics
> could potentially be updated by multiple vcpus from that vm at a time.
> To avoid the overhead of atomics make all vm statistics ulong such that
> they are 64-bit on 64-bit systems where they can be atomically incremented
> and are 32-bit on 32-bit systems which may not be able to atomically
> increment 64-bit numbers. Modify vm_stat_get() to expect ulongs.
> 
> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
> Reviewed-by: David Matlack <dmatlack@google.com>
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 
> ---
> Change Log:
> 
> V2 -> V3:
> 	- Instead of implementing separate u32 and u64 functions keep the
> 	  generic functions and modify them to expect u64s. Thus update all
> 	  vm and vcpu statistics to u64s accordingly.
> V3 -> V4:
> 	- Change vm_stats from u64 to ulong
> ---
>  arch/arm/include/asm/kvm_host.h     |  12 ++--
>  arch/arm64/include/asm/kvm_host.h   |  12 ++--
>  arch/mips/include/asm/kvm_host.h    |  46 ++++++-------
>  arch/powerpc/include/asm/kvm_host.h |  60 ++++++++---------
>  arch/s390/include/asm/kvm_host.h    | 128 ++++++++++++++++++------------------
>  arch/x86/include/asm/kvm_host.h     |  72 ++++++++++----------
>  virt/kvm/kvm_main.c                 |   4 +-
>  7 files changed, 167 insertions(+), 167 deletions(-)
> 
> diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
> index 96387d4..c8e55b3b 100644
> --- a/arch/arm/include/asm/kvm_host.h
> +++ b/arch/arm/include/asm/kvm_host.h
> @@ -183,15 +183,15 @@ struct kvm_vcpu_arch {
>  };
>  
>  struct kvm_vm_stat {
> -	u32 remote_tlb_flush;
> +	ulong remote_tlb_flush;
>  };
>  
>  struct kvm_vcpu_stat {
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> -	u32 hvc_exit_stat;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
> +	u64 hvc_exit_stat;
>  	u64 wfe_exit_stat;
>  	u64 wfi_exit_stat;
>  	u64 mmio_exit_user;
> diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
> index 49095fc..b14c8bc 100644
> --- a/arch/arm64/include/asm/kvm_host.h
> +++ b/arch/arm64/include/asm/kvm_host.h
> @@ -291,15 +291,15 @@ struct kvm_vcpu_arch {
>  #endif
>  
>  struct kvm_vm_stat {
> -	u32 remote_tlb_flush;
> +	ulong remote_tlb_flush;
>  };
>  
>  struct kvm_vcpu_stat {
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> -	u32 hvc_exit_stat;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
> +	u64 hvc_exit_stat;
>  	u64 wfe_exit_stat;
>  	u64 wfi_exit_stat;
>  	u64 mmio_exit_user;
> diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
> index 36a391d..9704888 100644
> --- a/arch/mips/include/asm/kvm_host.h
> +++ b/arch/mips/include/asm/kvm_host.h
> @@ -98,32 +98,32 @@ extern void (*kvm_mips_release_pfn_clean)(kvm_pfn_t pfn);
>  extern bool (*kvm_mips_is_error_pfn)(kvm_pfn_t pfn);
>  
>  struct kvm_vm_stat {
> -	u32 remote_tlb_flush;
> +	ulong remote_tlb_flush;
>  };
>  
>  struct kvm_vcpu_stat {
> -	u32 wait_exits;
> -	u32 cache_exits;
> -	u32 signal_exits;
> -	u32 int_exits;
> -	u32 cop_unusable_exits;
> -	u32 tlbmod_exits;
> -	u32 tlbmiss_ld_exits;
> -	u32 tlbmiss_st_exits;
> -	u32 addrerr_st_exits;
> -	u32 addrerr_ld_exits;
> -	u32 syscall_exits;
> -	u32 resvd_inst_exits;
> -	u32 break_inst_exits;
> -	u32 trap_inst_exits;
> -	u32 msa_fpe_exits;
> -	u32 fpe_exits;
> -	u32 msa_disabled_exits;
> -	u32 flush_dcache_exits;
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> +	u64 wait_exits;
> +	u64 cache_exits;
> +	u64 signal_exits;
> +	u64 int_exits;
> +	u64 cop_unusable_exits;
> +	u64 tlbmod_exits;
> +	u64 tlbmiss_ld_exits;
> +	u64 tlbmiss_st_exits;
> +	u64 addrerr_st_exits;
> +	u64 addrerr_ld_exits;
> +	u64 syscall_exits;
> +	u64 resvd_inst_exits;
> +	u64 break_inst_exits;
> +	u64 trap_inst_exits;
> +	u64 msa_fpe_exits;
> +	u64 fpe_exits;
> +	u64 msa_disabled_exits;
> +	u64 flush_dcache_exits;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
>  };
>  
>  enum kvm_mips_exit_types {
> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
> index 610f393..f6304c5 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -95,41 +95,41 @@ struct kvmppc_vcpu_book3s;
>  struct kvmppc_book3s_shadow_vcpu;
>  
>  struct kvm_vm_stat {
> -	u32 remote_tlb_flush;
> +	ulong remote_tlb_flush;
>  };
>  
>  struct kvm_vcpu_stat {
> -	u32 sum_exits;
> -	u32 mmio_exits;
> -	u32 signal_exits;
> -	u32 light_exits;
> +	u64 sum_exits;
> +	u64 mmio_exits;
> +	u64 signal_exits;
> +	u64 light_exits;
>  	/* Account for special types of light exits: */
> -	u32 itlb_real_miss_exits;
> -	u32 itlb_virt_miss_exits;
> -	u32 dtlb_real_miss_exits;
> -	u32 dtlb_virt_miss_exits;
> -	u32 syscall_exits;
> -	u32 isi_exits;
> -	u32 dsi_exits;
> -	u32 emulated_inst_exits;
> -	u32 dec_exits;
> -	u32 ext_intr_exits;
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> -	u32 dbell_exits;
> -	u32 gdbell_exits;
> -	u32 ld;
> -	u32 st;
> +	u64 itlb_real_miss_exits;
> +	u64 itlb_virt_miss_exits;
> +	u64 dtlb_real_miss_exits;
> +	u64 dtlb_virt_miss_exits;
> +	u64 syscall_exits;
> +	u64 isi_exits;
> +	u64 dsi_exits;
> +	u64 emulated_inst_exits;
> +	u64 dec_exits;
> +	u64 ext_intr_exits;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
> +	u64 dbell_exits;
> +	u64 gdbell_exits;
> +	u64 ld;
> +	u64 st;
>  #ifdef CONFIG_PPC_BOOK3S
> -	u32 pf_storage;
> -	u32 pf_instruc;
> -	u32 sp_storage;
> -	u32 sp_instruc;
> -	u32 queue_intr;
> -	u32 ld_slow;
> -	u32 st_slow;
> +	u64 pf_storage;
> +	u64 pf_instruc;
> +	u64 sp_storage;
> +	u64 sp_instruc;
> +	u64 queue_intr;
> +	u64 ld_slow;
> +	u64 st_slow;
>  #endif
>  };
>  
> diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
> index ac82e8e..bdacd9c 100644
> --- a/arch/s390/include/asm/kvm_host.h
> +++ b/arch/s390/include/asm/kvm_host.h
> @@ -238,69 +238,69 @@ struct sie_page {
>  } __packed;
>  
>  struct kvm_vcpu_stat {
> -	u32 exit_userspace;
> -	u32 exit_null;
> -	u32 exit_external_request;
> -	u32 exit_external_interrupt;
> -	u32 exit_stop_request;
> -	u32 exit_validity;
> -	u32 exit_instruction;
> -	u32 exit_pei;
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> -	u32 instruction_lctl;
> -	u32 instruction_lctlg;
> -	u32 instruction_stctl;
> -	u32 instruction_stctg;
> -	u32 exit_program_interruption;
> -	u32 exit_instr_and_program;
> -	u32 deliver_external_call;
> -	u32 deliver_emergency_signal;
> -	u32 deliver_service_signal;
> -	u32 deliver_virtio_interrupt;
> -	u32 deliver_stop_signal;
> -	u32 deliver_prefix_signal;
> -	u32 deliver_restart_signal;
> -	u32 deliver_program_int;
> -	u32 deliver_io_int;
> -	u32 exit_wait_state;
> -	u32 instruction_pfmf;
> -	u32 instruction_stidp;
> -	u32 instruction_spx;
> -	u32 instruction_stpx;
> -	u32 instruction_stap;
> -	u32 instruction_storage_key;
> -	u32 instruction_ipte_interlock;
> -	u32 instruction_stsch;
> -	u32 instruction_chsc;
> -	u32 instruction_stsi;
> -	u32 instruction_stfl;
> -	u32 instruction_tprot;
> -	u32 instruction_essa;
> -	u32 instruction_sigp_sense;
> -	u32 instruction_sigp_sense_running;
> -	u32 instruction_sigp_external_call;
> -	u32 instruction_sigp_emergency;
> -	u32 instruction_sigp_cond_emergency;
> -	u32 instruction_sigp_start;
> -	u32 instruction_sigp_stop;
> -	u32 instruction_sigp_stop_store_status;
> -	u32 instruction_sigp_store_status;
> -	u32 instruction_sigp_store_adtl_status;
> -	u32 instruction_sigp_arch;
> -	u32 instruction_sigp_prefix;
> -	u32 instruction_sigp_restart;
> -	u32 instruction_sigp_init_cpu_reset;
> -	u32 instruction_sigp_cpu_reset;
> -	u32 instruction_sigp_unknown;
> -	u32 diagnose_10;
> -	u32 diagnose_44;
> -	u32 diagnose_9c;
> -	u32 diagnose_258;
> -	u32 diagnose_308;
> -	u32 diagnose_500;
> +	u64 exit_userspace;
> +	u64 exit_null;
> +	u64 exit_external_request;
> +	u64 exit_external_interrupt;
> +	u64 exit_stop_request;
> +	u64 exit_validity;
> +	u64 exit_instruction;
> +	u64 exit_pei;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
> +	u64 instruction_lctl;
> +	u64 instruction_lctlg;
> +	u64 instruction_stctl;
> +	u64 instruction_stctg;
> +	u64 exit_program_interruption;
> +	u64 exit_instr_and_program;
> +	u64 deliver_external_call;
> +	u64 deliver_emergency_signal;
> +	u64 deliver_service_signal;
> +	u64 deliver_virtio_interrupt;
> +	u64 deliver_stop_signal;
> +	u64 deliver_prefix_signal;
> +	u64 deliver_restart_signal;
> +	u64 deliver_program_int;
> +	u64 deliver_io_int;
> +	u64 exit_wait_state;
> +	u64 instruction_pfmf;
> +	u64 instruction_stidp;
> +	u64 instruction_spx;
> +	u64 instruction_stpx;
> +	u64 instruction_stap;
> +	u64 instruction_storage_key;
> +	u64 instruction_ipte_interlock;
> +	u64 instruction_stsch;
> +	u64 instruction_chsc;
> +	u64 instruction_stsi;
> +	u64 instruction_stfl;
> +	u64 instruction_tprot;
> +	u64 instruction_essa;
> +	u64 instruction_sigp_sense;
> +	u64 instruction_sigp_sense_running;
> +	u64 instruction_sigp_external_call;
> +	u64 instruction_sigp_emergency;
> +	u64 instruction_sigp_cond_emergency;
> +	u64 instruction_sigp_start;
> +	u64 instruction_sigp_stop;
> +	u64 instruction_sigp_stop_store_status;
> +	u64 instruction_sigp_store_status;
> +	u64 instruction_sigp_store_adtl_status;
> +	u64 instruction_sigp_arch;
> +	u64 instruction_sigp_prefix;
> +	u64 instruction_sigp_restart;
> +	u64 instruction_sigp_init_cpu_reset;
> +	u64 instruction_sigp_cpu_reset;
> +	u64 instruction_sigp_unknown;
> +	u64 diagnose_10;
> +	u64 diagnose_44;
> +	u64 diagnose_9c;
> +	u64 diagnose_258;
> +	u64 diagnose_308;
> +	u64 diagnose_500;
>  };
>  
>  #define PGM_OPERATION			0x01
> @@ -563,7 +563,7 @@ struct kvm_vcpu_arch {
>  };
>  
>  struct kvm_vm_stat {
> -	u32 remote_tlb_flush;
> +	ulong remote_tlb_flush;
>  };
>  
>  struct kvm_arch_memory_slot {
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index 69e62862..c30462f 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -782,45 +782,45 @@ struct kvm_arch {
>  };
>  
>  struct kvm_vm_stat {
> -	u32 mmu_shadow_zapped;
> -	u32 mmu_pte_write;
> -	u32 mmu_pte_updated;
> -	u32 mmu_pde_zapped;
> -	u32 mmu_flooded;
> -	u32 mmu_recycled;
> -	u32 mmu_cache_miss;
> -	u32 mmu_unsync;
> -	u32 remote_tlb_flush;
> -	u32 lpages;
> +	ulong mmu_shadow_zapped;
> +	ulong mmu_pte_write;
> +	ulong mmu_pte_updated;
> +	ulong mmu_pde_zapped;
> +	ulong mmu_flooded;
> +	ulong mmu_recycled;
> +	ulong mmu_cache_miss;
> +	ulong mmu_unsync;
> +	ulong remote_tlb_flush;
> +	ulong lpages;
>  };
>  
>  struct kvm_vcpu_stat {
> -	u32 pf_fixed;
> -	u32 pf_guest;
> -	u32 tlb_flush;
> -	u32 invlpg;
> -
> -	u32 exits;
> -	u32 io_exits;
> -	u32 mmio_exits;
> -	u32 signal_exits;
> -	u32 irq_window_exits;
> -	u32 nmi_window_exits;
> -	u32 halt_exits;
> -	u32 halt_successful_poll;
> -	u32 halt_attempted_poll;
> -	u32 halt_poll_invalid;
> -	u32 halt_wakeup;
> -	u32 request_irq_exits;
> -	u32 irq_exits;
> -	u32 host_state_reload;
> -	u32 efer_reload;
> -	u32 fpu_reload;
> -	u32 insn_emulation;
> -	u32 insn_emulation_fail;
> -	u32 hypercalls;
> -	u32 irq_injections;
> -	u32 nmi_injections;
> +	u64 pf_fixed;
> +	u64 pf_guest;
> +	u64 tlb_flush;
> +	u64 invlpg;
> +
> +	u64 exits;
> +	u64 io_exits;
> +	u64 mmio_exits;
> +	u64 signal_exits;
> +	u64 irq_window_exits;
> +	u64 nmi_window_exits;
> +	u64 halt_exits;
> +	u64 halt_successful_poll;
> +	u64 halt_attempted_poll;
> +	u64 halt_poll_invalid;
> +	u64 halt_wakeup;
> +	u64 request_irq_exits;
> +	u64 irq_exits;
> +	u64 host_state_reload;
> +	u64 efer_reload;
> +	u64 fpu_reload;
> +	u64 insn_emulation;
> +	u64 insn_emulation_fail;
> +	u64 hypercalls;
> +	u64 irq_injections;
> +	u64 nmi_injections;
>  };
>  
>  struct x86_instruction_info;
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 48bd520..37a6530 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -3531,7 +3531,7 @@ static int vm_stat_get_per_vm(void *data, u64 *val)
>  {
>  	struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data;
>  
> -	*val = *(u32 *)((void *)stat_data->kvm + stat_data->offset);
> +	*val = *(ulong *)((void *)stat_data->kvm + stat_data->offset);
>  
>  	return 0;
>  }
> @@ -3561,7 +3561,7 @@ static int vcpu_stat_get_per_vm(void *data, u64 *val)
>  	*val = 0;
>  
>  	kvm_for_each_vcpu(i, vcpu, stat_data->kvm)
> -		*val += *(u32 *)((void *)vcpu + stat_data->offset);
> +		*val += *(u64 *)((void *)vcpu + stat_data->offset);
>  
>  	return 0;
>  }
> -- 
> 2.5.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christian Borntraeger Sept. 8, 2016, 7 a.m. UTC | #2
On 09/08/2016 05:21 AM, Paul Mackerras wrote:
> Paolo (and others),
> 
> Are you OK with me taking the patch below via my kvm-ppc-next tree?

Ok for the s390 part.

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paolo Bonzini Sept. 8, 2016, 11:52 a.m. UTC | #3
On 08/09/2016 05:21, Paul Mackerras wrote:
> Paolo (and others),
> 
> Are you OK with me taking the patch below via my kvm-ppc-next tree?

Yes, but send a pull request to me as soon as possible, without waiting
just before the merge window.

Thanks,

Paolo

> Thanks,
> Paul.
> 
> On Tue, Aug 02, 2016 at 02:03:22PM +1000, Suraj Jitindar Singh wrote:
>> vms and vcpus have statistics associated with them which can be viewed
>> within the debugfs. Currently it is assumed within the vcpu_stat_get() and
>> vm_stat_get() functions that all of these statistics are represented as
>> u32s, however the next patch adds some u64 vcpu statistics.
>>
>> Change all vcpu statistics to u64 and modify vcpu_stat_get() accordingly.
>> Since vcpu statistics are per vcpu, they will only be updated by a single
>> vcpu at a time so this shouldn't present a problem on 32-bit machines
>> which can't atomically increment 64-bit numbers. However vm statistics
>> could potentially be updated by multiple vcpus from that vm at a time.
>> To avoid the overhead of atomics make all vm statistics ulong such that
>> they are 64-bit on 64-bit systems where they can be atomically incremented
>> and are 32-bit on 32-bit systems which may not be able to atomically
>> increment 64-bit numbers. Modify vm_stat_get() to expect ulongs.
>>
>> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
>> Reviewed-by: David Matlack <dmatlack@google.com>
>> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
>>
>> ---
>> Change Log:
>>
>> V2 -> V3:
>> 	- Instead of implementing separate u32 and u64 functions keep the
>> 	  generic functions and modify them to expect u64s. Thus update all
>> 	  vm and vcpu statistics to u64s accordingly.
>> V3 -> V4:
>> 	- Change vm_stats from u64 to ulong
>> ---
>>  arch/arm/include/asm/kvm_host.h     |  12 ++--
>>  arch/arm64/include/asm/kvm_host.h   |  12 ++--
>>  arch/mips/include/asm/kvm_host.h    |  46 ++++++-------
>>  arch/powerpc/include/asm/kvm_host.h |  60 ++++++++---------
>>  arch/s390/include/asm/kvm_host.h    | 128 ++++++++++++++++++------------------
>>  arch/x86/include/asm/kvm_host.h     |  72 ++++++++++----------
>>  virt/kvm/kvm_main.c                 |   4 +-
>>  7 files changed, 167 insertions(+), 167 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
>> index 96387d4..c8e55b3b 100644
>> --- a/arch/arm/include/asm/kvm_host.h
>> +++ b/arch/arm/include/asm/kvm_host.h
>> @@ -183,15 +183,15 @@ struct kvm_vcpu_arch {
>>  };
>>  
>>  struct kvm_vm_stat {
>> -	u32 remote_tlb_flush;
>> +	ulong remote_tlb_flush;
>>  };
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> -	u32 hvc_exit_stat;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>> +	u64 hvc_exit_stat;
>>  	u64 wfe_exit_stat;
>>  	u64 wfi_exit_stat;
>>  	u64 mmio_exit_user;
>> diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
>> index 49095fc..b14c8bc 100644
>> --- a/arch/arm64/include/asm/kvm_host.h
>> +++ b/arch/arm64/include/asm/kvm_host.h
>> @@ -291,15 +291,15 @@ struct kvm_vcpu_arch {
>>  #endif
>>  
>>  struct kvm_vm_stat {
>> -	u32 remote_tlb_flush;
>> +	ulong remote_tlb_flush;
>>  };
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> -	u32 hvc_exit_stat;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>> +	u64 hvc_exit_stat;
>>  	u64 wfe_exit_stat;
>>  	u64 wfi_exit_stat;
>>  	u64 mmio_exit_user;
>> diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
>> index 36a391d..9704888 100644
>> --- a/arch/mips/include/asm/kvm_host.h
>> +++ b/arch/mips/include/asm/kvm_host.h
>> @@ -98,32 +98,32 @@ extern void (*kvm_mips_release_pfn_clean)(kvm_pfn_t pfn);
>>  extern bool (*kvm_mips_is_error_pfn)(kvm_pfn_t pfn);
>>  
>>  struct kvm_vm_stat {
>> -	u32 remote_tlb_flush;
>> +	ulong remote_tlb_flush;
>>  };
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 wait_exits;
>> -	u32 cache_exits;
>> -	u32 signal_exits;
>> -	u32 int_exits;
>> -	u32 cop_unusable_exits;
>> -	u32 tlbmod_exits;
>> -	u32 tlbmiss_ld_exits;
>> -	u32 tlbmiss_st_exits;
>> -	u32 addrerr_st_exits;
>> -	u32 addrerr_ld_exits;
>> -	u32 syscall_exits;
>> -	u32 resvd_inst_exits;
>> -	u32 break_inst_exits;
>> -	u32 trap_inst_exits;
>> -	u32 msa_fpe_exits;
>> -	u32 fpe_exits;
>> -	u32 msa_disabled_exits;
>> -	u32 flush_dcache_exits;
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> +	u64 wait_exits;
>> +	u64 cache_exits;
>> +	u64 signal_exits;
>> +	u64 int_exits;
>> +	u64 cop_unusable_exits;
>> +	u64 tlbmod_exits;
>> +	u64 tlbmiss_ld_exits;
>> +	u64 tlbmiss_st_exits;
>> +	u64 addrerr_st_exits;
>> +	u64 addrerr_ld_exits;
>> +	u64 syscall_exits;
>> +	u64 resvd_inst_exits;
>> +	u64 break_inst_exits;
>> +	u64 trap_inst_exits;
>> +	u64 msa_fpe_exits;
>> +	u64 fpe_exits;
>> +	u64 msa_disabled_exits;
>> +	u64 flush_dcache_exits;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>>  };
>>  
>>  enum kvm_mips_exit_types {
>> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
>> index 610f393..f6304c5 100644
>> --- a/arch/powerpc/include/asm/kvm_host.h
>> +++ b/arch/powerpc/include/asm/kvm_host.h
>> @@ -95,41 +95,41 @@ struct kvmppc_vcpu_book3s;
>>  struct kvmppc_book3s_shadow_vcpu;
>>  
>>  struct kvm_vm_stat {
>> -	u32 remote_tlb_flush;
>> +	ulong remote_tlb_flush;
>>  };
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 sum_exits;
>> -	u32 mmio_exits;
>> -	u32 signal_exits;
>> -	u32 light_exits;
>> +	u64 sum_exits;
>> +	u64 mmio_exits;
>> +	u64 signal_exits;
>> +	u64 light_exits;
>>  	/* Account for special types of light exits: */
>> -	u32 itlb_real_miss_exits;
>> -	u32 itlb_virt_miss_exits;
>> -	u32 dtlb_real_miss_exits;
>> -	u32 dtlb_virt_miss_exits;
>> -	u32 syscall_exits;
>> -	u32 isi_exits;
>> -	u32 dsi_exits;
>> -	u32 emulated_inst_exits;
>> -	u32 dec_exits;
>> -	u32 ext_intr_exits;
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> -	u32 dbell_exits;
>> -	u32 gdbell_exits;
>> -	u32 ld;
>> -	u32 st;
>> +	u64 itlb_real_miss_exits;
>> +	u64 itlb_virt_miss_exits;
>> +	u64 dtlb_real_miss_exits;
>> +	u64 dtlb_virt_miss_exits;
>> +	u64 syscall_exits;
>> +	u64 isi_exits;
>> +	u64 dsi_exits;
>> +	u64 emulated_inst_exits;
>> +	u64 dec_exits;
>> +	u64 ext_intr_exits;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>> +	u64 dbell_exits;
>> +	u64 gdbell_exits;
>> +	u64 ld;
>> +	u64 st;
>>  #ifdef CONFIG_PPC_BOOK3S
>> -	u32 pf_storage;
>> -	u32 pf_instruc;
>> -	u32 sp_storage;
>> -	u32 sp_instruc;
>> -	u32 queue_intr;
>> -	u32 ld_slow;
>> -	u32 st_slow;
>> +	u64 pf_storage;
>> +	u64 pf_instruc;
>> +	u64 sp_storage;
>> +	u64 sp_instruc;
>> +	u64 queue_intr;
>> +	u64 ld_slow;
>> +	u64 st_slow;
>>  #endif
>>  };
>>  
>> diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
>> index ac82e8e..bdacd9c 100644
>> --- a/arch/s390/include/asm/kvm_host.h
>> +++ b/arch/s390/include/asm/kvm_host.h
>> @@ -238,69 +238,69 @@ struct sie_page {
>>  } __packed;
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 exit_userspace;
>> -	u32 exit_null;
>> -	u32 exit_external_request;
>> -	u32 exit_external_interrupt;
>> -	u32 exit_stop_request;
>> -	u32 exit_validity;
>> -	u32 exit_instruction;
>> -	u32 exit_pei;
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> -	u32 instruction_lctl;
>> -	u32 instruction_lctlg;
>> -	u32 instruction_stctl;
>> -	u32 instruction_stctg;
>> -	u32 exit_program_interruption;
>> -	u32 exit_instr_and_program;
>> -	u32 deliver_external_call;
>> -	u32 deliver_emergency_signal;
>> -	u32 deliver_service_signal;
>> -	u32 deliver_virtio_interrupt;
>> -	u32 deliver_stop_signal;
>> -	u32 deliver_prefix_signal;
>> -	u32 deliver_restart_signal;
>> -	u32 deliver_program_int;
>> -	u32 deliver_io_int;
>> -	u32 exit_wait_state;
>> -	u32 instruction_pfmf;
>> -	u32 instruction_stidp;
>> -	u32 instruction_spx;
>> -	u32 instruction_stpx;
>> -	u32 instruction_stap;
>> -	u32 instruction_storage_key;
>> -	u32 instruction_ipte_interlock;
>> -	u32 instruction_stsch;
>> -	u32 instruction_chsc;
>> -	u32 instruction_stsi;
>> -	u32 instruction_stfl;
>> -	u32 instruction_tprot;
>> -	u32 instruction_essa;
>> -	u32 instruction_sigp_sense;
>> -	u32 instruction_sigp_sense_running;
>> -	u32 instruction_sigp_external_call;
>> -	u32 instruction_sigp_emergency;
>> -	u32 instruction_sigp_cond_emergency;
>> -	u32 instruction_sigp_start;
>> -	u32 instruction_sigp_stop;
>> -	u32 instruction_sigp_stop_store_status;
>> -	u32 instruction_sigp_store_status;
>> -	u32 instruction_sigp_store_adtl_status;
>> -	u32 instruction_sigp_arch;
>> -	u32 instruction_sigp_prefix;
>> -	u32 instruction_sigp_restart;
>> -	u32 instruction_sigp_init_cpu_reset;
>> -	u32 instruction_sigp_cpu_reset;
>> -	u32 instruction_sigp_unknown;
>> -	u32 diagnose_10;
>> -	u32 diagnose_44;
>> -	u32 diagnose_9c;
>> -	u32 diagnose_258;
>> -	u32 diagnose_308;
>> -	u32 diagnose_500;
>> +	u64 exit_userspace;
>> +	u64 exit_null;
>> +	u64 exit_external_request;
>> +	u64 exit_external_interrupt;
>> +	u64 exit_stop_request;
>> +	u64 exit_validity;
>> +	u64 exit_instruction;
>> +	u64 exit_pei;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>> +	u64 instruction_lctl;
>> +	u64 instruction_lctlg;
>> +	u64 instruction_stctl;
>> +	u64 instruction_stctg;
>> +	u64 exit_program_interruption;
>> +	u64 exit_instr_and_program;
>> +	u64 deliver_external_call;
>> +	u64 deliver_emergency_signal;
>> +	u64 deliver_service_signal;
>> +	u64 deliver_virtio_interrupt;
>> +	u64 deliver_stop_signal;
>> +	u64 deliver_prefix_signal;
>> +	u64 deliver_restart_signal;
>> +	u64 deliver_program_int;
>> +	u64 deliver_io_int;
>> +	u64 exit_wait_state;
>> +	u64 instruction_pfmf;
>> +	u64 instruction_stidp;
>> +	u64 instruction_spx;
>> +	u64 instruction_stpx;
>> +	u64 instruction_stap;
>> +	u64 instruction_storage_key;
>> +	u64 instruction_ipte_interlock;
>> +	u64 instruction_stsch;
>> +	u64 instruction_chsc;
>> +	u64 instruction_stsi;
>> +	u64 instruction_stfl;
>> +	u64 instruction_tprot;
>> +	u64 instruction_essa;
>> +	u64 instruction_sigp_sense;
>> +	u64 instruction_sigp_sense_running;
>> +	u64 instruction_sigp_external_call;
>> +	u64 instruction_sigp_emergency;
>> +	u64 instruction_sigp_cond_emergency;
>> +	u64 instruction_sigp_start;
>> +	u64 instruction_sigp_stop;
>> +	u64 instruction_sigp_stop_store_status;
>> +	u64 instruction_sigp_store_status;
>> +	u64 instruction_sigp_store_adtl_status;
>> +	u64 instruction_sigp_arch;
>> +	u64 instruction_sigp_prefix;
>> +	u64 instruction_sigp_restart;
>> +	u64 instruction_sigp_init_cpu_reset;
>> +	u64 instruction_sigp_cpu_reset;
>> +	u64 instruction_sigp_unknown;
>> +	u64 diagnose_10;
>> +	u64 diagnose_44;
>> +	u64 diagnose_9c;
>> +	u64 diagnose_258;
>> +	u64 diagnose_308;
>> +	u64 diagnose_500;
>>  };
>>  
>>  #define PGM_OPERATION			0x01
>> @@ -563,7 +563,7 @@ struct kvm_vcpu_arch {
>>  };
>>  
>>  struct kvm_vm_stat {
>> -	u32 remote_tlb_flush;
>> +	ulong remote_tlb_flush;
>>  };
>>  
>>  struct kvm_arch_memory_slot {
>> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
>> index 69e62862..c30462f 100644
>> --- a/arch/x86/include/asm/kvm_host.h
>> +++ b/arch/x86/include/asm/kvm_host.h
>> @@ -782,45 +782,45 @@ struct kvm_arch {
>>  };
>>  
>>  struct kvm_vm_stat {
>> -	u32 mmu_shadow_zapped;
>> -	u32 mmu_pte_write;
>> -	u32 mmu_pte_updated;
>> -	u32 mmu_pde_zapped;
>> -	u32 mmu_flooded;
>> -	u32 mmu_recycled;
>> -	u32 mmu_cache_miss;
>> -	u32 mmu_unsync;
>> -	u32 remote_tlb_flush;
>> -	u32 lpages;
>> +	ulong mmu_shadow_zapped;
>> +	ulong mmu_pte_write;
>> +	ulong mmu_pte_updated;
>> +	ulong mmu_pde_zapped;
>> +	ulong mmu_flooded;
>> +	ulong mmu_recycled;
>> +	ulong mmu_cache_miss;
>> +	ulong mmu_unsync;
>> +	ulong remote_tlb_flush;
>> +	ulong lpages;
>>  };
>>  
>>  struct kvm_vcpu_stat {
>> -	u32 pf_fixed;
>> -	u32 pf_guest;
>> -	u32 tlb_flush;
>> -	u32 invlpg;
>> -
>> -	u32 exits;
>> -	u32 io_exits;
>> -	u32 mmio_exits;
>> -	u32 signal_exits;
>> -	u32 irq_window_exits;
>> -	u32 nmi_window_exits;
>> -	u32 halt_exits;
>> -	u32 halt_successful_poll;
>> -	u32 halt_attempted_poll;
>> -	u32 halt_poll_invalid;
>> -	u32 halt_wakeup;
>> -	u32 request_irq_exits;
>> -	u32 irq_exits;
>> -	u32 host_state_reload;
>> -	u32 efer_reload;
>> -	u32 fpu_reload;
>> -	u32 insn_emulation;
>> -	u32 insn_emulation_fail;
>> -	u32 hypercalls;
>> -	u32 irq_injections;
>> -	u32 nmi_injections;
>> +	u64 pf_fixed;
>> +	u64 pf_guest;
>> +	u64 tlb_flush;
>> +	u64 invlpg;
>> +
>> +	u64 exits;
>> +	u64 io_exits;
>> +	u64 mmio_exits;
>> +	u64 signal_exits;
>> +	u64 irq_window_exits;
>> +	u64 nmi_window_exits;
>> +	u64 halt_exits;
>> +	u64 halt_successful_poll;
>> +	u64 halt_attempted_poll;
>> +	u64 halt_poll_invalid;
>> +	u64 halt_wakeup;
>> +	u64 request_irq_exits;
>> +	u64 irq_exits;
>> +	u64 host_state_reload;
>> +	u64 efer_reload;
>> +	u64 fpu_reload;
>> +	u64 insn_emulation;
>> +	u64 insn_emulation_fail;
>> +	u64 hypercalls;
>> +	u64 irq_injections;
>> +	u64 nmi_injections;
>>  };
>>  
>>  struct x86_instruction_info;
>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
>> index 48bd520..37a6530 100644
>> --- a/virt/kvm/kvm_main.c
>> +++ b/virt/kvm/kvm_main.c
>> @@ -3531,7 +3531,7 @@ static int vm_stat_get_per_vm(void *data, u64 *val)
>>  {
>>  	struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data;
>>  
>> -	*val = *(u32 *)((void *)stat_data->kvm + stat_data->offset);
>> +	*val = *(ulong *)((void *)stat_data->kvm + stat_data->offset);
>>  
>>  	return 0;
>>  }
>> @@ -3561,7 +3561,7 @@ static int vcpu_stat_get_per_vm(void *data, u64 *val)
>>  	*val = 0;
>>  
>>  	kvm_for_each_vcpu(i, vcpu, stat_data->kvm)
>> -		*val += *(u32 *)((void *)vcpu + stat_data->offset);
>> +		*val += *(u64 *)((void *)vcpu + stat_data->offset);
>>  
>>  	return 0;
>>  }
>> -- 
>> 2.5.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 96387d4..c8e55b3b 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -183,15 +183,15 @@  struct kvm_vcpu_arch {
 };
 
 struct kvm_vm_stat {
-	u32 remote_tlb_flush;
+	ulong remote_tlb_flush;
 };
 
 struct kvm_vcpu_stat {
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
-	u32 hvc_exit_stat;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 hvc_exit_stat;
 	u64 wfe_exit_stat;
 	u64 wfi_exit_stat;
 	u64 mmio_exit_user;
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 49095fc..b14c8bc 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -291,15 +291,15 @@  struct kvm_vcpu_arch {
 #endif
 
 struct kvm_vm_stat {
-	u32 remote_tlb_flush;
+	ulong remote_tlb_flush;
 };
 
 struct kvm_vcpu_stat {
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
-	u32 hvc_exit_stat;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 hvc_exit_stat;
 	u64 wfe_exit_stat;
 	u64 wfi_exit_stat;
 	u64 mmio_exit_user;
diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
index 36a391d..9704888 100644
--- a/arch/mips/include/asm/kvm_host.h
+++ b/arch/mips/include/asm/kvm_host.h
@@ -98,32 +98,32 @@  extern void (*kvm_mips_release_pfn_clean)(kvm_pfn_t pfn);
 extern bool (*kvm_mips_is_error_pfn)(kvm_pfn_t pfn);
 
 struct kvm_vm_stat {
-	u32 remote_tlb_flush;
+	ulong remote_tlb_flush;
 };
 
 struct kvm_vcpu_stat {
-	u32 wait_exits;
-	u32 cache_exits;
-	u32 signal_exits;
-	u32 int_exits;
-	u32 cop_unusable_exits;
-	u32 tlbmod_exits;
-	u32 tlbmiss_ld_exits;
-	u32 tlbmiss_st_exits;
-	u32 addrerr_st_exits;
-	u32 addrerr_ld_exits;
-	u32 syscall_exits;
-	u32 resvd_inst_exits;
-	u32 break_inst_exits;
-	u32 trap_inst_exits;
-	u32 msa_fpe_exits;
-	u32 fpe_exits;
-	u32 msa_disabled_exits;
-	u32 flush_dcache_exits;
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
+	u64 wait_exits;
+	u64 cache_exits;
+	u64 signal_exits;
+	u64 int_exits;
+	u64 cop_unusable_exits;
+	u64 tlbmod_exits;
+	u64 tlbmiss_ld_exits;
+	u64 tlbmiss_st_exits;
+	u64 addrerr_st_exits;
+	u64 addrerr_ld_exits;
+	u64 syscall_exits;
+	u64 resvd_inst_exits;
+	u64 break_inst_exits;
+	u64 trap_inst_exits;
+	u64 msa_fpe_exits;
+	u64 fpe_exits;
+	u64 msa_disabled_exits;
+	u64 flush_dcache_exits;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
 };
 
 enum kvm_mips_exit_types {
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index 610f393..f6304c5 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -95,41 +95,41 @@  struct kvmppc_vcpu_book3s;
 struct kvmppc_book3s_shadow_vcpu;
 
 struct kvm_vm_stat {
-	u32 remote_tlb_flush;
+	ulong remote_tlb_flush;
 };
 
 struct kvm_vcpu_stat {
-	u32 sum_exits;
-	u32 mmio_exits;
-	u32 signal_exits;
-	u32 light_exits;
+	u64 sum_exits;
+	u64 mmio_exits;
+	u64 signal_exits;
+	u64 light_exits;
 	/* Account for special types of light exits: */
-	u32 itlb_real_miss_exits;
-	u32 itlb_virt_miss_exits;
-	u32 dtlb_real_miss_exits;
-	u32 dtlb_virt_miss_exits;
-	u32 syscall_exits;
-	u32 isi_exits;
-	u32 dsi_exits;
-	u32 emulated_inst_exits;
-	u32 dec_exits;
-	u32 ext_intr_exits;
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
-	u32 dbell_exits;
-	u32 gdbell_exits;
-	u32 ld;
-	u32 st;
+	u64 itlb_real_miss_exits;
+	u64 itlb_virt_miss_exits;
+	u64 dtlb_real_miss_exits;
+	u64 dtlb_virt_miss_exits;
+	u64 syscall_exits;
+	u64 isi_exits;
+	u64 dsi_exits;
+	u64 emulated_inst_exits;
+	u64 dec_exits;
+	u64 ext_intr_exits;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 dbell_exits;
+	u64 gdbell_exits;
+	u64 ld;
+	u64 st;
 #ifdef CONFIG_PPC_BOOK3S
-	u32 pf_storage;
-	u32 pf_instruc;
-	u32 sp_storage;
-	u32 sp_instruc;
-	u32 queue_intr;
-	u32 ld_slow;
-	u32 st_slow;
+	u64 pf_storage;
+	u64 pf_instruc;
+	u64 sp_storage;
+	u64 sp_instruc;
+	u64 queue_intr;
+	u64 ld_slow;
+	u64 st_slow;
 #endif
 };
 
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index ac82e8e..bdacd9c 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -238,69 +238,69 @@  struct sie_page {
 } __packed;
 
 struct kvm_vcpu_stat {
-	u32 exit_userspace;
-	u32 exit_null;
-	u32 exit_external_request;
-	u32 exit_external_interrupt;
-	u32 exit_stop_request;
-	u32 exit_validity;
-	u32 exit_instruction;
-	u32 exit_pei;
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
-	u32 instruction_lctl;
-	u32 instruction_lctlg;
-	u32 instruction_stctl;
-	u32 instruction_stctg;
-	u32 exit_program_interruption;
-	u32 exit_instr_and_program;
-	u32 deliver_external_call;
-	u32 deliver_emergency_signal;
-	u32 deliver_service_signal;
-	u32 deliver_virtio_interrupt;
-	u32 deliver_stop_signal;
-	u32 deliver_prefix_signal;
-	u32 deliver_restart_signal;
-	u32 deliver_program_int;
-	u32 deliver_io_int;
-	u32 exit_wait_state;
-	u32 instruction_pfmf;
-	u32 instruction_stidp;
-	u32 instruction_spx;
-	u32 instruction_stpx;
-	u32 instruction_stap;
-	u32 instruction_storage_key;
-	u32 instruction_ipte_interlock;
-	u32 instruction_stsch;
-	u32 instruction_chsc;
-	u32 instruction_stsi;
-	u32 instruction_stfl;
-	u32 instruction_tprot;
-	u32 instruction_essa;
-	u32 instruction_sigp_sense;
-	u32 instruction_sigp_sense_running;
-	u32 instruction_sigp_external_call;
-	u32 instruction_sigp_emergency;
-	u32 instruction_sigp_cond_emergency;
-	u32 instruction_sigp_start;
-	u32 instruction_sigp_stop;
-	u32 instruction_sigp_stop_store_status;
-	u32 instruction_sigp_store_status;
-	u32 instruction_sigp_store_adtl_status;
-	u32 instruction_sigp_arch;
-	u32 instruction_sigp_prefix;
-	u32 instruction_sigp_restart;
-	u32 instruction_sigp_init_cpu_reset;
-	u32 instruction_sigp_cpu_reset;
-	u32 instruction_sigp_unknown;
-	u32 diagnose_10;
-	u32 diagnose_44;
-	u32 diagnose_9c;
-	u32 diagnose_258;
-	u32 diagnose_308;
-	u32 diagnose_500;
+	u64 exit_userspace;
+	u64 exit_null;
+	u64 exit_external_request;
+	u64 exit_external_interrupt;
+	u64 exit_stop_request;
+	u64 exit_validity;
+	u64 exit_instruction;
+	u64 exit_pei;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 instruction_lctl;
+	u64 instruction_lctlg;
+	u64 instruction_stctl;
+	u64 instruction_stctg;
+	u64 exit_program_interruption;
+	u64 exit_instr_and_program;
+	u64 deliver_external_call;
+	u64 deliver_emergency_signal;
+	u64 deliver_service_signal;
+	u64 deliver_virtio_interrupt;
+	u64 deliver_stop_signal;
+	u64 deliver_prefix_signal;
+	u64 deliver_restart_signal;
+	u64 deliver_program_int;
+	u64 deliver_io_int;
+	u64 exit_wait_state;
+	u64 instruction_pfmf;
+	u64 instruction_stidp;
+	u64 instruction_spx;
+	u64 instruction_stpx;
+	u64 instruction_stap;
+	u64 instruction_storage_key;
+	u64 instruction_ipte_interlock;
+	u64 instruction_stsch;
+	u64 instruction_chsc;
+	u64 instruction_stsi;
+	u64 instruction_stfl;
+	u64 instruction_tprot;
+	u64 instruction_essa;
+	u64 instruction_sigp_sense;
+	u64 instruction_sigp_sense_running;
+	u64 instruction_sigp_external_call;
+	u64 instruction_sigp_emergency;
+	u64 instruction_sigp_cond_emergency;
+	u64 instruction_sigp_start;
+	u64 instruction_sigp_stop;
+	u64 instruction_sigp_stop_store_status;
+	u64 instruction_sigp_store_status;
+	u64 instruction_sigp_store_adtl_status;
+	u64 instruction_sigp_arch;
+	u64 instruction_sigp_prefix;
+	u64 instruction_sigp_restart;
+	u64 instruction_sigp_init_cpu_reset;
+	u64 instruction_sigp_cpu_reset;
+	u64 instruction_sigp_unknown;
+	u64 diagnose_10;
+	u64 diagnose_44;
+	u64 diagnose_9c;
+	u64 diagnose_258;
+	u64 diagnose_308;
+	u64 diagnose_500;
 };
 
 #define PGM_OPERATION			0x01
@@ -563,7 +563,7 @@  struct kvm_vcpu_arch {
 };
 
 struct kvm_vm_stat {
-	u32 remote_tlb_flush;
+	ulong remote_tlb_flush;
 };
 
 struct kvm_arch_memory_slot {
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 69e62862..c30462f 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -782,45 +782,45 @@  struct kvm_arch {
 };
 
 struct kvm_vm_stat {
-	u32 mmu_shadow_zapped;
-	u32 mmu_pte_write;
-	u32 mmu_pte_updated;
-	u32 mmu_pde_zapped;
-	u32 mmu_flooded;
-	u32 mmu_recycled;
-	u32 mmu_cache_miss;
-	u32 mmu_unsync;
-	u32 remote_tlb_flush;
-	u32 lpages;
+	ulong mmu_shadow_zapped;
+	ulong mmu_pte_write;
+	ulong mmu_pte_updated;
+	ulong mmu_pde_zapped;
+	ulong mmu_flooded;
+	ulong mmu_recycled;
+	ulong mmu_cache_miss;
+	ulong mmu_unsync;
+	ulong remote_tlb_flush;
+	ulong lpages;
 };
 
 struct kvm_vcpu_stat {
-	u32 pf_fixed;
-	u32 pf_guest;
-	u32 tlb_flush;
-	u32 invlpg;
-
-	u32 exits;
-	u32 io_exits;
-	u32 mmio_exits;
-	u32 signal_exits;
-	u32 irq_window_exits;
-	u32 nmi_window_exits;
-	u32 halt_exits;
-	u32 halt_successful_poll;
-	u32 halt_attempted_poll;
-	u32 halt_poll_invalid;
-	u32 halt_wakeup;
-	u32 request_irq_exits;
-	u32 irq_exits;
-	u32 host_state_reload;
-	u32 efer_reload;
-	u32 fpu_reload;
-	u32 insn_emulation;
-	u32 insn_emulation_fail;
-	u32 hypercalls;
-	u32 irq_injections;
-	u32 nmi_injections;
+	u64 pf_fixed;
+	u64 pf_guest;
+	u64 tlb_flush;
+	u64 invlpg;
+
+	u64 exits;
+	u64 io_exits;
+	u64 mmio_exits;
+	u64 signal_exits;
+	u64 irq_window_exits;
+	u64 nmi_window_exits;
+	u64 halt_exits;
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 request_irq_exits;
+	u64 irq_exits;
+	u64 host_state_reload;
+	u64 efer_reload;
+	u64 fpu_reload;
+	u64 insn_emulation;
+	u64 insn_emulation_fail;
+	u64 hypercalls;
+	u64 irq_injections;
+	u64 nmi_injections;
 };
 
 struct x86_instruction_info;
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 48bd520..37a6530 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -3531,7 +3531,7 @@  static int vm_stat_get_per_vm(void *data, u64 *val)
 {
 	struct kvm_stat_data *stat_data = (struct kvm_stat_data *)data;
 
-	*val = *(u32 *)((void *)stat_data->kvm + stat_data->offset);
+	*val = *(ulong *)((void *)stat_data->kvm + stat_data->offset);
 
 	return 0;
 }
@@ -3561,7 +3561,7 @@  static int vcpu_stat_get_per_vm(void *data, u64 *val)
 	*val = 0;
 
 	kvm_for_each_vcpu(i, vcpu, stat_data->kvm)
-		*val += *(u32 *)((void *)vcpu + stat_data->offset);
+		*val += *(u64 *)((void *)vcpu + stat_data->offset);
 
 	return 0;
 }