Hi Jing, On Mon, Jun 14, 2021 at 3:53 AM Jing Zhang <jingzhangos@xxxxxxxxxx> wrote: > > Add static check to make sure the number of stats descriptors equals > the number of stats defined in vm/vcpu stats structures. > Add offset field in stats descriptor to let us define stats > descriptors freely, don't have to be in the same order as > stats in vm/vcpu stats structures. > Also fix some missing/mismatched stats from previous patch. > > Signed-off-by: Jing Zhang <jingzhangos@xxxxxxxxxx> I tested this for arm64, and it does assert if there's a mismatch. I couldn't find any missing statistics under any of the architectures either. > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 5e77f32abef5..692af9177c9f 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -1296,119 +1296,152 @@ struct _kvm_stats_desc { > { n, offsetof(struct kvm_vcpu, stat.generic.x), \ > KVM_STAT_VCPU, ## __VA_ARGS__ } > > -#define STATS_DESC(stat, type, unit, base, exp) \ > +#define STATS_DESC_COMMON(type, unit, base, exp) \ > + .flags = type | unit | base | \ > + BUILD_BUG_ON_ZERO(type & ~KVM_STATS_TYPE_MASK) | \ > + BUILD_BUG_ON_ZERO(unit & ~KVM_STATS_UNIT_MASK) | \ > + BUILD_BUG_ON_ZERO(base & ~KVM_STATS_BASE_MASK), \ > + .exponent = exp, \ > + .size = 1 > + nit: you seem to be mixing tabs and spaces here > +#define VM_GENERIC_STATS_DESC(stat, type, unit, base, exp) \ > { \ > { \ > - .flags = type | unit | base | \ > - BUILD_BUG_ON_ZERO(type & ~KVM_STATS_TYPE_MASK) | \ > - BUILD_BUG_ON_ZERO(unit & ~KVM_STATS_UNIT_MASK) | \ > - BUILD_BUG_ON_ZERO(base & ~KVM_STATS_BASE_MASK), \ > - .exponent = exp, \ > - .size = 1 \ > + STATS_DESC_COMMON(type, unit, base, exp), \ > + .offset = offsetof(struct kvm_vm_stat, generic.stat) \ > }, \ > - .name = stat, \ > + .name = #stat, \ > } nit: also here, mixing of tabs and spaces Tested-by: Fuad Tabba <tabba@xxxxxxxxxx> #arm64 Reviewed-by: Fuad Tabba <tabba@xxxxxxxxxx> Thanks, /fuad