Commit bfc484fe authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull crypto updates from Herbert Xu:
 "API:

   - Delay boot-up self-test for built-in algorithms

  Algorithms:

   - Remove fallback path on arm64 as SIMD now runs with softirq off

  Drivers:

   - Add Keem Bay OCS ECC Driver"

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (61 commits)
  crypto: testmgr - fix wrong key length for pkcs1pad
  crypto: pcrypt - Delay write to padata->info
  crypto: ccp - Make use of the helper macro kthread_run()
  crypto: sa2ul - Use the defined variable to clean code
  crypto: s5p-sss - Add error handling in s5p_aes_probe()
  crypto: keembay-ocs-ecc - Add Keem Bay OCS ECC Driver
  dt-bindings: crypto: Add Keem Bay ECC bindings
  crypto: ecc - Export additional helper functions
  crypto: ecc - Move ecc.h to include/crypto/internal
  crypto: engine - Add KPP Support to Crypto Engine
  crypto: api - Do not create test larvals if manager is disabled
  crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks
  hwrng: s390 - replace snprintf in show functions with sysfs_emit
  crypto: octeontx2 - set assoclen in aead_do_fallback()
  crypto: ccp - Fix whitespace in sev_cmd_buffer_len()
  hwrng: mtk - Force runtime pm ops for sleep ops
  crypto: testmgr - Only disable migration in crypto_disable_simd_for_test()
  crypto: qat - share adf_enable_pf2vf_comms() from adf_pf2vf_msg.c
  crypto: qat - extract send and wait from adf_vf2pf_request_version()
  crypto: qat - add VF and PF wrappers to common send function
  ...
parents d2fac0af 39ef0851
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@ the crypto engine via one of:

* crypto_transfer_hash_request_to_engine()

* crypto_transfer_kpp_request_to_engine()

* crypto_transfer_skcipher_request_to_engine()

At the end of the request process, a call to one of the following functions is needed:
@@ -79,4 +81,6 @@ At the end of the request process, a call to one of the following functions is n

* crypto_finalize_hash_request()

* crypto_finalize_kpp_request()

* crypto_finalize_skcipher_request()
+47 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/crypto/intel,keembay-ocs-ecc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Intel Keem Bay OCS ECC Device Tree Bindings

maintainers:
  - Daniele Alessandrelli <daniele.alessandrelli@intel.com>
  - Prabhjot Khurana <prabhjot.khurana@intel.com>

description:
  The Intel Keem Bay Offload and Crypto Subsystem (OCS) Elliptic Curve
  Cryptography (ECC) device provides hardware acceleration for elliptic curve
  cryptography using the NIST P-256 and NIST P-384 elliptic curves.

properties:
  compatible:
    const: intel,keembay-ocs-ecc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    crypto@30001000 {
      compatible = "intel,keembay-ocs-ecc";
      reg = <0x30001000 0x1000>;
      interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&scmi_clk 95>;
    };
+11 −0
Original line number Diff line number Diff line
@@ -9556,6 +9556,17 @@ F: drivers/crypto/keembay/keembay-ocs-aes-core.c
F:	drivers/crypto/keembay/ocs-aes.c
F:	drivers/crypto/keembay/ocs-aes.h
INTEL KEEM BAY OCS ECC CRYPTO DRIVER
M:	Daniele Alessandrelli <daniele.alessandrelli@intel.com>
M:	Prabhjot Khurana <prabhjot.khurana@intel.com>
M:	Mark Gross <mgross@linux.intel.com>
S:	Maintained
F:	Documentation/devicetree/bindings/crypto/intel,keembay-ocs-ecc.yaml
F:	drivers/crypto/keembay/Kconfig
F:	drivers/crypto/keembay/Makefile
F:	drivers/crypto/keembay/keembay-ocs-ecc.c
F:	drivers/crypto/keembay/ocs-ecc-curve-defs.h
INTEL KEEM BAY OCS HCU CRYPTO DRIVER
M:	Daniele Alessandrelli <daniele.alessandrelli@intel.com>
M:	Declan Murphy <declan.murphy@intel.com>
+0 −6
Original line number Diff line number Diff line
@@ -88,16 +88,12 @@ config CRYPTO_AES_ARM64_CE_BLK
	depends on KERNEL_MODE_NEON
	select CRYPTO_SKCIPHER
	select CRYPTO_AES_ARM64_CE
	select CRYPTO_AES_ARM64
	select CRYPTO_SIMD

config CRYPTO_AES_ARM64_NEON_BLK
	tristate "AES in ECB/CBC/CTR/XTS modes using NEON instructions"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SKCIPHER
	select CRYPTO_AES_ARM64
	select CRYPTO_LIB_AES
	select CRYPTO_SIMD

config CRYPTO_CHACHA20_NEON
	tristate "ChaCha20, XChaCha20, and XChaCha12 stream ciphers using NEON instructions"
@@ -122,8 +118,6 @@ config CRYPTO_AES_ARM64_BS
	depends on KERNEL_MODE_NEON
	select CRYPTO_SKCIPHER
	select CRYPTO_AES_ARM64_NEON_BLK
	select CRYPTO_AES_ARM64
	select CRYPTO_LIB_AES
	select CRYPTO_SIMD

endif
+12 −12
Original line number Diff line number Diff line
@@ -12,22 +12,21 @@
	.arch	armv8-a+crypto

	/*
	 * void ce_aes_ccm_auth_data(u8 mac[], u8 const in[], u32 abytes,
	 *			     u32 *macp, u8 const rk[], u32 rounds);
	 * u32 ce_aes_ccm_auth_data(u8 mac[], u8 const in[], u32 abytes,
	 *			    u32 macp, u8 const rk[], u32 rounds);
	 */
SYM_FUNC_START(ce_aes_ccm_auth_data)
	ldr	w8, [x3]			/* leftover from prev round? */
	ld1	{v0.16b}, [x0]			/* load mac */
	cbz	w8, 1f
	sub	w8, w8, #16
	cbz	w3, 1f
	sub	w3, w3, #16
	eor	v1.16b, v1.16b, v1.16b
0:	ldrb	w7, [x1], #1			/* get 1 byte of input */
	subs	w2, w2, #1
	add	w8, w8, #1
	add	w3, w3, #1
	ins	v1.b[0], w7
	ext	v1.16b, v1.16b, v1.16b, #1	/* rotate in the input bytes */
	beq	8f				/* out of input? */
	cbnz	w8, 0b
	cbnz	w3, 0b
	eor	v0.16b, v0.16b, v1.16b
1:	ld1	{v3.4s}, [x4]			/* load first round key */
	prfm	pldl1strm, [x1]
@@ -62,7 +61,7 @@ SYM_FUNC_START(ce_aes_ccm_auth_data)
	beq	10f
	adds	w2, w2, #16
	beq	10f
	mov	w8, w2
	mov	w3, w2
7:	ldrb	w7, [x1], #1
	umov	w6, v0.b[0]
	eor	w6, w6, w7
@@ -71,15 +70,15 @@ SYM_FUNC_START(ce_aes_ccm_auth_data)
	beq	10f
	ext	v0.16b, v0.16b, v0.16b, #1	/* rotate out the mac bytes */
	b	7b
8:	cbz	w8, 91f
	mov	w7, w8
	add	w8, w8, #16
8:	cbz	w3, 91f
	mov	w7, w3
	add	w3, w3, #16
9:	ext	v1.16b, v1.16b, v1.16b, #1
	adds	w7, w7, #1
	bne	9b
91:	eor	v0.16b, v0.16b, v1.16b
	st1	{v0.16b}, [x0]
10:	str	w8, [x3]
10:	mov	w0, w3
	ret
SYM_FUNC_END(ce_aes_ccm_auth_data)

@@ -124,6 +123,7 @@ SYM_FUNC_START(ce_aes_ccm_final)
SYM_FUNC_END(ce_aes_ccm_final)

	.macro	aes_ccm_do_crypt,enc
	cbz	x2, 5f
	ldr	x8, [x6, #8]			/* load lower ctr */
	ld1	{v0.16b}, [x5]			/* load mac */
CPU_LE(	rev	x8, x8			)	/* keep swabbed ctr in reg */
Loading