Message ID | 20231007124043.626-1-yuzenghui@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] KVM: arm64: selftest: Add the missing .guest_prepare() | expand |
On Sat, 07 Oct 2023 13:40:42 +0100, Zenghui Yu <yuzenghui@huawei.com> wrote: > > Running page_fault_test on a Cortex A72 fails with > > Test: ro_memslot_no_syndrome_guest_cas > Testing guest mode: PA-bits:40, VA-bits:48, 4K pages > Testing memory backing src type: anonymous > ==== Test Assertion Failure ==== > aarch64/page_fault_test.c:117: guest_check_lse() > pid=1944087 tid=1944087 errno=4 - Interrupted system call > 1 0x00000000004028b3: vcpu_run_loop at page_fault_test.c:682 > 2 0x0000000000402d93: run_test at page_fault_test.c:731 > 3 0x0000000000403957: for_each_guest_mode at guest_modes.c:100 > 4 0x00000000004019f3: for_each_test_and_guest_mode at page_fault_test.c:1108 > 5 (inlined by) main at page_fault_test.c:1134 > 6 0x0000ffff868e503b: ?? ??:0 > 7 0x0000ffff868e5113: ?? ??:0 > 8 0x0000000000401aaf: _start at ??:? > guest_check_lse() > > because we don't have a guest_prepare stage to check the presence of > FEAT_LSE and skip the related guest_cas testing, and we end-up failing in > GUEST_ASSERT(guest_check_lse()). > > Add the missing .guest_prepare() where it's indeed required. > > Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> Acked-by: Marc Zyngier <maz@kernel.org> M.
On Sat, 7 Oct 2023 20:40:42 +0800, Zenghui Yu wrote: > Running page_fault_test on a Cortex A72 fails with > > Test: ro_memslot_no_syndrome_guest_cas > Testing guest mode: PA-bits:40, VA-bits:48, 4K pages > Testing memory backing src type: anonymous > ==== Test Assertion Failure ==== > aarch64/page_fault_test.c:117: guest_check_lse() > pid=1944087 tid=1944087 errno=4 - Interrupted system call > 1 0x00000000004028b3: vcpu_run_loop at page_fault_test.c:682 > 2 0x0000000000402d93: run_test at page_fault_test.c:731 > 3 0x0000000000403957: for_each_guest_mode at guest_modes.c:100 > 4 0x00000000004019f3: for_each_test_and_guest_mode at page_fault_test.c:1108 > 5 (inlined by) main at page_fault_test.c:1134 > 6 0x0000ffff868e503b: ?? ??:0 > 7 0x0000ffff868e5113: ?? ??:0 > 8 0x0000000000401aaf: _start at ??:? > guest_check_lse() > > [...] Applied to kvmarm/next, thanks! [1/2] KVM: arm64: selftest: Add the missing .guest_prepare() https://git.kernel.org/kvmarm/kvmarm/c/45c9683d5ce1 [2/2] KVM: arm64: selftest: Perform ISB before reading PAR_EL1 https://git.kernel.org/kvmarm/kvmarm/c/a9c9864f3c2f -- Best, Oliver
diff --git a/tools/testing/selftests/kvm/aarch64/page_fault_test.c b/tools/testing/selftests/kvm/aarch64/page_fault_test.c index 47bb914ab2fa..eb5ead50c0b1 100644 --- a/tools/testing/selftests/kvm/aarch64/page_fault_test.c +++ b/tools/testing/selftests/kvm/aarch64/page_fault_test.c @@ -842,6 +842,7 @@ static void help(char *name) .name = SCAT2(ro_memslot_no_syndrome, _access), \ .data_memslot_flags = KVM_MEM_READONLY, \ .pt_memslot_flags = KVM_MEM_READONLY, \ + .guest_prepare = { _PREPARE(_access) }, \ .guest_test = _access, \ .fail_vcpu_run_handler = fail_vcpu_run_mmio_no_syndrome_handler, \ .expected_events = { .fail_vcpu_runs = 1 }, \ @@ -865,6 +866,7 @@ static void help(char *name) .name = SCAT2(ro_memslot_no_syn_and_dlog, _access), \ .data_memslot_flags = KVM_MEM_READONLY | KVM_MEM_LOG_DIRTY_PAGES, \ .pt_memslot_flags = KVM_MEM_READONLY | KVM_MEM_LOG_DIRTY_PAGES, \ + .guest_prepare = { _PREPARE(_access) }, \ .guest_test = _access, \ .guest_test_check = { _test_check }, \ .fail_vcpu_run_handler = fail_vcpu_run_mmio_no_syndrome_handler, \ @@ -894,6 +896,7 @@ static void help(char *name) .data_memslot_flags = KVM_MEM_READONLY, \ .pt_memslot_flags = KVM_MEM_READONLY, \ .mem_mark_cmd = CMD_HOLE_DATA | CMD_HOLE_PT, \ + .guest_prepare = { _PREPARE(_access) }, \ .guest_test = _access, \ .uffd_data_handler = _uffd_data_handler, \ .uffd_pt_handler = uffd_pt_handler, \
Running page_fault_test on a Cortex A72 fails with Test: ro_memslot_no_syndrome_guest_cas Testing guest mode: PA-bits:40, VA-bits:48, 4K pages Testing memory backing src type: anonymous ==== Test Assertion Failure ==== aarch64/page_fault_test.c:117: guest_check_lse() pid=1944087 tid=1944087 errno=4 - Interrupted system call 1 0x00000000004028b3: vcpu_run_loop at page_fault_test.c:682 2 0x0000000000402d93: run_test at page_fault_test.c:731 3 0x0000000000403957: for_each_guest_mode at guest_modes.c:100 4 0x00000000004019f3: for_each_test_and_guest_mode at page_fault_test.c:1108 5 (inlined by) main at page_fault_test.c:1134 6 0x0000ffff868e503b: ?? ??:0 7 0x0000ffff868e5113: ?? ??:0 8 0x0000000000401aaf: _start at ??:? guest_check_lse() because we don't have a guest_prepare stage to check the presence of FEAT_LSE and skip the related guest_cas testing, and we end-up failing in GUEST_ASSERT(guest_check_lse()). Add the missing .guest_prepare() where it's indeed required. Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> --- tools/testing/selftests/kvm/aarch64/page_fault_test.c | 3 +++ 1 file changed, 3 insertions(+)