+Paolo On Wed, 16 Mar 2022 12:51:29 +0000, Andrew Jones <drjones@xxxxxxxxxx> wrote: > > When testing a kernel with commit a5905d6af492 ("KVM: arm64: > Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated") > get-reg-list output > > vregs: Number blessed registers: 234 > vregs: Number registers: 238 > > vregs: There are 1 new registers. > Consider adding them to the blessed reg list with the following lines: > > KVM_REG_ARM_FW_REG(3), > > vregs: PASS > ... > > That output inspired two changes: 1) add the new register to the > blessed list and 2) explain why "Number registers" is actually four > larger than "Number blessed registers" (on the system used for > testing), even though only one register is being stated as new. > The reason is that some registers are host dependent and they get > filtered out when comparing with the blessed list. The system > used for the test apparently had three filtered registers. > > Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx> > --- > tools/testing/selftests/kvm/aarch64/get-reg-list.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/testing/selftests/kvm/aarch64/get-reg-list.c > index f769fc6cd927..7efe918ded9e 100644 > --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c > +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c > @@ -503,8 +503,13 @@ static void run_test(struct vcpu_config *c) > ++missing_regs; > > if (new_regs || missing_regs) { > + n = 0; > + for_each_reg_filtered(i) > + ++n; > + > printf("%s: Number blessed registers: %5lld\n", config_name(c), blessed_n); > - printf("%s: Number registers: %5lld\n", config_name(c), reg_list->n); > + printf("%s: Number registers: %5lld (includes %lld filtered registers)\n", > + config_name(c), reg_list->n, reg_list->n - n); > } > > if (new_regs) { > @@ -683,9 +688,10 @@ static __u64 base_regs[] = { > KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_CORE | KVM_REG_ARM_CORE_REG(spsr[4]), > KVM_REG_ARM64 | KVM_REG_SIZE_U32 | KVM_REG_ARM_CORE | KVM_REG_ARM_CORE_REG(fp_regs.fpsr), > KVM_REG_ARM64 | KVM_REG_SIZE_U32 | KVM_REG_ARM_CORE | KVM_REG_ARM_CORE_REG(fp_regs.fpcr), > - KVM_REG_ARM_FW_REG(0), > - KVM_REG_ARM_FW_REG(1), > - KVM_REG_ARM_FW_REG(2), > + KVM_REG_ARM_FW_REG(0), /* KVM_REG_ARM_PSCI_VERSION */ > + KVM_REG_ARM_FW_REG(1), /* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1 */ > + KVM_REG_ARM_FW_REG(2), /* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 */ > + KVM_REG_ARM_FW_REG(3), /* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3 */ > ARM64_SYS_REG(3, 3, 14, 3, 1), /* CNTV_CTL_EL0 */ > ARM64_SYS_REG(3, 3, 14, 3, 2), /* CNTV_CVAL_EL0 */ > ARM64_SYS_REG(3, 3, 14, 0, 2), Acked-by: Marc Zyngier <maz@xxxxxxxxxx> Paolo, I don't have anything pending for 5.17, so feel free to take it directly into Linus' tree. Thanks, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm