From 1ca1a7ec3637bc19818eab8085cbbe273217ad68 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 14 Jul 2022 14:08:09 +0200 Subject: monitor: add support for boolean statistics The next version of Linux will introduce boolean statistics, which can only have 0 or 1 values. Support them in the schema and in the HMP command. Suggested-by: Amneesh Singh Signed-off-by: Paolo Bonzini --- monitor/hmp-cmds.c | 2 ++ qapi/stats.json | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index ca98df0495..e8d6963722 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -2337,6 +2337,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' ] } } ## -- cgit v1.2.3 From 105bb7cdbe9b60129034410e228535f5ea5648ea Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 14 Jul 2022 14:10:22 +0200 Subject: kvm: add support for boolean statistics The next version of Linux will introduce boolean statistics, which can only have 0 or 1 values. Convert them to the new QAPI fields added in the previous commit. Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 10 +++++++++- linux-headers/linux/kvm.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index ed8b6b896e..3a2677d065 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3743,6 +3743,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; @@ -3761,7 +3762,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 { @@ -3809,6 +3813,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 -- cgit v1.2.3 From 3746b8ca3e8bc216d03df5813080eeb06bdafabb Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 18 Jul 2022 19:20:26 +0200 Subject: util: Fix broken build on Haiku MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A recent commit moved some Haiku-specific code parts from oslib-posix.c to cutils.c, but failed to move the corresponding header #include statement, too, so "make vm-build-haiku.x86_64" is currently broken. Fix it by moving the header #include, too. Fixes: 06680b15b4 ("include: move qemu_*_exec_dir() to cutils") Signed-off-by: Thomas Huth Reviewed-by: Marc-André Lureau Message-Id: <20220718172026.139004-1-thuth@redhat.com> Signed-off-by: Paolo Bonzini --- util/cutils.c | 4 ++++ util/oslib-posix.c | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/util/cutils.c b/util/cutils.c index 8199dac598..cb43dda213 100644 --- a/util/cutils.c +++ b/util/cutils.c @@ -35,6 +35,10 @@ #include #endif +#ifdef __HAIKU__ +#include +#endif + #ifdef G_OS_WIN32 #include #include diff --git a/util/oslib-posix.c b/util/oslib-posix.c index 7a34c1657c..bffec18869 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -62,10 +62,6 @@ #include #endif -#ifdef __HAIKU__ -#include -#endif - #include "qemu/mmap-alloc.h" #ifdef CONFIG_DEBUG_STACK_USAGE -- cgit v1.2.3