KVM: arm64: selftests: Avoid testing the IMPDEF behavior
PATCH 1/1 KVM: arm64: selftests: Avoid testing the IMPDEF behavior
From: "Zenghui Yu (Huawei)" <[email protected]>
It turned out that we can't really force KVM to use the "slow" path when emulating AT instructions [1]. We should therefore avoid testing the IMPDEF behavior (i.e., TEST_ACCESS_FLAG - address translation instructions are permitted to update AF but not required).
Remove it and improve the comment a bit.
[1] https://lore.kernel.org/r/[email protected]
--- tools/testing/selftests/kvm/arm64/at.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
tools/testing/selftests/kvm/arm64/at.c +2 -12
@@ -13,7 +13,6 @@enum {CLEAR_ACCESS_FLAG , -TEST_ACCESS_FLAG , };static u64 *ptep_hva;
@@ -49,7 +48,6 @@ do { \GUEST_ASSERT_EQ (FIELD_GET (SYS_PAR_EL1_ATTR , par),MAIR_ATTR_NORMAL ); \GUEST_ASSERT_EQ (FIELD_GET (SYS_PAR_EL1_SH , par),PTE_SHARED >>8 ); \GUEST_ASSERT_EQ (par &SYS_PAR_EL1_PA ,TEST_ADDR ); \ -GUEST_SYNC (TEST_ACCESS_FLAG ); \ } \ }while (0 )
@@ -85,10 +83,6 @@ static void guest_code(void)if (!SYS_FIELD_GET (ID_AA64MMFR1_EL1 ,HAFDBS ,read_sysreg (id_aa64mmfr1_el1)))GUEST_DONE (); -/* -* KVM's software PTW makes the implementation choice that the AT -* instruction sets the access flag. -*/ sysreg_clear_set (tcr_el1,0 ,TCR_HA );isb ();test_at (false);
@@ -102,8 +96,8 @@ static void handle_sync(struct kvm_vcpu *vcpu, struct ucall *uc)case CLEAR_ACCESS_FLAG :/* * Delete + reinstall the memslot to invalidate stage-2 -* mappings of the stage-1 page tables, forcing KVM to -* use the 'slow' AT emulation path. +* mappings of the stage-1 page tables, allowing KVM to +* potentially use the 'slow' AT emulation path. * * This and clearing the access flag from host userspace * ensures that the access flag cannot be set speculatively
@@ -112,10 +106,6 @@ static void handle_sync(struct kvm_vcpu *vcpu, struct ucall *uc)clear_bit (__ffs (PTE_AF ), ptep_hva);vm_mem_region_reload (vcpu->vm, vcpu->vm->memslots[MEM_REGION_PT ]);break ; -case TEST_ACCESS_FLAG : -TEST_ASSERT (test_bit (__ffs (PTE_AF ), ptep_hva), -"Expected access flag to be set (desc: %lu)" , *ptep_hva); -break ;default :TEST_FAIL ("Unexpected SYNC arg: %lu" , uc->args[1 ]); }
Signature · 1 line
2.53.0
Quoted 8 lines · Zenghui Yu
It turned out that we can't really force KVM to use the "slow" path when emulating AT instructions [1]. We should therefore avoid testing the IMPDEF behavior (i.e.,
TEST_ACCESS_FLAG- address translation instructions are permitted to update AF but not required).Remove it and improve the comment a bit.
[...]
Applied to next, thanks!
[1/1] KVM: arm64: selftests: Avoid testing the IMPDEF behavior
commit: 03db5f05d4c76d76b32a9d26001e2ec6252f74f8
Cheers,
M.
Signature · 1 line
Without deviation from the norm, progress is not possible.