From: Marc Zyngier <maz@kernel.org> To: Ricardo Koller <ricarkol@google.com> 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 v2 4/5] KVM: selftests: Add exception handling support for aarch64 Date: Fri, 07 May 2021 15:31:56 +0100 [thread overview] Message-ID: <877dkapqcj.wl-maz@kernel.org> (raw) In-Reply-To: <YJBLFVoRmsehRJ1N@google.com> On Mon, 03 May 2021 20:12:21 +0100, Ricardo Koller <ricarkol@google.com> wrote: > > On Mon, May 03, 2021 at 11:32:39AM +0100, Marc Zyngier wrote: > > On Sat, 01 May 2021 00:24:06 +0100, > > Ricardo Koller <ricarkol@google.com> wrote: [...] > > > + .if \vector >= 8 > > > + mrs x1, sp_el0 > > > > I'm still a bit perplexed by this. SP_EL0 is never changed, since you > > always run in handler mode. Therefore, saving/restoring it is only > > overhead. If an exception handler wants to introspect it, it is > > already available in the relevant system register. > > > > Or did you have something else in mind for it? > > > > Not really. The reason for saving sp_el0 in there was just for > consistency, so that handlers for both el0 and el1 exceptions could > get the sp at regs->sp. We already have sp_el0 consistency by virtue of having it stored in in a sysreg. > Restoring sp_el0 might be too much. So, what do you think of this > v3: we keep the saving of sp_el0 into regs->sp (to keep things the > same between el0 and el1) and delete the restoring of sp_el0? To me, the whole purpose of saving some some context is to allow the exception handling code to run C code and introspect the interrupted state. But saving things that are not affected by the context change seems a bit pointless. One thing I'd like to see though is to save sp_el1 as it was at the point of the exception (because that is meaningful to get the exception context -- think of an unaligned EL1 stack for example), which means correcting the value that gets saved. So I would suggest to *only* save sp_el1, to always save it (irrespective of the exception coming from EL0 or EL1), and to save a retro-corrected value so that the handler can directly know where the previous stack pointer was. Thanks, M. -- Without deviation from the norm, progress is not possible.
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org> To: Ricardo Koller <ricarkol@google.com> Cc: kvm@vger.kernel.org, pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu Subject: Re: [PATCH v2 4/5] KVM: selftests: Add exception handling support for aarch64 Date: Fri, 07 May 2021 15:31:56 +0100 [thread overview] Message-ID: <877dkapqcj.wl-maz@kernel.org> (raw) In-Reply-To: <YJBLFVoRmsehRJ1N@google.com> On Mon, 03 May 2021 20:12:21 +0100, Ricardo Koller <ricarkol@google.com> wrote: > > On Mon, May 03, 2021 at 11:32:39AM +0100, Marc Zyngier wrote: > > On Sat, 01 May 2021 00:24:06 +0100, > > Ricardo Koller <ricarkol@google.com> wrote: [...] > > > + .if \vector >= 8 > > > + mrs x1, sp_el0 > > > > I'm still a bit perplexed by this. SP_EL0 is never changed, since you > > always run in handler mode. Therefore, saving/restoring it is only > > overhead. If an exception handler wants to introspect it, it is > > already available in the relevant system register. > > > > Or did you have something else in mind for it? > > > > Not really. The reason for saving sp_el0 in there was just for > consistency, so that handlers for both el0 and el1 exceptions could > get the sp at regs->sp. We already have sp_el0 consistency by virtue of having it stored in in a sysreg. > Restoring sp_el0 might be too much. So, what do you think of this > v3: we keep the saving of sp_el0 into regs->sp (to keep things the > same between el0 and el1) and delete the restoring of sp_el0? To me, the whole purpose of saving some some context is to allow the exception handling code to run C code and introspect the interrupted state. But saving things that are not affected by the context change seems a bit pointless. One thing I'd like to see though is to save sp_el1 as it was at the point of the exception (because that is meaningful to get the exception context -- think of an unaligned EL1 stack for example), which means correcting the value that gets saved. So I would suggest to *only* save sp_el1, to always save it (irrespective of the exception coming from EL0 or EL1), and to save a retro-corrected value so that the handler can directly know where the previous stack pointer was. Thanks, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
next prev parent reply other threads:[~2021-05-07 14:32 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-30 23:24 [PATCH v2 0/5] KVM: selftests: arm64 exception handling and debug test Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-04-30 23:24 ` [PATCH v2 1/5] KVM: selftests: Rename vm_handle_exception Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-05-03 11:02 ` Andrew Jones 2021-05-03 11:02 ` Andrew Jones 2021-05-06 12:27 ` Auger Eric 2021-05-06 12:27 ` Auger Eric 2021-04-30 23:24 ` [PATCH v2 2/5] KVM: selftests: Introduce UCALL_UNHANDLED for unhandled vector reporting Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-05-03 11:09 ` Andrew Jones 2021-05-03 11:09 ` Andrew Jones 2021-05-06 12:27 ` Auger Eric 2021-05-06 12:27 ` Auger Eric 2021-04-30 23:24 ` [PATCH v2 3/5] KVM: selftests: Move GUEST_ASSERT_EQ to utils header Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-05-03 11:31 ` Andrew Jones 2021-05-03 11:31 ` Andrew Jones 2021-04-30 23:24 ` [PATCH v2 4/5] KVM: selftests: Add exception handling support for aarch64 Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-05-03 10:32 ` Marc Zyngier 2021-05-03 10:32 ` Marc Zyngier 2021-05-03 19:12 ` Ricardo Koller 2021-05-03 19:12 ` Ricardo Koller 2021-05-06 12:30 ` Auger Eric 2021-05-06 12:30 ` Auger Eric 2021-05-06 19:14 ` Ricardo Koller 2021-05-06 19:14 ` Ricardo Koller 2021-05-07 14:08 ` Auger Eric 2021-05-07 14:08 ` Auger Eric 2021-05-07 17:54 ` Ricardo Koller 2021-05-07 17:54 ` Ricardo Koller 2021-05-12 7:27 ` Ricardo Koller 2021-05-12 7:27 ` Ricardo Koller 2021-05-12 8:19 ` Auger Eric 2021-05-12 8:19 ` Auger Eric 2021-05-12 8:33 ` Marc Zyngier 2021-05-12 8:33 ` Marc Zyngier 2021-05-12 8:52 ` Auger Eric 2021-05-12 8:52 ` Auger Eric 2021-05-12 16:06 ` Ricardo Koller 2021-05-12 16:06 ` Ricardo Koller 2021-05-12 12:59 ` Zenghui Yu 2021-05-12 12:59 ` Zenghui Yu 2021-05-12 13:43 ` Marc Zyngier 2021-05-12 13:43 ` Marc Zyngier 2021-05-12 16:03 ` Ricardo Koller 2021-05-12 16:03 ` Ricardo Koller 2021-05-12 16:18 ` Marc Zyngier 2021-05-12 16:18 ` Marc Zyngier 2021-05-12 21:39 ` Ricardo Koller 2021-05-12 21:39 ` Ricardo Koller 2021-05-07 14:31 ` Marc Zyngier [this message] 2021-05-07 14:31 ` Marc Zyngier 2021-05-07 18:02 ` Ricardo Koller 2021-05-07 18:02 ` Ricardo Koller 2021-05-03 12:39 ` Andrew Jones 2021-05-03 12:39 ` Andrew Jones 2021-04-30 23:24 ` [PATCH v2 5/5] KVM: selftests: Add aarch64/debug-exceptions test Ricardo Koller 2021-04-30 23:24 ` Ricardo Koller 2021-05-03 12:49 ` Andrew Jones 2021-05-03 12:49 ` Andrew Jones 2021-05-24 12:14 ` [PATCH v2 0/5] KVM: selftests: arm64 exception handling and debug test Paolo Bonzini 2021-05-24 12:14 ` Paolo Bonzini 2021-05-24 12:59 ` Marc Zyngier 2021-05-24 12:59 ` 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=877dkapqcj.wl-maz@kernel.org \ --to=maz@kernel.org \ --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=pbonzini@redhat.com \ --cc=ricarkol@google.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.