mbox series

[v3,00/37] crypto: Provide aes-round.h and host accel

Message ID 20230620110758.787479-1-richard.henderson@linaro.org
Headers show
Series crypto: Provide aes-round.h and host accel | expand

Message

Richard Henderson June 20, 2023, 11:07 a.m. UTC
Inspired by Ard Biesheuvel's RFC patches for accelerating AES
under emulation, provide a set of primitives that maps between
the guest and host fragments.

Changes for v3:
  * Move host/include/*/{,crypto/}aes-round.h.
  * Add some r-b.

Patches missing r-b:
  02-tests-multiarch-Add-test-aes.patch
  05-crypto-Add-aesenc_SB_SR_AK.patch
  08-target-arm-Use-aesenc_SB_SR_AK.patch
  10-target-riscv-Use-aesenc_SB_SR_AK.patch
  11-crypto-Add-aesdec_ISB_ISR_AK.patch
  13-target-arm-Use-aesdec_ISB_ISR_AK.patch
  15-target-riscv-Use-aesdec_ISB_ISR_AK.patch
  16-crypto-Add-aesenc_MC.patch
  17-target-arm-Use-aesenc_MC.patch
  18-crypto-Add-aesdec_IMC.patch
  19-target-i386-Use-aesdec_IMC.patch
  20-target-arm-Use-aesdec_IMC.patch
  21-target-riscv-Use-aesdec_IMC.patch
  22-crypto-Add-aesenc_SB_SR_MC_AK.patch
  23-target-i386-Use-aesenc_SB_SR_MC_AK.patch
  25-target-riscv-Use-aesenc_SB_SR_MC_AK.patch
  26-crypto-Add-aesdec_ISB_ISR_IMC_AK.patch
  27-target-i386-Use-aesdec_ISB_ISR_IMC_AK.patch
  28-target-riscv-Use-aesdec_ISB_ISR_IMC_AK.patch
  35-host-include-i386-Implement-aes-round.h.patch
  36-host-include-aarch64-Implement-aes-round.h.patch


r~


Richard Henderson (37):
  util: Add cpuinfo-ppc.c
  tests/multiarch: Add test-aes
  target/arm: Move aesmc and aesimc tables to crypto/aes.c
  crypto/aes: Add constants for ShiftRows, InvShiftRows
  crypto: Add aesenc_SB_SR_AK
  target/i386: Use aesenc_SB_SR_AK
  target/arm: Demultiplex AESE and AESMC
  target/arm: Use aesenc_SB_SR_AK
  target/ppc: Use aesenc_SB_SR_AK
  target/riscv: Use aesenc_SB_SR_AK
  crypto: Add aesdec_ISB_ISR_AK
  target/i386: Use aesdec_ISB_ISR_AK
  target/arm: Use aesdec_ISB_ISR_AK
  target/ppc: Use aesdec_ISB_ISR_AK
  target/riscv: Use aesdec_ISB_ISR_AK
  crypto: Add aesenc_MC
  target/arm: Use aesenc_MC
  crypto: Add aesdec_IMC
  target/i386: Use aesdec_IMC
  target/arm: Use aesdec_IMC
  target/riscv: Use aesdec_IMC
  crypto: Add aesenc_SB_SR_MC_AK
  target/i386: Use aesenc_SB_SR_MC_AK
  target/ppc: Use aesenc_SB_SR_MC_AK
  target/riscv: Use aesenc_SB_SR_MC_AK
  crypto: Add aesdec_ISB_ISR_IMC_AK
  target/i386: Use aesdec_ISB_ISR_IMC_AK
  target/riscv: Use aesdec_ISB_ISR_IMC_AK
  crypto: Add aesdec_ISB_ISR_AK_IMC
  target/ppc: Use aesdec_ISB_ISR_AK_IMC
  crypto: Remove AES_shifts, AES_ishifts
  crypto: Implement aesdec_IMC with AES_imc_rot
  crypto: Remove AES_imc
  crypto: Unexport AES_*_rot, AES_TeN, AES_TdN
  host/include/i386: Implement aes-round.h
  host/include/aarch64: Implement aes-round.h
  host/include/ppc: Implement aes-round.h

 MAINTAINERS                                  |   1 +
 meson.build                                  |   9 +
 host/include/aarch64/host/cpuinfo.h          |   1 +
 host/include/aarch64/host/crypto/aes-round.h | 205 +++++
 host/include/generic/host/crypto/aes-round.h |  33 +
 host/include/i386/host/cpuinfo.h             |   1 +
 host/include/i386/host/crypto/aes-round.h    | 152 ++++
 host/include/ppc/host/cpuinfo.h              |  30 +
 host/include/ppc/host/crypto/aes-round.h     | 182 +++++
 host/include/ppc64/host/cpuinfo.h            |   1 +
 host/include/ppc64/host/crypto/aes-round.h   |   1 +
 host/include/x86_64/host/crypto/aes-round.h  |   1 +
 include/crypto/aes-round.h                   | 164 ++++
 include/crypto/aes.h                         |  30 -
 target/arm/helper.h                          |   2 +
 target/i386/ops_sse.h                        |  60 +-
 tcg/ppc/tcg-target.h                         |  16 +-
 target/arm/tcg/sve.decode                    |   4 +-
 crypto/aes.c                                 | 808 ++++++++++++-------
 target/arm/tcg/crypto_helper.c               | 249 ++----
 target/arm/tcg/translate-a64.c               |  13 +-
 target/arm/tcg/translate-neon.c              |   4 +-
 target/arm/tcg/translate-sve.c               |   8 +-
 target/ppc/int_helper.c                      |  50 +-
 target/riscv/crypto_helper.c                 | 138 +---
 tests/tcg/aarch64/test-aes.c                 |  58 ++
 tests/tcg/i386/test-aes.c                    |  68 ++
 tests/tcg/ppc64/test-aes.c                   | 116 +++
 tests/tcg/riscv64/test-aes.c                 |  76 ++
 util/cpuinfo-aarch64.c                       |   2 +
 util/cpuinfo-i386.c                          |   3 +
 util/cpuinfo-ppc.c                           |  64 ++
 tcg/ppc/tcg-target.c.inc                     |  44 +-
 tests/tcg/multiarch/test-aes-main.c.inc      | 183 +++++
 tests/tcg/aarch64/Makefile.target            |   4 +
 tests/tcg/i386/Makefile.target               |   4 +
 tests/tcg/ppc64/Makefile.target              |   1 +
 tests/tcg/riscv64/Makefile.target            |  13 +
 util/meson.build                             |   2 +
 39 files changed, 2080 insertions(+), 721 deletions(-)
 create mode 100644 host/include/aarch64/host/crypto/aes-round.h
 create mode 100644 host/include/generic/host/crypto/aes-round.h
 create mode 100644 host/include/i386/host/crypto/aes-round.h
 create mode 100644 host/include/ppc/host/cpuinfo.h
 create mode 100644 host/include/ppc/host/crypto/aes-round.h
 create mode 100644 host/include/ppc64/host/cpuinfo.h
 create mode 100644 host/include/ppc64/host/crypto/aes-round.h
 create mode 100644 host/include/x86_64/host/crypto/aes-round.h
 create mode 100644 include/crypto/aes-round.h
 create mode 100644 tests/tcg/aarch64/test-aes.c
 create mode 100644 tests/tcg/i386/test-aes.c
 create mode 100644 tests/tcg/ppc64/test-aes.c
 create mode 100644 tests/tcg/riscv64/test-aes.c
 create mode 100644 util/cpuinfo-ppc.c
 create mode 100644 tests/tcg/multiarch/test-aes-main.c.inc

Comments

Richard Henderson June 22, 2023, 4:52 a.m. UTC | #1
On 6/20/23 13:07, Richard Henderson wrote:
> Patches missing r-b:
>    08-target-arm-Use-aesenc_SB_SR_AK.patch
>    10-target-riscv-Use-aesenc_SB_SR_AK.patch
>    13-target-arm-Use-aesdec_ISB_ISR_AK.patch
>    15-target-riscv-Use-aesdec_ISB_ISR_AK.patch
>    17-target-arm-Use-aesenc_MC.patch
>    19-target-i386-Use-aesdec_IMC.patch
>    20-target-arm-Use-aesdec_IMC.patch
>    21-target-riscv-Use-aesdec_IMC.patch
>    23-target-i386-Use-aesenc_SB_SR_MC_AK.patch
>    25-target-riscv-Use-aesenc_SB_SR_MC_AK.patch
>    27-target-i386-Use-aesdec_ISB_ISR_IMC_AK.patch
>    28-target-riscv-Use-aesdec_ISB_ISR_IMC_AK.patch
>    35-host-include-i386-Implement-aes-round.h.patch
>    36-host-include-aarch64-Implement-aes-round.h.patch

The crypto/ portion of the patch set has now been reviewed (thanks Daniel P.B.), as well 
as the target/ppc/ portions (thanks Daniel H.B.).

What's left are the x86 and aa64 host accel, target/{arm,i386,riscv}.

Would it make anything easier if I re-sorted and separated the unreviewed patches per target?


r~