diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2022-07-21 11:13:01 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2022-07-21 11:13:01 +0100 |
commit | 5288bee45fbd33203b61f8c76e41b15bb5913e6e (patch) | |
tree | e1ffe86238a1f386eecf134befcfe92ba6e79d85 | |
parent | fe16c833fdb74642c296fa96a472e39229cd4351 (diff) | |
parent | 3746b8ca3e8bc216d03df5813080eeb06bdafabb (diff) |
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* Boolean statistics for KVM
* Fix build on Haiku
# gpg: Signature made Tue 19 Jul 2022 10:32:34 BST
# gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg: issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1
# Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83
* tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
util: Fix broken build on Haiku
kvm: add support for boolean statistics
monitor: add support for boolean statistics
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | accel/kvm/kvm-all.c | 10 | ||||
-rw-r--r-- | linux-headers/linux/kvm.h | 1 | ||||
-rw-r--r-- | monitor/hmp-cmds.c | 2 | ||||
-rw-r--r-- | qapi/stats.json | 4 |
4 files changed, 15 insertions, 2 deletions
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 3187656570..99aede73b7 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3769,6 +3769,7 @@ static StatsList *add_kvmstat_entry(struct kvm_stats_desc *pdesc, case KVM_STATS_UNIT_BYTES: case KVM_STATS_UNIT_CYCLES: case KVM_STATS_UNIT_SECONDS: + case KVM_STATS_UNIT_BOOLEAN: break; default: return stats_list; @@ -3787,7 +3788,10 @@ static StatsList *add_kvmstat_entry(struct kvm_stats_desc *pdesc, stats->name = g_strdup(pdesc->name); stats->value = g_new0(StatsValue, 1);; - if (pdesc->size == 1) { + if ((pdesc->flags & KVM_STATS_UNIT_MASK) == KVM_STATS_UNIT_BOOLEAN) { + stats->value->u.boolean = *stats_data; + stats->value->type = QTYPE_QBOOL; + } else if (pdesc->size == 1) { stats->value->u.scalar = *stats_data; stats->value->type = QTYPE_QNUM; } else { @@ -3835,6 +3839,10 @@ static StatsSchemaValueList *add_kvmschema_entry(struct kvm_stats_desc *pdesc, switch (pdesc->flags & KVM_STATS_UNIT_MASK) { case KVM_STATS_UNIT_NONE: break; + case KVM_STATS_UNIT_BOOLEAN: + schema_entry->value->has_unit = true; + schema_entry->value->unit = STATS_UNIT_BOOLEAN; + break; case KVM_STATS_UNIT_BYTES: schema_entry->value->has_unit = true; schema_entry->value->unit = STATS_UNIT_BYTES; diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 0d05d02ee4..f089349149 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -2031,6 +2031,7 @@ struct kvm_stats_header { #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT) #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT) #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT) +#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT) #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES #define KVM_STATS_BASE_SHIFT 8 diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index a6dc79e0d5..c6cd6f91dd 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -2342,6 +2342,8 @@ static void print_stats_results(Monitor *mon, StatsTarget target, if (stats_value->type == QTYPE_QNUM) { monitor_printf(mon, ": %" PRId64 "\n", stats_value->u.scalar); + } else if (stats_value->type == QTYPE_QBOOL) { + monitor_printf(mon, ": %s\n", stats_value->u.boolean ? "yes" : "no"); } else if (stats_value->type == QTYPE_QLIST) { uint64List *list; int i; diff --git a/qapi/stats.json b/qapi/stats.json index 2f8bfe8fdb..57db5b1c74 100644 --- a/qapi/stats.json +++ b/qapi/stats.json @@ -38,11 +38,12 @@ # @bytes: stat reported in bytes. # @seconds: stat reported in seconds. # @cycles: stat reported in clock cycles. +# @boolean: stat is a boolean value. # # Since: 7.1 ## { 'enum' : 'StatsUnit', - 'data' : [ 'bytes', 'seconds', 'cycles' ] } + 'data' : [ 'bytes', 'seconds', 'cycles', 'boolean' ] } ## # @StatsProvider: @@ -123,6 +124,7 @@ ## { 'alternate': 'StatsValue', 'data': { 'scalar': 'uint64', + 'boolean': 'bool', 'list': [ 'uint64' ] } } ## |