2021-08-27 07:05:20

by Ard Biesheuvel

[permalink] [raw]
Subject: [PATCH v7 0/7] running kernel mode SIMD with softirqs disabled

This is a follow-up to [0], but given that the arm64 architectural
pieces have been merged for arm64, the only remaining changes are crypto
specific. Therefore, the audience has been reduced to those people who
are somewhat more likely to care about these specifics.

The AEAD and skcipher APIs may only be called from task or softirq
context. This permits the arm64 AEAD and skcipher code to get rid of all
scalar fallbacks, given that on this architecture, softirqs are now no
longer served while the SIMD unit is being used in kernel mode, which
means that the scalar fallbacks are never needed. These are removed in
this series.

Changes since v6:
- add patch to yield the NEON every 4k of input when processing the AAD
- add some more acks from Eric

Changes since v5:
- add Eric's R-b to patches #1 to #3
- split CCM changes into 3 separate patches

Changes since v4:
- drop skcipher_walk layer change to deal with zero sized walks
- drop aead/skcipher layer sanity checks on invocations from hardirq
context
- add patch to clean up CCM a bit more after removing the SIMD code path

Changes since v3:
- clarify the nature of the issue addressed by patch #1, and apply the
same fix to the skcipher walker
- update patches #2 and #3 so that the failures can be observed by the
crypto stats code

[0] https://lore.kernel.org/linux-arm-kernel/[email protected]/

Ard Biesheuvel (7):
crypto: arm64/gcm-aes-ce - remove non-SIMD fallback path
crypto: arm64/aes-neonbs - stop using SIMD helper for skciphers
crypto: arm64/aes-ce - stop using SIMD helper for skciphers
crypto: arm64/aes-ccm - yield NEON when processing auth-only data
crypto: arm64/aes-ccm - remove non-SIMD fallback path
crypto: arm64/aes-ccm - reduce NEON begin/end calls for common case
crypto: arm64/aes-ccm - avoid by-ref argument for ce_aes_ccm_auth_data

arch/arm64/crypto/Kconfig | 6 -
arch/arm64/crypto/aes-ce-ccm-core.S | 24 +--
arch/arm64/crypto/aes-ce-ccm-glue.c | 203 ++++++-------------
arch/arm64/crypto/aes-glue.c | 102 ++--------
arch/arm64/crypto/aes-neonbs-glue.c | 122 +-----------
arch/arm64/crypto/ghash-ce-glue.c | 209 +++++---------------
6 files changed, 148 insertions(+), 518 deletions(-)

--
2.30.2


2021-08-29 06:36:35

by Ard Biesheuvel

[permalink] [raw]
Subject: Re: [PATCH v7 0/7] running kernel mode SIMD with softirqs disabled

On Fri, 27 Aug 2021 at 09:03, Ard Biesheuvel <[email protected]> wrote:
>
> This is a follow-up to [0], but given that the arm64 architectural
> pieces have been merged for arm64, the only remaining changes are crypto
> specific. Therefore, the audience has been reduced to those people who
> are somewhat more likely to care about these specifics.
>
> The AEAD and skcipher APIs may only be called from task or softirq
> context. This permits the arm64 AEAD and skcipher code to get rid of all
> scalar fallbacks, given that on this architecture, softirqs are now no
> longer served while the SIMD unit is being used in kernel mode, which
> means that the scalar fallbacks are never needed. These are removed in
> this series.
>
> Changes since v6:
> - add patch to yield the NEON every 4k of input when processing the AAD
> - add some more acks from Eric
>
> Changes since v5:
> - add Eric's R-b to patches #1 to #3
> - split CCM changes into 3 separate patches
>
> Changes since v4:
> - drop skcipher_walk layer change to deal with zero sized walks
> - drop aead/skcipher layer sanity checks on invocations from hardirq
> context
> - add patch to clean up CCM a bit more after removing the SIMD code path
>
> Changes since v3:
> - clarify the nature of the issue addressed by patch #1, and apply the
> same fix to the skcipher walker
> - update patches #2 and #3 so that the failures can be observed by the
> crypto stats code
>
> [0] https://lore.kernel.org/linux-arm-kernel/[email protected]/
>
> Ard Biesheuvel (7):
> crypto: arm64/gcm-aes-ce - remove non-SIMD fallback path
> crypto: arm64/aes-neonbs - stop using SIMD helper for skciphers
> crypto: arm64/aes-ce - stop using SIMD helper for skciphers
> crypto: arm64/aes-ccm - yield NEON when processing auth-only data
> crypto: arm64/aes-ccm - remove non-SIMD fallback path
> crypto: arm64/aes-ccm - reduce NEON begin/end calls for common case
> crypto: arm64/aes-ccm - avoid by-ref argument for ce_aes_ccm_auth_data
>

Herbert,

Any chance we could get this queued for v5.15? If it's too late,
please consider taking only the first three patches as an alternative,
and I will resend the CCM ones for v5.16 once they have all been
reviewed.

Thanks,
Ard.

> arch/arm64/crypto/Kconfig | 6 -
> arch/arm64/crypto/aes-ce-ccm-core.S | 24 +--
> arch/arm64/crypto/aes-ce-ccm-glue.c | 203 ++++++-------------
> arch/arm64/crypto/aes-glue.c | 102 ++--------
> arch/arm64/crypto/aes-neonbs-glue.c | 122 +-----------
> arch/arm64/crypto/ghash-ce-glue.c | 209 +++++---------------
> 6 files changed, 148 insertions(+), 518 deletions(-)
>
> --
> 2.30.2
>

2021-08-30 06:27:18

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH v7 0/7] running kernel mode SIMD with softirqs disabled

On Sun, Aug 29, 2021 at 08:35:37AM +0200, Ard Biesheuvel wrote:
>
> Any chance we could get this queued for v5.15? If it's too late,
> please consider taking only the first three patches as an alternative,
> and I will resend the CCM ones for v5.16 once they have all been
> reviewed.

Sorry, it's too late for that. If these are to serve as dependencies
for other work, perhaps you can just add my acks to them and
submit them to the trees where they are needed?

Cheers,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

2021-08-30 13:49:48

by Ard Biesheuvel

[permalink] [raw]
Subject: Re: [PATCH v7 0/7] running kernel mode SIMD with softirqs disabled

On Mon, 30 Aug 2021 at 08:26, Herbert Xu <[email protected]> wrote:
>
> On Sun, Aug 29, 2021 at 08:35:37AM +0200, Ard Biesheuvel wrote:
> >
> > Any chance we could get this queued for v5.15? If it's too late,
> > please consider taking only the first three patches as an alternative,
> > and I will resend the CCM ones for v5.16 once they have all been
> > reviewed.
>
> Sorry, it's too late for that. If these are to serve as dependencies
> for other work, perhaps you can just add my acks to them and
> submit them to the trees where they are needed?
>

Fair enough. It would be nice to get rid of the crypto_simd dependency
at least for the aes-ce driver, but I might propose it as a backport
once it hits mainline.

Thanks,
Ard.

2021-09-17 12:07:46

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH v7 0/7] running kernel mode SIMD with softirqs disabled

On Fri, Aug 27, 2021 at 09:03:35AM +0200, Ard Biesheuvel wrote:
> This is a follow-up to [0], but given that the arm64 architectural
> pieces have been merged for arm64, the only remaining changes are crypto
> specific. Therefore, the audience has been reduced to those people who
> are somewhat more likely to care about these specifics.
>
> The AEAD and skcipher APIs may only be called from task or softirq
> context. This permits the arm64 AEAD and skcipher code to get rid of all
> scalar fallbacks, given that on this architecture, softirqs are now no
> longer served while the SIMD unit is being used in kernel mode, which
> means that the scalar fallbacks are never needed. These are removed in
> this series.
>
> Changes since v6:
> - add patch to yield the NEON every 4k of input when processing the AAD
> - add some more acks from Eric
>
> Changes since v5:
> - add Eric's R-b to patches #1 to #3
> - split CCM changes into 3 separate patches
>
> Changes since v4:
> - drop skcipher_walk layer change to deal with zero sized walks
> - drop aead/skcipher layer sanity checks on invocations from hardirq
> context
> - add patch to clean up CCM a bit more after removing the SIMD code path
>
> Changes since v3:
> - clarify the nature of the issue addressed by patch #1, and apply the
> same fix to the skcipher walker
> - update patches #2 and #3 so that the failures can be observed by the
> crypto stats code
>
> [0] https://lore.kernel.org/linux-arm-kernel/[email protected]/
>
> Ard Biesheuvel (7):
> crypto: arm64/gcm-aes-ce - remove non-SIMD fallback path
> crypto: arm64/aes-neonbs - stop using SIMD helper for skciphers
> crypto: arm64/aes-ce - stop using SIMD helper for skciphers
> crypto: arm64/aes-ccm - yield NEON when processing auth-only data
> crypto: arm64/aes-ccm - remove non-SIMD fallback path
> crypto: arm64/aes-ccm - reduce NEON begin/end calls for common case
> crypto: arm64/aes-ccm - avoid by-ref argument for ce_aes_ccm_auth_data
>
> arch/arm64/crypto/Kconfig | 6 -
> arch/arm64/crypto/aes-ce-ccm-core.S | 24 +--
> arch/arm64/crypto/aes-ce-ccm-glue.c | 203 ++++++-------------
> arch/arm64/crypto/aes-glue.c | 102 ++--------
> arch/arm64/crypto/aes-neonbs-glue.c | 122 +-----------
> arch/arm64/crypto/ghash-ce-glue.c | 209 +++++---------------
> 6 files changed, 148 insertions(+), 518 deletions(-)

All applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt