Allows to set both array properties along with arm cpus. Their "x-" prefix
reminds that those shall be used carefully for distro specific use cases
to enable cross kernel migration.
This will allow to define such compat machine props like:
static GlobalProperty arm_virt_kernel_compat_10_1[] = {
/* KVM_REG_ARM_VENDOR_HYP_BMAP_2 */
{ TYPE_ARM_CPU, "x-mig-hidden-regs", "0x6030000000160003" },
{ TYPE_ARM_CPU, "x-mig-safe-missing-regs",
/* TCR_EL1, PIRE0_EL1, PIR_EL1 */
"0x603000000013c103, 0x603000000013c512, 0x603000000013c513" },
}
The first one means KVM_REG_ARM_VENDOR_HYP_BMAP_2 shall always
be hidden for machine types older than 10.1. The second one means
that along with 10.1 machine type we may receive in the incoming
migration stream, 3 registers that are unknown on destination.
Obviously, using the reg index as defined in
linux/Documentation/virt/kvm/api.rst is not user friendly. However
These options are supposed to be used to enable specific, rare cases,
and in general, by people trying to configure distribution defaults
familiar with those specific cases.
Signed-off-by: Eric Auger <[email protected]>
---
v3 -> v4:
- typo and rewording in the commit description (Connie)
---
target/arm/cpu.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 066746d76f..c41774cb4c 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2248,6 +2248,11 @@ static const Property arm_cpu_properties[] = {
DEFINE_PROP_BOOL("backcompat-cntfrq", ARMCPU, backcompat_cntfrq, false),
DEFINE_PROP_BOOL("backcompat-pauth-default-use-qarma5", ARMCPU,
backcompat_pauth_default_use_qarma5, false),
+ DEFINE_PROP_ARRAY("x-mig-hidden-regs", ARMCPU,
+ nr_hidden_regs, hidden_regs, qdev_prop_uint64, uint64_t),
+ DEFINE_PROP_ARRAY("x-mig-safe-missing-regs", ARMCPU,
+ nr_mig_safe_missing_regs, mig_safe_missing_regs,
+ qdev_prop_uint64, uint64_t),
};
static const gchar *arm_gdb_arch_name(CPUState *cs)
--
2.52.0