On Thu, 16 Oct 2025 at 15:01, Eric Auger <[email protected]> wrote: > > This is an example on how to use the new CPU options. This catters to > distributions who want machines to be migratable (forward and backward) > accross different host kernel versions in case KVM registers exposed > to qemu vary accross kernels. This patch is not meant to be upstreamed > as it is really kernel dependent. The goal is to illustrate how this > would be used. > > In this example, For 10_1 machines types and older we apply the following > host kernel related compats: > > 1) Make sure the KVM_REG_ARM_VENDOR_HYP_BMAP_2 exposed from v6.15 onwards > is ignored/hidden. > 2) Make sure TCR_EL1, PIRE0_EL1, PIR_EL1 are always seen by qemu > although not exposed by KVM. They were unconditionnally exposed before > v6.13 while from v6.13 they are only exposed if supported by the guest. > > This will allow 10_1 machines types and older machines to migrate > forward and backward from old downstream kernels that do not feature > those changes to newer kernels (>= v6.15). > > Signed-off-by: Eric Auger <[email protected]> > --- > hw/arm/virt.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 175023897a..c4f9b82c38 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -97,6 +97,23 @@ static GlobalProperty arm_virt_compat[] = { > }; > static const size_t arm_virt_compat_len = G_N_ELEMENTS(arm_virt_compat); > > +/* > + * if a 10_1 machine type or older is used: > + * 1) make sure TCR_EL1, PIRE0_EL1, PIR_EL1 are enforced, even if they are > not > + * exposed by the kernel > + * 2) hide KVM_REG_ARM_VENDOR_HYP_BMAP_2 > + */ > +static GlobalProperty arm_virt_kernel_compat_10_1[] = { > + /* KVM_REG_ARM_VENDOR_HYP_BMAP_2 */ > + { TYPE_ARM_CPU, "kvm-hidden-regs", "0x6030000000160003" }, > + /* TCR_EL1, PIRE0_EL1, PIR_EL1 */ > + { TYPE_ARM_CPU, "kvm-enforced-regs", > + "0x603000000013c103, 0x603000000013c512, 0x603000000013c513" },
Strings which are lists of long hex numbers? Is there a more readable way to do this? -- PMM
