Hi Marc,
On Fri, Apr 30, 2021 at 7:07 AM Marc Zyngier maz@kernel.org wrote:
On Thu, 29 Apr 2021 21:37:37 +0100, Jing Zhang jingzhangos@google.com wrote:
+struct kvm_vm_stat_common {
ulong remote_tlb_flush;
+};
+struct kvm_vcpu_stat_common {
u64 halt_successful_poll;
u64 halt_attempted_poll;
u64 halt_poll_invalid;
u64 halt_wakeup;
u64 halt_poll_success_ns;
u64 halt_poll_fail_ns;
+};
Why can't we make everything a u64? Is there anything that really needs to be a ulong? On most architectures, they are the same anyway, so we might as well bite the bullet.
That's a question I have asked myself many times. It is a little bit annoying to handle different types for VM and VCPU stats. This divergence was from the commit 8a7e75d47b681933, which says "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."
I would be very happy if there is a lock-free way to use u64 for VM stats. Please let me know if anyone has any idea about this.
M.
-- Without deviation from the norm, progress is not possible.
Thanks, Jing