[edk2-devel] [PATCH v5 07/21] ArmPkg: Add FID definitions for Firmware TRNG

Leif Lindholm quic_llindhol at quicinc.com
Tue Sep 27 19:04:17 UTC 2022


On 2022-09-19 12:21, Pierre.Gondois at arm.com wrote:
> From: Sami Mujawar <sami.mujawar at arm.com>
> 
> Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668)
> 
> The Arm True Random Number Generator Firmware, Interface 1.0,
> Platform Design Document
> (https://developer.arm.com/documentation/den0098/latest/)
> defines an interface between an Operating System (OS) executing
> at EL1 and Firmware (FW) exposing a conditioned entropy source
> that is provided by a TRNG back end.
> 
> New function IDs have been defined by the specification for
> accessing the TRNG services. Therefore, add these definitions
> to the Arm standard SMC header.
> 
> Signed-off-by: Sami Mujawar <sami.mujawar at arm.com>

The patch needs to be signed off by the contributor (you), and no one 
else. You cannot make legal statements on their behalf, and you must 
make the statement on your own behalf.

/
     Leif

> ---
>   ArmPkg/Include/IndustryStandard/ArmStdSmc.h | 109 +++++++++++++++++++-
>   1 file changed, 107 insertions(+), 2 deletions(-)
> 
> diff --git a/ArmPkg/Include/IndustryStandard/ArmStdSmc.h b/ArmPkg/Include/IndustryStandard/ArmStdSmc.h
> index 78ce77cd734d..fa977a03a7ab 100644
> --- a/ArmPkg/Include/IndustryStandard/ArmStdSmc.h
> +++ b/ArmPkg/Include/IndustryStandard/ArmStdSmc.h
> @@ -1,13 +1,20 @@
>   /** @file
>   *
>   *  Copyright (c) 2020, NUVIA Inc. All rights reserved.<BR>
> -*  Copyright (c) 2012-2017, ARM Limited. All rights reserved.
> +*  Copyright (c) 2012 - 2022, Arm Limited. All rights reserved.
>   *
>   *  SPDX-License-Identifier: BSD-2-Clause-Patent
>   *
>   * @par Revision Reference:
> -*  - SMC Calling Convention version 1.2
> +*  - [1] SMC Calling Convention version 1.2
>   *    (https://developer.arm.com/documentation/den0028/c/?lang=en)
> +*  - [2] Arm True Random Number Generator Firmware, Interface 1.0,
> +*    Platform Design Document.
> +*    (https://developer.arm.com/documentation/den0098/latest/)
> +*
> +*  @par Glossary:
> +*    - TRNG - True Random Number Generator
> +*
>   **/
>   
>   #ifndef ARM_STD_SMC_H_
> @@ -139,4 +146,102 @@
>   /*                                    0xbf00ff02 is reserved */
>   #define ARM_SMC_ID_TOS_REVISION  0xbf00ff03
>   
> +// Firmware TRNG interface Function IDs
> +
> +/*
> +  SMC/HVC call to get the version of the TRNG backend,
> +  Cf. [2], 2.1 TRNG_VERSION
> +  Input values:
> +    W0    0x8400_0050
> +    W1-W7 Reserved (MBZ)
> +  Return values:
> +    Success (W0 > 0) W0[31] MBZ
> +      W0[30:16] Major revision
> +      W0[15:0] Minor revision
> +      W1 - W3 Reserved (MBZ)
> +    Error (W0 < 0)
> +      NOT_SUPPORTED Function not implemented
> +*/
> +#define FID_TRNG_VERSION  0x84000050
> +
> +/*
> +  SMC/HVC call to check if a TRNG function ID is implemented by the backend,
> +  Cf. [2], Section 2.2 TRNG_FEATURES
> +  Input Values
> +    W0    0x8400_0051
> +    W1    trng_func_id
> +    W2-W7 Reserved (MBZ)
> +  Return values:
> +    Success (W0 >= 0):
> +      SUCCESS Function is implemented.
> +        > 0     Function is implemented and
> +                has specific capabilities,
> +                see function definition.
> +    Error (W0 < 0)
> +      NOT_SUPPORTED Function with FID=trng_func_id
> +      is not implemented
> +*/
> +#define FID_TRNG_FEATURES  0x84000051
> +
> +/*
> +  SMC/HVC call to get the UUID of the TRNG backend,
> +  Cf. [2], Section 2.3 TRNG_GET_UUID
> +  Input Values:
> +    W0    0x8400_0052
> +    W1-W7 Reserved (MBZ)
> +  Return Values:
> +    Success (W0 != -1)
> +        W0 UUID[31:0]
> +        W1 UUID[63:32]
> +        W2 UUID[95:64]
> +        W3 UUID[127:96]
> +    Error (W0 = -1)
> +        W0 NOT_SUPPORTED
> +*/
> +#define FID_TRNG_GET_UUID  0x84000052
> +
> +/*
> +  AARCH32 SMC/HVC call to get entropy bits, Cf. [2], Section 2.4 TRNG_RND.
> +  Input values:
> +    W0    0x8400_0053
> +    W2-W7 Reserved (MBZ)
> +  Return values:
> +    Success (W0 = 0):
> +      W0 MBZ
> +      W1 Entropy[95:64]
> +      W2 Entropy[63:32]
> +      W3 Entropy[31:0]
> +    Error (W0 < 0)
> +          W0 NOT_SUPPORTED
> +          NO_ENTROPY
> +          INVALID_PARAMETERS
> +          W1 - W3 Reserved (MBZ)
> +*/
> +#define FID_TRNG_RND_AARCH32  0x84000053
> +
> +/*
> +  AARCH64 SMC/HVC call to get entropy bits, Cf. [2], Section 2.4 TRNG_RND.
> +  Input values:
> +      X0    0xC400_0053
> +      X2-X7 Reserved (MBZ)
> +  Return values:
> +    Success (X0 = 0):
> +      X0 MBZ
> +      X1 Entropy[191:128]
> +      X2 Entropy[127:64]
> +      X3 Entropy[63:0]
> +    Error (X0 < 0)
> +          X0 NOT_SUPPORTED
> +          NO_ENTROPY
> +          INVALID_PARAMETERS
> +          X1 - X3 Reserved (MBZ)
> +*/
> +#define FID_TRNG_RND_AARCH64  0xC4000053
> +
> +// Firmware TRNG status codes
> +#define TRNG_STATUS_SUCCESS            (INT32)(0)
> +#define TRNG_STATUS_NOT_SUPPORTED      (INT32)(-1)
> +#define TRNG_STATUS_INVALID_PARAMETER  (INT32)(-2)
> +#define TRNG_STATUS_NO_ENTROPY         (INT32)(-3)
> +
>   #endif // ARM_STD_SMC_H_



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#94440): https://edk2.groups.io/g/devel/message/94440
Mute This Topic: https://groups.io/mt/93788874/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list