From: Catalin Marinas <catalin.marinas@arm.com>
To: Dave Martin <Dave.Martin@arm.com>
Cc: Anton.Kirilov@arm.com, will.deacon@arm.com, oleg@redhat.com,
zhang.lei@jp.fujitsu.com, Julien Grall <julien.grall@arm.com>,
alex.bennee@linaro.org, linux-arm-kernel@lists.infradead.org,
Daniel.Kiss@arm.com
Subject: Re: [RFC PATCH v2 7/8] arm64/sve: Don't disable SVE on syscalls return
Date: Thu, 4 Jul 2019 15:15:59 +0100 [thread overview]
Message-ID: <20190704141559.GA51773@arrakis.emea.arm.com> (raw)
In-Reply-To: <20190621153316.GC2790@e103592.cambridge.arm.com>
On Fri, Jun 21, 2019 at 04:33:16PM +0100, Dave P Martin wrote:
> On Thu, Jun 13, 2019 at 05:16:55PM +0100, Julien Grall wrote:
> > Per the syscalls ABI, SVE registers will be unknown after a syscalls. In
>
> This patch is quite hard to understand, though this is more down to the
> code being modified than the patch itself. So, I may ask some stupid
> questions...
>
> In particular, we now have up to 8 task states (all the combinations of
> TIF_FOREIGN_FPSTATE, TIF_SVE and TIF_SVE_NEEDS_FLUSH). Sketching out
> the state machine and highlighting any states that we consider invalid
> may be a useful exercise, but I've not attempted that yes.
We definitely need a state machine sketched out (and a formal model as I
can't really get all of it in my head at once). I don't fully understand
the need for a new TIF_SVE_NEEDS_FLUSH. Maybe it becomes obvious if we
had a state machine description.
So, we currently have (IIUC):
TIF_SVE - tells us whether the user space can access SVE registers
without a fault (doesn't CPACR_EL1 tell us this already on kernel entry?
I guess we'd need to store it in a TIF flag anyway for switch_to). The
implications of TIF_SVE on kernel entry is that the SVE state could have
been touched by the user. If entering via syscall, we discard this state
in sve_user_discard().
TIF_FOREIGN_FPSTATE - tells us whether the hardware state is out of sync
with the current thread.
For flushing the SVE state on return from syscall, can we not handle
this entirely in el0_svc_handler while enabling the SVE access at the
same time to avoid a subsequent trap? We need to know whether the SVE
state is valid when we do the context switching but we have TIF_SVE for
this, cleared on syscall entry but can be set again on return from
syscall if we enable access in CPACR_EL1 (sve_user_enable()).
It probably needs some more thinking on signal handling.
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-07-04 14:16 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-13 16:16 [RFC PATCH v2 0/8] arm64/sve: First steps towards optimizing syscalls Julien Grall
2019-06-13 16:16 ` [RFC PATCH v2 1/8] arm64/fpsimd: Update documentation of do_sve_acc Julien Grall
2019-06-13 16:19 ` Julien Grall
2019-06-21 15:32 ` Dave Martin
2019-06-13 16:16 ` [RFC PATCH v2 2/8] arm64/signal: Update the comment in preserve_sve_context Julien Grall
2019-06-21 15:32 ` Dave Martin
2019-06-13 16:16 ` [RFC PATCH v2 3/8] arm64/fpsimdmacros: Allow the macro "for" to be used in more cases Julien Grall
2019-06-21 15:32 ` Dave Martin
2019-06-24 16:10 ` Julien Grall
2019-06-25 9:35 ` Dave Martin
2019-06-13 16:16 ` [RFC PATCH v2 4/8] arm64/fpsimdmacros: Introduce a macro to update ZCR_EL1.LEN Julien Grall
2019-06-21 15:32 ` Dave Martin
2019-06-13 16:16 ` [RFC PATCH v2 5/8] arm64/sve: Implement an helper to flush SVE registers Julien Grall
2019-06-21 15:33 ` Dave Martin
2019-06-24 16:28 ` Julien Grall
2019-06-25 9:37 ` Dave Martin
2019-06-13 16:16 ` [RFC PATCH v2 6/8] arm64/sve: Implement an helper to load SVE registers from FPSIMD state Julien Grall
2019-06-21 15:33 ` Dave Martin
2019-06-24 16:29 ` Julien Grall
2019-06-13 16:16 ` [RFC PATCH v2 7/8] arm64/sve: Don't disable SVE on syscalls return Julien Grall
2019-06-21 15:33 ` Dave Martin
2019-06-24 16:44 ` Julien Grall
2019-06-25 9:41 ` Dave Martin
2019-07-04 14:15 ` Catalin Marinas [this message]
2019-08-02 11:06 ` Julien Grall
2019-06-13 16:16 ` [RFC PATCH v2 8/8] arm64/sve: Rework SVE trap access to use TIF_SVE_NEEDS_FLUSH Julien Grall
2019-06-21 15:33 ` Dave Martin
2019-06-21 15:32 ` [RFC PATCH v2 0/8] arm64/sve: First steps towards optimizing syscalls Dave Martin
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=20190704141559.GA51773@arrakis.emea.arm.com \
--to=catalin.marinas@arm.com \
--cc=Anton.Kirilov@arm.com \
--cc=Daniel.Kiss@arm.com \
--cc=Dave.Martin@arm.com \
--cc=alex.bennee@linaro.org \
--cc=julien.grall@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=oleg@redhat.com \
--cc=will.deacon@arm.com \
--cc=zhang.lei@jp.fujitsu.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