lkml.org 
[lkml]   [2020]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v7 09/11] arm64: disable SCS for hypervisor code
    On 2020-02-10 18:07, Will Deacon wrote:
    > On Mon, Feb 10, 2020 at 06:03:28PM +0000, Mark Rutland wrote:
    >> On Mon, Feb 10, 2020 at 05:52:15PM +0000, Will Deacon wrote:
    >> > On Mon, Feb 10, 2020 at 05:18:58PM +0000, James Morse wrote:
    >> > > On 28/01/2020 18:49, Sami Tolvanen wrote:
    >> > > > 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?
    >
    >> The latter is easiest since any code used by VHE hyp code will need
    >> x18
    >> saved anyway (ans so any common hyp code needs to).
    >
    > I would personally prefer to split the VHE and non-VHE code so they can
    > be
    > compiled with separate options.

    This is going to generate a lot of code duplication (or at least object
    duplication),
    as the two code paths are intricately linked and splitting them to
    support different
    compilation options and/or calling conventions.

    I'm not fundamentally opposed to that, but it should come with ways to
    still
    manage it as a unified code base as much as possible, as ways to discard
    the
    unused part at runtime (which should become easy to do once we have two
    distinct sets of objects).

    M.
    --
    Jazz is not dead. It just smells funny...

    \
     
     \ /
      Last update: 2020-02-11 10:15    [W:2.669 / U:0.300 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site