Thread (429 messages) 429 messages, 18 authors, 2020-05-15

Re: [PATCH v7 09/11] arm64: disable SCS for hypervisor code

From: Will Deacon <will@kernel.org>
Date: 2020-02-11 09:54:11
Also in: lkml

On Mon, Feb 10, 2020 at 06:24:32PM +0000, Mark Rutland wrote:
On Mon, Feb 10, 2020 at 06:07:41PM +0000, Will Deacon wrote:
quoted
On Mon, Feb 10, 2020 at 06:03:28PM +0000, Mark Rutland wrote:
quoted
On Mon, Feb 10, 2020 at 05:52:15PM +0000, Will Deacon wrote:
quoted
On Mon, Feb 10, 2020 at 05:18:58PM +0000, James Morse wrote:
quoted
On 28/01/2020 18:49, Sami Tolvanen wrote:
quoted
Filter out CC_FLAGS_SCS and -ffixed-x18 for code that runs at a
different exception level.
Hmmm, there are two things being disabled here.

Stashing the lr in memory pointed to by VA won't work transparently at EL2 ... but
shouldn't KVM's C code still treat x18 as a fixed register?
My review of v6 suggested dropping the -ffixed-x18 as well, since it's only
introduced by SCS (in patch 5) and so isn't required by anything else. Why
do you think it's needed?
When EL1 code calls up to hyp, it expects x18 to be preserved across the
call, so hyp needs to either preserve it explicitly across a transitions
from/to EL1 or always preserve it.
I thought we explicitly saved/restored it across the call after
af12376814a5 ("arm64: kvm: stop treating register x18 as caller save"). Is
that not sufficient?
That covers the hyp->guest->hyp round trip, but not the host->hyp->host
portion surrounding that.
Thanks, I missed that. It's annoying that we'll end up needing /both/
-ffixed-x18 *and* the save/restore around guest transitions, but if we
actually want to use SCS for the VHE code then I see that it will be
required.

Sami -- can you restore -ffixed-x18 and then try the function attribute
as suggested by James, please?

Will

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help