Re: [PATCH v13 16/40] KVM: arm64: Manage GCS access and registers for guests
From: Mark Brown
Date: Thu Oct 03 2024 - 10:51:22 EST
On Wed, Oct 02, 2024 at 08:29:28PM +0100, Marc Zyngier wrote:
> Mark Brown <broonie@xxxxxxxxxx> wrote:
> > They are, though really they should UNDEF if GCS isn't there (which I
> > had thought was what you were referencing here). Equally we only have
> > traps for a subset of GCS instructions and it's not like there aren't a
> > whole bunch of untrappable extensions anyway so it's not clear it's
> > worth the effort just for that.
> If the encodings UNDEF when GCS is not implemented (i.e. they are not
> in the NOP space), then all trapable instructions should absolutely
> UNDEF (and yes, it is worth the effort, even if it is only to
> demonstrate that the architecture is sub-par).
Yes, see DDI0487 K.a C5.9. If you're concerned about being unable to
generate UNDEFs there's a rather large set of existing extensions where
that's not possible, most of the hwcaps in the hwcap selftest that don't
set sigill_reliable but do have a SIGILL generator for a start.
> So I expect the next version to handle traps for GCSPUSHX, GCSPOPX,
> GCSPUSHM, GCSSTR and GCSSTTR when GCS isn't enabled.
OK, I already had that change locally after your first message.
> I'm also pretty sure this is missing some form of sanitisation for
> PSTATE.EXLOCK, and looking at the pseudocode, you seem to be missing
> the handling of that bit on exception injection.
Ah, yes - I think I see the missing exception injection handling in
enter_exception64(). I'm not seeing what you're referencing with
sanitisation though, could you give me some more specific pointers
please?
Attachment:
signature.asc
Description: PGP signature