From: Ricardo Koller <ricarkol@google.com>
To: Auger Eric <eric.auger@redhat.com>
Cc: kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu,
pbonzini@redhat.com, maz@kernel.org, drjones@redhat.com,
alexandru.elisei@arm.com
Subject: Re: [PATCH v3 0/5] KVM: selftests: arm64 exception handling and debug test
Date: Fri, 14 May 2021 11:31:13 -0700 [thread overview]
Message-ID: <YJ7B8TCwvzxJLJH/@google.com> (raw)
In-Reply-To: <aeeec52e-5a13-be39-3b9c-cf25a27b97b1@redhat.com>
On Thu, May 13, 2021 at 08:37:33AM +0200, Auger Eric wrote:
> Hi Ricardo,
>
> On 5/13/21 2:27 AM, Ricardo Koller wrote:
> > Hi,
> >
> > These patches add a debug exception test in aarch64 KVM selftests while
> > also adding basic exception handling support.
> >
> > The structure of the exception handling is based on its x86 counterpart.
> > Tests use the same calls to initialize exception handling and both
> > architectures allow tests to override the handler for a particular
> > vector, or (vector, ec) for synchronous exceptions in the arm64 case.
> >
> > The debug test is similar to x86_64/debug_regs, except that the x86 one
> > controls the debugging from outside the VM. This proposed arm64 test
> > controls and handles debug exceptions from the inside.
> >
> > Thanks,
> > Ricardo
> >
> > v2 -> v3:
> >
> > Addressed comments from Andrew and Marc (thanks again). Also, many thanks for
> > the reviews and tests from Eric and Zenghui.
> You are welcome. This version does not fail anymore on Cavium Sabre so
> this looks to fix the previously reported issue.
>
> Thanks
Great, thanks Eric. The issue was that writing to mdscr needed ISBs
afterward (discovered by Zenghui).
>
> Eric
> > - add missing ISBs after writing into debug registers.
> > - not store/restore of sp_el0 on exceptions.
> > - add default handlers for Error and FIQ.
> > - change multiple TEST_ASSERT(false, ...) to TEST_FAIL.
> > - use Andrew's suggestion regarding __GUEST_ASSERT modifications
> > in order to easier implement GUEST_ASSERT_EQ (Thanks Andrew).
> >
> > v1 -> v2:
> >
> > Addressed comments from Andrew and Marc (thank you very much):
> > - rename vm_handle_exception in all tests.
> > - introduce UCALL_UNHANDLED in x86 first.
> > - move GUEST_ASSERT_EQ to common utils header.
> > - handle sync and other exceptions separately: use two tables (like
> > kvm-unit-tests).
> > - add two separate functions for installing sync versus other exceptions
> > - changes in handlers.S: use the same layout as user_pt_regs, treat the
> > EL1t vectors as invalid, refactor the vector table creation to not use
> > manual numbering, add comments, remove LR from the stored registers.
> > - changes in debug-exceptions.c: remove unused headers, use the common
> > GUEST_ASSERT_EQ, use vcpu_run instead of _vcpu_run.
> > - changes in processor.h: write_sysreg with support for xzr, replace EL1
> > with current in macro names, define ESR_EC_MASK as ESR_EC_NUM-1.
> >
> > Ricardo Koller (5):
> > KVM: selftests: Rename vm_handle_exception
> > KVM: selftests: Introduce UCALL_UNHANDLED for unhandled vector
> > reporting
> > KVM: selftests: Move GUEST_ASSERT_EQ to utils header
> > KVM: selftests: Add exception handling support for aarch64
> > KVM: selftests: Add aarch64/debug-exceptions test
> >
> > tools/testing/selftests/kvm/.gitignore | 1 +
> > tools/testing/selftests/kvm/Makefile | 3 +-
> > .../selftests/kvm/aarch64/debug-exceptions.c | 250 ++++++++++++++++++
> > .../selftests/kvm/include/aarch64/processor.h | 83 +++++-
> > .../testing/selftests/kvm/include/kvm_util.h | 23 +-
> > .../selftests/kvm/include/x86_64/processor.h | 4 +-
> > .../selftests/kvm/lib/aarch64/handlers.S | 124 +++++++++
> > .../selftests/kvm/lib/aarch64/processor.c | 131 +++++++++
> > .../selftests/kvm/lib/x86_64/processor.c | 22 +-
> > .../selftests/kvm/x86_64/kvm_pv_test.c | 2 +-
> > .../selftests/kvm/x86_64/tsc_msrs_test.c | 9 -
> > .../kvm/x86_64/userspace_msr_exit_test.c | 8 +-
> > .../selftests/kvm/x86_64/xapic_ipi_test.c | 2 +-
> > 13 files changed, 615 insertions(+), 47 deletions(-)
> > create mode 100644 tools/testing/selftests/kvm/aarch64/debug-exceptions.c
> > create mode 100644 tools/testing/selftests/kvm/lib/aarch64/handlers.S
> >
>
next prev parent reply other threads:[~2021-05-14 18:31 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-13 0:27 [PATCH v3 0/5] KVM: selftests: arm64 exception handling and debug test Ricardo Koller
2021-05-13 0:27 ` [PATCH v3 1/5] KVM: selftests: Rename vm_handle_exception Ricardo Koller
2021-05-13 0:27 ` [PATCH v3 2/5] KVM: selftests: Introduce UCALL_UNHANDLED for unhandled vector reporting Ricardo Koller
2021-05-13 0:28 ` [PATCH v3 3/5] KVM: selftests: Move GUEST_ASSERT_EQ to utils header Ricardo Koller
2021-05-13 7:35 ` Andrew Jones
2021-05-16 9:50 ` Auger Eric
2021-05-13 0:28 ` [PATCH v3 4/5] KVM: selftests: Add exception handling support for aarch64 Ricardo Koller
2021-05-13 8:05 ` Andrew Jones
2021-05-13 0:28 ` [PATCH v3 5/5] KVM: selftests: Add aarch64/debug-exceptions test Ricardo Koller
2021-05-13 6:37 ` [PATCH v3 0/5] KVM: selftests: arm64 exception handling and debug test Auger Eric
2021-05-14 18:31 ` Ricardo Koller [this message]
2021-06-01 9:34 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YJ7B8TCwvzxJLJH/@google.com \
--to=ricarkol@google.com \
--cc=alexandru.elisei@arm.com \
--cc=drjones@redhat.com \
--cc=eric.auger@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=maz@kernel.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox