linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Fuad Tabba <tabba@google.com>
Cc: Oliver Upton <oliver.upton@linux.dev>,
	kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	will@kernel.org, qperret@google.com, seanjc@google.com,
	alexandru.elisei@arm.com, catalin.marinas@arm.com,
	philmd@linaro.org, james.morse@arm.com, suzuki.poulose@arm.com,
	mark.rutland@arm.com, broonie@kernel.org, joey.gouly@arm.com,
	rananta@google.com, yuzenghui@huawei.com
Subject: Re: [PATCH v1 6/7] KVM: arm64: Eagerly restore host fpsimd/sve state in pKVM
Date: Mon, 20 May 2024 09:05:34 +0100	[thread overview]
Message-ID: <87r0dw3o35.wl-maz@kernel.org> (raw)
In-Reply-To: <CA+EHjTzFkNiPzH47Y52cEPd+LzNSAmGHD45C0o8p2ejB6LKHKQ@mail.gmail.com>

On Mon, 20 May 2024 08:37:22 +0100,
Fuad Tabba <tabba@google.com> wrote:
> 
> Hi Oliver,
> 
> On Fri, May 17, 2024 at 6:09 PM Oliver Upton <oliver.upton@linux.dev> wrote:
> >
> > Hi Fuad,
> >
> > On Fri, May 17, 2024 at 02:18:13PM +0100, Fuad Tabba wrote:
> > >  static void kvm_hyp_save_fpsimd_host(struct kvm_vcpu *vcpu)
> > >  {
> > > -     __fpsimd_save_state(*host_data_ptr(fpsimd_state));
> > > +     /*
> > > +      * Non-protected kvm relies on the host restoring its sve state.
> > > +      * Protected kvm restores the host's sve state as not to reveal that
> > > +      * fpsimd was used by a guest nor leak upper sve bits.
> > > +      */
> > > +     if (unlikely(is_protected_kvm_enabled() && system_supports_sve())) {
> > > +             __hyp_sve_save_host();
> > > +
> > > +             /* Re-enable SVE traps for guests that do not support it. */
> > > +             if (!vcpu_has_sve(vcpu))
> > > +                     sysreg_clear_set(cptr_el2, 0, CPTR_EL2_TZ);
> >
> > This doesn't account for hVHE. I wonder we'd be better off abstracting
> > CPTR_EL2 behind a helper wherever it gets used in nVHE and translate
> > into the VHE-format behind the scenes:
> 
> Right! Too many modes to keep track of :)
> 
> Abstracting cptr_el2 would make things clearer and less error-prone.
> I'll do that on the respin.

If we're going with the conversion game, then I'd suggest you use the
VHE format as the reference, and convert it to nVHE on the flight.
That's for a few reasons:

- like it or not, nVHE is going the way of the dodo. I love my v8.0
  hardware to bits, but it sucks, and nVHE is now optional anyway.

- Keeping everything in the VHE format helps drawing a parallel with
  what is happening in the kernel (you grep for the same symbols).

- One day, I hope to be able to rip any form of SVE/SME support out of
  nVHE and only keep it for hVHE, because there is no ARMv8.0
  implementations with these extensions (apart from SW models).  One
  day...

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2024-05-20  8:05 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-17 13:18 [PATCH v1 0/7] KVM: arm64: Fix handling of host fpsimd/sve state in protected mode Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 1/7] KVM: arm64: Reintroduce __sve_save_state Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 2/7] KVM: arm64: Specialize deactivate fpsimd/sve traps on guest trap Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 3/7] KVM: arm64: Specialize handling of host fpsimd state on trap Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 4/7] KVM: arm64: Store the maximum sve vector length at hyp Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 5/7] KVM: arm64: Allocate memory at hyp for host sve state in pKVM Fuad Tabba
2024-05-17 13:18 ` [PATCH v1 6/7] KVM: arm64: Eagerly restore host fpsimd/sve " Fuad Tabba
2024-05-17 17:09   ` Oliver Upton
2024-05-20  7:37     ` Fuad Tabba
2024-05-20  8:05       ` Marc Zyngier [this message]
2024-05-20  8:53         ` Fuad Tabba
2024-05-20 17:08         ` Oliver Upton
2024-05-17 13:18 ` [PATCH v1 7/7] KVM: arm64: Consolidate initializing the host data's fpsimd_state/sve " Fuad Tabba
2024-05-17 17:30 ` [PATCH v1 0/7] KVM: arm64: Fix handling of host fpsimd/sve state in protected mode Oliver Upton
2024-05-17 18:19   ` Mark Brown
2024-05-20  7:35     ` Fuad Tabba
2024-05-20  8:11       ` Marc Zyngier
2024-05-20 17:37         ` Oliver Upton
2024-05-20 17:53           ` Mark Brown
2024-05-20 17:59             ` Fuad Tabba
2024-05-20 17:57           ` Fuad Tabba
2024-05-20 20:53             ` Oliver Upton
2024-05-21 12:27               ` Fuad Tabba

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=87r0dw3o35.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=alexandru.elisei@arm.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=joey.gouly@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=oliver.upton@linux.dev \
    --cc=philmd@linaro.org \
    --cc=qperret@google.com \
    --cc=rananta@google.com \
    --cc=seanjc@google.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.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;
as well as URLs for NNTP newsgroup(s).