On Thu, Aug 07, 2025 at 07:22:21PM +0000, Wei Liu wrote:
> On Thu, Aug 07, 2025 at 04:39:51PM +0200, Magnus Kulke wrote:
> > From: Praveen K Paladugu <[email protected]>
> >
> > Allow to query mshv capabilities via query-mshv QMP command.
> >
> > Signed-off-by: Praveen K Paladugu <[email protected]>
> > Signed-off-by: Magnus Kulke <[email protected]>
> > ---
> > hw/core/machine-qmp-cmds.c | 14 ++++++++++++++
> > qapi/accelerator.json | 29 +++++++++++++++++++++++++++++
> > 2 files changed, 43 insertions(+)
> >
> > diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
> > index 6aca1a626e..024ddb8d2d 100644
> > --- a/hw/core/machine-qmp-cmds.c
> > +++ b/hw/core/machine-qmp-cmds.c
> > @@ -28,6 +28,20 @@
> > #include "system/runstate.h"
> > #include "system/system.h"
> > #include "hw/s390x/storage-keys.h"
> > +#include <sys/stat.h>
> > +
> > +/*
> > + * QMP query for MSHV
> > + */
> > +MshvInfo *qmp_query_mshv(Error **errp)
> > +{
> > + MshvInfo *info = g_malloc0(sizeof(*info));
> > + struct stat st;
> > +
> > + info->present = accel_find("mshv");
> > + info->enabled = (stat("/dev/mshv", &st) == 0);
>
> I don't think this is the right way to check if MSHV is _enabled_. The
> device node being around doesn't necessarily mean that QEMU is using it.
>
> You can refer to kvm_enabled() to see how it is implemented.
>
> Some functions that are of interest:
> do_configure_accelerator
> accel_init_machine
This is likely as simple as squashing in the following diff.
diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
index 024ddb8d2d7c..1b520599972a 100644
--- a/hw/core/machine-qmp-cmds.c
+++ b/hw/core/machine-qmp-cmds.c
@@ -39,7 +39,7 @@ MshvInfo *qmp_query_mshv(Error **errp)
struct stat st;
info->present = accel_find("mshv");
- info->enabled = (stat("/dev/mshv", &st) == 0);
+ info->enabled = mshv_enabled();
return info;
}