public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <quic_llindhol@quicinc.com>
To: <Pierre.Gondois@arm.com>
Cc: <devel@edk2.groups.io>, Sami Mujawar <sami.mujawar@arm.com>,
	Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Rebecca Cran <rebecca@bsdio.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Jiewen Yao <jiewen.yao@intel.com>,
	Jian J Wang <jian.j.wang@intel.com>
Subject: Re: [PATCH v8 08/19] ArmPkg: Add FID definitions for Firmware TRNG
Date: Thu, 20 Oct 2022 09:55:36 +0100	[thread overview]
Message-ID: <Y1ENCLjJRWO2bDfH@qc-i7.hemma.eciton.net> (raw)
In-Reply-To: <20221018132052.1359530-9-Pierre.Gondois@arm.com>

On Tue, Oct 18, 2022 at 15:20:41 +0200, Pierre.Gondois@arm.com wrote:
> From: Sami Mujawar <sami.mujawar@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: Pierre Gondois <pierre.gondois@arm.com>

Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>

> ---
>  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..374b9ded7f5f 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 ARM_SMC_ID_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 ARM_SMC_ID_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 ARM_SMC_ID_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 ARM_SMC_ID_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 ARM_SMC_ID_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_
> -- 
> 2.25.1
> 

  reply	other threads:[~2022-10-20  8:55 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18 13:20 [PATCH v8 00/19] Add Raw algorithm support using Arm FW-TRNG interface PierreGondois
2022-10-18 13:20 ` [PATCH v8 01/19] ArmPkg: PCD to select conduit for monitor calls PierreGondois
2022-10-18 13:20 ` [PATCH v8 02/19] ArmPkg/ArmMonitorLib: Definition for ArmMonitorLib library class PierreGondois
2022-10-18 13:20 ` [PATCH v8 03/19] ArmPkg/ArmMonitorLib: Add ArmMonitorLib PierreGondois
2022-10-18 13:20 ` [PATCH v8 04/19] ArmPkg: Sort HVC/SMC section alphbetically in ArmPkg.dsc PierreGondois
2022-10-18 13:20 ` [PATCH v8 05/19] ArmPkg/ArmHvcLibNull: Add NULL instance of ArmHvcLib PierreGondois
2022-10-18 13:20 ` [PATCH v8 06/19] MdePkg/TrngLib: Definition for TRNG library class interface PierreGondois
2022-10-26 13:25   ` [edk2-devel] " Yao, Jiewen
2022-10-26 13:56     ` Leif Lindholm
2022-10-26 14:06       ` Yao, Jiewen
2022-10-26 15:44         ` Leif Lindholm
2022-10-18 13:20 ` [PATCH v8 07/19] MdePkg/TrngLib: Add NULL instance of TRNG Library PierreGondois
2022-10-18 13:20 ` [PATCH v8 08/19] ArmPkg: Add FID definitions for Firmware TRNG PierreGondois
2022-10-20  8:55   ` Leif Lindholm [this message]
2022-10-18 13:20 ` [PATCH v8 09/19] ArmPkg/TrngLib: Add Arm Firmware TRNG library PierreGondois
2022-10-18 13:20 ` [PATCH v8 10/19] SecurityPkg/RngDxe: Rename RdRandGenerateEntropy to generic name PierreGondois
2022-10-18 13:20 ` [PATCH v8 11/19] SecurityPkg/RngDxe: Replace Pcd with Sp80090Ctr256Guid PierreGondois
2022-10-18 13:20 ` [PATCH v8 12/19] SecurityPkg/RngDxe: Remove ArchGetSupportedRngAlgorithms() PierreGondois
2022-10-18 13:20 ` [PATCH v8 13/19] SecurityPkg/RngDxe: Documentation/include/parameter cleanup PierreGondois
2022-10-18 13:20 ` [PATCH v8 14/19] SecurityPkg/RngDxe: Check before advertising Cpu Rng algo PierreGondois
2022-10-18 13:20 ` [PATCH v8 15/19] SecurityPkg/RngDxe: Add AArch64 RawAlgorithm support through TrngLib PierreGondois
2022-10-18 13:20 ` [PATCH v8 16/19] SecurityPkg/RngDxe: Add debug warning for NULL PcdCpuRngSupportedAlgorithm PierreGondois
2022-10-18 13:20 ` [PATCH v8 17/19] SecurityPkg/RngDxe: Rename AArch64/RngDxe.c PierreGondois
2022-10-18 13:20 ` [PATCH v8 18/19] SecurityPkg/RngDxe: Add Arm support of RngDxe PierreGondois
2022-10-18 13:20 ` [PATCH v8 19/19] ArmVirtPkg: Kvmtool: Add RNG support using FW-TRNG interface PierreGondois

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y1ENCLjJRWO2bDfH@qc-i7.hemma.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox