mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
arm/kvm: add support for MTE
Extend the 'mte' property for the virt machine to cover KVM as well. For KVM, we don't allocate tag memory, but instead enable the capability. If MTE has been enabled, we need to disable migration, as we do not yet have a way to migrate the tags as well. Therefore, MTE will stay off with KVM unless requested explicitly. Signed-off-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20230428095533.21747-2-cohuck@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
96e6d25fdd
commit
b320e21c48
6 changed files with 109 additions and 36 deletions
|
@ -1480,6 +1480,7 @@ void arm_cpu_post_init(Object *obj)
|
|||
qdev_prop_allow_set_link_before_realize,
|
||||
OBJ_PROP_LINK_STRONG);
|
||||
}
|
||||
cpu->has_mte = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -1616,7 +1617,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
}
|
||||
if (cpu->tag_memory) {
|
||||
error_setg(errp,
|
||||
"Cannot enable %s when guest CPUs has MTE enabled",
|
||||
"Cannot enable %s when guest CPUs has tag memory enabled",
|
||||
current_accel_name());
|
||||
return;
|
||||
}
|
||||
|
@ -1996,10 +1997,10 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
if (cpu->tag_memory == NULL && cpu_isar_feature(aa64_mte, cpu)) {
|
||||
if (!cpu->has_mte && cpu_isar_feature(aa64_mte, cpu)) {
|
||||
/*
|
||||
* Disable the MTE feature bits if we do not have tag-memory
|
||||
* provided by the machine.
|
||||
* Disable the MTE feature bits if we do not have the feature
|
||||
* setup by the machine.
|
||||
*/
|
||||
cpu->isar.id_aa64pfr1 =
|
||||
FIELD_DP64(cpu->isar.id_aa64pfr1, ID_AA64PFR1, MTE, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue