s390x: Expose pv attribute in QOM

People doing VM management requested a way to query if a VM is in PV
or not. So this patch exposes the runtime PV attribute which is true
once the VM successfully made the switch into PV mode (according to
KVM) and did not yet reboot to drop out of it.

This of course does never replace attestation, it's merely QEMU's view
of the situation.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
CC: Hendrik Brueckner <brueckner@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20260924142846.157848-1-frankja@linux.ibm.com
Signed-off-by: Eric Farman <farman@linux.ibm.com>
This commit is contained in:
Janosch Frank authored and Eric Farman committed 2026-09-25 08:28:56 -04:00
1 parent 119860f15c
commit 964a49b6b7
2 files changed
+24

No files matched your search

+11
View File
@@ -65,3 +65,14 @@ metadata. In case this boot method is used, the command line
options -initrd and -cmdline are ineffective. The preparation of a PVM
image is done via the ``genprotimg`` tool from the s390-tools
collection.
PV property
-----------
The s390x-ccw machine exposes the read-only runtime "pv"
property. This property is true if a guest successfully made the
transition into PV mode as reported by KVM and hasn't yet exited PV
mode via a reboot. This does not replace PV attestation which is the
only authoritative way to get a definitive answer if a guest is truly
protected.
+13
View File
@@ -838,6 +838,13 @@ static inline void machine_set_secure_boot(Object *obj, bool value,
ms->secure_boot = value;
}
static inline bool machine_get_pv(Object *obj, Error **errp)
{
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
return ms->pv;
}
/*
* S390x-specific global compatibility properties.
*
@@ -919,6 +926,12 @@ static void ccw_machine_class_init(ObjectClass *oc, const void *data)
machine_set_secure_boot);
object_class_property_set_description(oc, "secure-boot",
"enable/disable secure boot");
object_class_property_add_bool(oc, "pv",
machine_get_pv,
NULL);
object_class_property_set_description(oc, "pv",
"true while the guest runs in protected virtualization mode (read-only)");
}
static inline void s390_machine_initfn(Object *obj)