On 8 June 2018 at 11:53, Dmitry Vyukov <[email protected]> wrote: > keccakf() is the only function in kernel that uses __optimize() macro. > __optimize() breaks frame pointer unwinder as optimized code uses RBP, > and amusingly this always lead to degraded performance as gcc does not > inline across different optimizations levels, so keccakf() wasn't inlined > into its callers and keccakf_round() wasn't inlined into keccakf(). > > Drop __optimize() to resolve both problems. > > Signed-off-by: Dmitry Vyukov <[email protected]> > Fixes: 83dee2ce1ae7 ("crypto: sha3-generic - rewrite KECCAK transform to help > the compiler optimize") > Reported-by: [email protected] > Reported-by: [email protected] > Cc: [email protected] > Cc: "David S. Miller" <[email protected]> > Cc: Herbert Xu <[email protected]> > Cc: Ard Biesheuvel <[email protected]>
Acked-by: Ard Biesheuvel <[email protected]> > --- > crypto/sha3_generic.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/crypto/sha3_generic.c b/crypto/sha3_generic.c > index 264ec12c0b9c..7f6735d9003f 100644 > --- a/crypto/sha3_generic.c > +++ b/crypto/sha3_generic.c > @@ -152,7 +152,7 @@ static SHA3_INLINE void keccakf_round(u64 st[25]) > st[24] ^= bc[ 4]; > } > > -static void __optimize("O3") keccakf(u64 st[25]) > +static void keccakf(u64 st[25]) > { > int round; > > -- > 2.18.0.rc1.242.g61856ae69a-goog >
