mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
s390x: enable runtime instrumentation
Introduce run-time-instrumentation support when running under kvm for virtio-ccw 2.7 machine and make sure older machines can not enable it. The new ri_allowed field in the s390MachineClass serves as an indicator whether the feature can be used by the machine and should therefore be activated if available. riccb_needed() is used to check whether riccb is needed or not in live migration. Signed-off-by: Fan Zhang <zhangfan@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
946e55f3c7
commit
9700230b0d
5 changed files with 75 additions and 0 deletions
|
@ -190,7 +190,9 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data)
|
|||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
NMIClass *nc = NMI_CLASS(oc);
|
||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
|
||||
S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc);
|
||||
|
||||
s390mc->ri_allowed = true;
|
||||
mc->init = ccw_init;
|
||||
mc->reset = s390_machine_reset;
|
||||
mc->hot_add_cpu = s390_hot_add_cpu;
|
||||
|
@ -237,6 +239,20 @@ static inline void machine_set_dea_key_wrap(Object *obj, bool value,
|
|||
ms->dea_key_wrap = value;
|
||||
}
|
||||
|
||||
bool ri_allowed(void)
|
||||
{
|
||||
if (kvm_enabled()) {
|
||||
MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
|
||||
if (object_class_dynamic_cast(OBJECT_CLASS(mc),
|
||||
TYPE_S390_CCW_MACHINE)) {
|
||||
S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc);
|
||||
|
||||
return s390mc->ri_allowed;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void s390_machine_initfn(Object *obj)
|
||||
{
|
||||
object_property_add_bool(obj, "aes-key-wrap",
|
||||
|
@ -262,6 +278,7 @@ static const TypeInfo ccw_machine_info = {
|
|||
.abstract = true,
|
||||
.instance_size = sizeof(S390CcwMachineState),
|
||||
.instance_init = s390_machine_initfn,
|
||||
.class_size = sizeof(S390CcwMachineClass),
|
||||
.class_init = ccw_machine_class_init,
|
||||
.interfaces = (InterfaceInfo[]) {
|
||||
{ TYPE_NMI },
|
||||
|
@ -363,6 +380,9 @@ static void ccw_machine_2_6_instance_options(MachineState *machine)
|
|||
|
||||
static void ccw_machine_2_6_class_options(MachineClass *mc)
|
||||
{
|
||||
S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc);
|
||||
|
||||
s390mc->ri_allowed = false;
|
||||
ccw_machine_2_7_class_options(mc);
|
||||
SET_MACHINE_COMPAT(mc, CCW_COMPAT_2_6);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue