[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] target/arm: Add cpu property to control pauth
From: |
Andrew Jones |
Subject: |
Re: [PATCH 1/2] target/arm: Add cpu property to control pauth |
Date: |
Wed, 12 Aug 2020 18:31:07 +0200 |
On Wed, Aug 12, 2020 at 08:10:47AM -0700, Richard Henderson wrote:
> On 8/12/20 4:00 AM, Andrew Jones wrote:
> > On Tue, Aug 11, 2020 at 11:53:38PM -0700, Richard Henderson wrote:
> >> The crypto overhead of emulating pauth can be significant for
> >> some workloads. Add an enumeration property that allows the
> >> feature to be turned off, on with the architected algorithm,
> >> or on with an implementation defined algorithm.
> >>
> >> The architected algorithm is quite expensive to emulate;
> >> using another algorithm may allow hardware acceleration.
> >>
> >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> >> ---
> >> target/arm/cpu64.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++
> >> 1 file changed, 64 insertions(+)
> >>
> >> diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
> >> index dd696183df..3181d0e2f8 100644
> >> --- a/target/arm/cpu64.c
> >> +++ b/target/arm/cpu64.c
> >> @@ -572,6 +572,69 @@ void aarch64_add_sve_properties(Object *obj)
> >> }
> >> }
> >>
> >> +static const char * const pauth_names[] = {
> >> + "off", "impdef", "arch"
> >> +};
> >
> > Hi Richard,
> >
> > Please add three boolean properties, rather than one enum:
> >
> > pauth: enable support of the pauth feature
> > pauth-fast: enable QEMU's fast non-cryptographic hash for pauth
> > (pauth must be enabled)
> > pauth-arch: enable the architected algorithm for pauth
> > (pauth must be enabled)
> >
> > These booleans can then be added to the cpu feature probing list used by
> > qmp_query_cpu_model_expansion()
>
> Why are 3 booleans better than one enum?
>
> I'd forgotten about qmp_query_cpu_model_expansion(); can it not take anything
> but booleans?
Right. The probing works by getting a list of possible CPU features, which
are all boolean properties. That way the prober can try enabling/disabling
them without having to know about each property's set of valid values. We
could implement each as an enum and a second level of probing, but that
would complicate the probing, and I'm not sure enums gain us much over
multiple properties.
In this case, since pauth-fast and pauth-arch are mutually exclusive and
we want a pauth=on/off too, then we'll need a finalize function like SVE
has in order to support the following selections:
# Default (pauth-arch), explicitly selected or not
-cpu max[,pauth=on]
-cpu max[,pauth=on][,pauth-fast=off],pauth-arch=on
# Select pauth-fast
-cpu max[,pauth=on][,pauth-arch=off],pauth-fast=on
# Disable
-cpu max,pauth=off
-cpu max[,pauth=off],pauth-arch=off,pauth-fast=off
# Mutual exclusion errors
-cpu max,pauth=off,pauth-{arch,fast}=on
-cpu max,pauth=on,pauth-arch=off,pauth-fast=off
-cpu max[,pauth=on],pauth-arch=on,pauth-fast=on
# Errors because we don't want to guess what the user means
-cpu max[,pauth=on],pauth-arch=off
-cpu max[,pauth=on],pauth-fast=off
Thanks,
drew
- [PATCH 0/2] target/arm: Implement an IMPDEF pauth algorithm, Richard Henderson, 2020/08/12
- [PATCH 1/2] target/arm: Add cpu property to control pauth, Richard Henderson, 2020/08/12
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Andrew Jones, 2020/08/12
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Richard Henderson, 2020/08/12
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth,
Andrew Jones <=
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Andrew Jones, 2020/08/13
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Mark Rutland, 2020/08/13
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Andrew Jones, 2020/08/13
- Re: [PATCH 1/2] target/arm: Add cpu property to control pauth, Mark Rutland, 2020/08/13
[PATCH 2/2] target/arm: Implement an IMPDEF pauth algorithm, Richard Henderson, 2020/08/12