From: Ricardo Koller <ricarkol@google.com>
To: Marc Zyngier <maz@kernel.org>
Cc: kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu,
pbonzini@redhat.com, drjones@redhat.com,
alexandru.elisei@arm.com, eric.auger@redhat.com
Subject: Re: [PATCH 1/3] KVM: selftests: Add exception handling support for aarch64
Date: Thu, 29 Apr 2021 13:48:42 -0700 [thread overview]
Message-ID: <YIsbqhQ/OOzluxtq@google.com> (raw)
In-Reply-To: <87fsz8vp4d.wl-maz@kernel.org>
On Thu, Apr 29, 2021 at 08:59:14PM +0100, Marc Zyngier wrote:
> AOn Thu, 29 Apr 2021 18:51:59 +0100,
> Ricardo Koller <ricarkol@google.com> wrote:
> >
> > On Fri, Apr 23, 2021 at 09:58:24AM +0100, Marc Zyngier wrote:
> > > Hi Ricardo,
> > >
> > > Thanks for starting this.
> > >
> > > On Fri, 23 Apr 2021 05:03:49 +0100,
> > > Ricardo Koller <ricarkol@google.com> wrote:
> > > > +.pushsection ".entry.text", "ax"
> > > > +.balign 0x800
> > > > +.global vectors
> > > > +vectors:
> > > > +.popsection
> > > > +
> > > > +/*
> > > > + * Build an exception handler for vector and append a jump to it into
> > > > + * vectors (while making sure that it's 0x80 aligned).
> > > > + */
> > > > +.macro HANDLER, el, label, vector
> > > > +handler\()\vector:
> > > > + save_registers \el
> > > > + mov x0, sp
> > > > + mov x1, \vector
> > > > + bl route_exception
> > > > + restore_registers \el
> > > > +
> > > > +.pushsection ".entry.text", "ax"
> > > > +.balign 0x80
> > > > + b handler\()\vector
> > > > +.popsection
> > > > +.endm
> > >
> > > That's an interesting construct, wildly different from what we are
> > > using elsewhere in the kernel, but hey, I like change ;-). It'd be
> > > good to add a comment to spell out that anything that emits into
> > > .entry.text between the declaration of 'vectors' and the end of this
> > > file will break everything.
> > >
> > > > +
> > > > +.global ex_handler_code
> > > > +ex_handler_code:
> > > > + HANDLER 1, sync, 0 // Synchronous EL1t
> > > > + HANDLER 1, irq, 1 // IRQ EL1t
> > > > + HANDLER 1, fiq, 2 // FIQ EL1t
> > > > + HANDLER 1, error, 3 // Error EL1t
> > >
> > > Can any of these actually happen? As far as I can see, the whole
> > > selftest environment seems to be designed around EL1h.
> > >
> >
> > They can happen. KVM defaults to use EL1h:
>
> That's not a KVM decision. That's an architectural requirement. Reset
> is an exception, exception use the handler mode.
>
That makes sense, thanks for the clarification.
> >
> > #define VCPU_RESET_PSTATE_EL1 (PSR_MODE_EL1h | PSR_A_BIT | PSR_I_BIT | \
> >
> > but then a guest can set the SPSel to 0:
> >
> > asm volatile("msr spsel, #0");
> >
> > and this happens:
> >
> > Unexpected exception guest (vector:0x0, ec:0x25)
> >
> > I think it should still be a valid situation: some test might want to
> > try it.
>
> Sure, but that's not what this test (in patch #2) is doing, is it?
> If, as I believe, this is an unexpected situation, why not handle it
> separately? I'm not advocating one way or another, but it'd be good to
> understand the actual scope of the exception handling in this
> infrastructure.
>
> If you plan to allow tests to run in the EL1t environment, where do
> you decide to switch back to EL1t after taking the exception in EL1h?
> Are the tests supposed to implement both stack layouts?
>
> Overall, I'm worried that nobody is going to use this layout *unless*
> it becomes mandated.
>
> Thanks,
>
> M.
>
> --
> Without deviation from the norm, progress is not possible.
Got it, I see your point. Yes, I'm definitely not planning to use it.
Will just treat those vectors as "invalid".
Thanks again,
Ricardo
next prev parent reply other threads:[~2021-04-29 20:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-23 4:03 [PATCH 0/3] KVM: selftests: arm64 exception handling and debug test Ricardo Koller
2021-04-23 4:03 ` [PATCH 1/3] KVM: selftests: Add exception handling support for aarch64 Ricardo Koller
2021-04-23 8:58 ` Marc Zyngier
2021-04-23 11:05 ` Andrew Jones
2021-04-26 18:58 ` Ricardo Koller
2021-04-29 17:51 ` Ricardo Koller
2021-04-29 19:59 ` Marc Zyngier
2021-04-29 20:48 ` Ricardo Koller [this message]
2021-04-23 4:03 ` [PATCH 2/3] KVM: selftests: Add aarch64/debug-exceptions test Ricardo Koller
2021-04-23 11:22 ` Andrew Jones
2021-04-23 4:03 ` [PATCH 3/3] KVM: selftests: Use a ucall for x86 unhandled vector reporting Ricardo Koller
2021-04-23 10:45 ` Andrew Jones
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=YIsbqhQ/OOzluxtq@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