From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.7503.1666337380716422658 for ; Fri, 21 Oct 2022 00:29:41 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: pierre.gondois@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 619F01063; Fri, 21 Oct 2022 00:29:46 -0700 (PDT) Received: from [192.168.1.11] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2E3B53F7D8; Fri, 21 Oct 2022 00:29:37 -0700 (PDT) Message-ID: <0c7e644b-ac10-a64f-0705-9402f26c245b@arm.com> Date: Fri, 21 Oct 2022 09:29:17 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: =?UTF-8?B?UmU6IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSCB2OCAwMC8xOV0gQWRkIFJhdyBhbGdvcml0aG0gc3VwcG9ydCB1c2luZyBBcm0gRlctVFJORyBpbnRlcmZhY2U=?= To: gaoliming , devel@edk2.groups.io Cc: 'Sami Mujawar' , 'Leif Lindholm' , 'Ard Biesheuvel' , 'Rebecca Cran' , 'Michael D Kinney' , 'Jiewen Yao' , 'Jian J Wang' References: <171F2CF84A83B997.20472@groups.io> <158e9c86-8788-bbdd-e1c2-f31499e5382d@arm.com> <030101d8e4ea$59c91460$0d5b3d20$@byosoft.com.cn> From: "PierreGondois" In-Reply-To: <030101d8e4ea$59c91460$0d5b3d20$@byosoft.com.cn> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hello Liming, On 10/21/22 03:13, gaoliming wrote: > Pierre: > Is MdePkg BaseTrngLibNull Library instance only for build? >=20 > Is it possible to be used in the platform without RNG support? If ye= s, I suggest to remove ASSERT in API implementation. The BaseTrngLibNull is only here to have a default Null library when buil= ding the MdePkg (TrngLib.h is in the MdePkg). I don't think it would be possib= le to use the Null implementation on a platform. >=20 > Last, I suggest to add BaseTrngLibNull as the default TrngLib librar= y instance in MdePkg/MdeLibs.dsc.inc. This would mean building the BaseTrngLibNull for many packages that don't require it. If this is ok for you I can move it there. Thanks for the review, Pierre >=20 > Thanks > Liming >> -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- >> =E5=8F=91=E4=BB=B6=E4=BA=BA: Pierre Gondois >> =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2022=E5=B9=B410=E6=9C=8819=E6=97= =A5 22:46 >> =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io >> =E6=8A=84=E9=80=81: Sami Mujawar ; Leif Lindholm >> ; Ard Biesheuvel ; >> Rebecca Cran ; Michael D Kinney >> ; Liming Gao ; >> Jiewen Yao ; Jian J Wang >> =E4=B8=BB=E9=A2=98: Re: [edk2-devel] [PATCH v8 00/19] Add Raw algorith= m support using >> Arm FW-TRNG interface >> >> Hello, >> I finally found back the message from Liming on the v4: >> https://edk2.groups.io/g/devel/message/91800 >> >> There has been some changes to the patches affecting the MdePkg, >> but it should not be significant changes: >> - Renamed FID_TRNG_* macros to ARM_SMC_ID_TRNG_*. >> - Added RISCV64 to the list of VALID_ARCHITECTURES for BaseTrngLibNull >> - Dropped patch: 'MdePkg/BaseRngLib: Rename ArmReadIdIsar0() to >> ArmGetFeatRng()' >> - Removed references in Trnglib.h to 'Special Publication' >> 800-90A and 800-90C, and only reference 'Arm True Random >> Number Generator Firmware, Interface 1.0' in the Arm >> implementation of the TrngLib. >> >> Liming's Rb is not currently added to the MdePkg patches. >> >> Regards, >> Pierre >> >> On 10/18/22 15:20, PierreGondois via groups.io wrote: >>> From: Pierre Gondois >>> >>> Bugzilla: Bug 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3D= 3668) >>> >>> The Arm True Random Number Generator Firmware, Interface 1.0, >> specification >>> defines an interface between an Operating System (OS) executing at EL= 1 >> and >>> Firmware (FW) exposing a conditioned entropy source that is provided = by a >>> TRNG back end. >>> This patch-set: >>> - defines a TRNG library class that provides an interface to access t= he >>> entropy source on a platform. >>> - implements a TRNG library instance that uses the Arm FW-TRNG >> interface. >>> - Adds RawAlgorithm support to RngDxe for Arm architecture using the = Arm >>> FW-TRNG interface. >>> - Enables RNG support using FW-TRNG interface for Kvmtool Guest/Virtu= al >>> firmware. >>> >>> This patch-set is based on the v2 from Sami Mujawar: >>> [PATCH v2 0/8] Add Raw algorithm support using Arm FW-TRNG interface >>> v2: >>> https://edk2.groups.io/g/devel/message/83775 >>> v3: >>> https://edk2.groups.io/g/devel/message/90845 >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v3 >>> v4: >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v4 >>> v5: >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v5 >>> v6: >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v6 >>> v7: >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v7 >>> v8: >>> https://github.com/PierreARM/edk2/tree/Arm_Trng_v8 >>> >>> v8: >>> - Added Reviewed-by/Acked-by from Leif on ArmPkg/SecurityPkg >>> patches. [Leif] >>> - Renamed FID_TRNG_* macros to ARM_SMC_ID_TRNG_*. [Leif] >>> v7: >>> - Removed Reviewed-by from Leif. >>> - Remove Sami's Signed-off. >>> V6: >>> - Added my signed-off on patches authored by Sami. [Leif] >>> - New patch to make it easier to add new libraries in alphabetical >>> order: ArmPkg: Sort HVC/SMC section alphbetically in ArmPkg.dsc >> [Leif] >>> - Renmaed ArmHvcNullLib to ArmHvcLibNull. [Leif] >>> - Added RISCV64 to the list of VALID_ARCHITECTURES for >> BaseTrngLibNull. [Leif] >>> - Removed unnecessary space in function parameter documentation >>> ('[in, out]'). [Rebecca] >>> - Updated INF_VERSION to latest spec (1.29) for new libraries. [Re= becca] >>> - Dropped the following patches [Leif]: >>> - ArmPkg/ArmLib: Add ArmHasRngExt() >>> - ArmPkg/ArmLib: Add ArmReadIdIsar0() helper >>> - MdePkg/BaseRngLib: Rename ArmReadIdIsar0() to ArmGetFeatRng() >>> V5: >>> - Removed references in Trnglib.h to 'Special Publication' >>> 800-90A and 800-90C, and only reference 'Arm True Random >>> Number Generator Firmware, Interface 1.0' in the Arm >>> implementation of the TrngLib. [Jiewen] >>> V4: >>> - Removed dependencies on ArmPkg and dropped patch: >>> [PATCH v3 12/22] SecurityPkg: Update Securitypkg.ci.yaml >>> [Jiewen] >>> - Use a dynamically allocated array to hold available algorithms. >>> The array is freed in a new UNLOAD_IMAGE function and >>> allocated in arch specific implementations of >>> GetAvailableAlgorithms(), available in AArch64/AArch64Algo.c >>> and Arm/ArmAlgo.c. >>> - Correctly reference gEfiRngAlgorithmSp80090Ctr256Guid >>> Guid by copying its address (add missing '&'). [Jiewen] >>> V3: >>> - Address Leif's comment (moving definitions, optimizations, ...) >>> - Add ArmMonitorLib to choose Hvc/Smc conduit depending on a Pcd. >>> - Re-factor some parts of SecurityPkg/RngDxe/ to ease the addition >>> of new algorithms. >>> - Add ArmHasRngExt() function to check Arm's FEAT_RNG extension. >>> V2: >>> - Updates TrngLib definitions to use RETURN_STATUS as the return t= ype >>> from the interface functions as TrngLib is base type library. >>> - Drops the patch "MdePkg: Add definition for NULL GUID" as there = is >>> already an equivalent definition provided by gZeroGuid. Thus, th= e >>> use of gNullGuid has been replaced with gZeroGuid. >>> >>> Pierre Gondois (11): >>> ArmPkg/ArmMonitorLib: Definition for ArmMonitorLib library class >>> ArmPkg/ArmMonitorLib: Add ArmMonitorLib >>> ArmPkg: Sort HVC/SMC section alphbetically in ArmPkg.dsc >>> ArmPkg/ArmHvcLibNull: Add NULL instance of ArmHvcLib >>> SecurityPkg/RngDxe: Replace Pcd with Sp80090Ctr256Guid >>> SecurityPkg/RngDxe: Remove ArchGetSupportedRngAlgorithms() >>> SecurityPkg/RngDxe: Documentation/include/parameter cleanup >>> SecurityPkg/RngDxe: Check before advertising Cpu Rng algo >>> SecurityPkg/RngDxe: Add debug warning for NULL >>> PcdCpuRngSupportedAlgorithm >>> SecurityPkg/RngDxe: Rename AArch64/RngDxe.c >>> SecurityPkg/RngDxe: Add Arm support of RngDxe >>> >>> Sami Mujawar (8): >>> ArmPkg: PCD to select conduit for monitor calls >>> MdePkg/TrngLib: Definition for TRNG library class interface >>> MdePkg/TrngLib: Add NULL instance of TRNG Library >>> ArmPkg: Add FID definitions for Firmware TRNG >>> ArmPkg/TrngLib: Add Arm Firmware TRNG library >>> SecurityPkg/RngDxe: Rename RdRandGenerateEntropy to generic >> name >>> SecurityPkg/RngDxe: Add AArch64 RawAlgorithm support through >> TrngLib >>> ArmVirtPkg: Kvmtool: Add RNG support using FW-TRNG interface >>> >>> ArmPkg/ArmPkg.dec | 12 +- >>> ArmPkg/ArmPkg.dsc | 5 +- >>> ArmPkg/Include/IndustryStandard/ArmStdSmc.h | 109 ++++- >>> ArmPkg/Include/Library/ArmMonitorLib.h | 42 ++ >>> ArmPkg/Library/ArmFwTrngLib/ArmFwTrngDefs.h | 50 +++ >>> ArmPkg/Library/ArmFwTrngLib/ArmFwTrngLib.c | 388 >> ++++++++++++++++++ >>> ArmPkg/Library/ArmFwTrngLib/ArmFwTrngLib.inf | 29 ++ >>> ArmPkg/Library/ArmHvcLibNull/ArmHvcLibNull.c | 29 ++ >>> .../Library/ArmHvcLibNull/ArmHvcLibNull.inf | 22 + >>> ArmPkg/Library/ArmMonitorLib/ArmMonitorLib.c | 34 ++ >>> .../Library/ArmMonitorLib/ArmMonitorLib.inf | 29 ++ >>> ArmVirtPkg/ArmVirtKvmTool.dsc | 10 + >>> ArmVirtPkg/ArmVirtKvmTool.fdf | 5 + >>> MdePkg/Include/Library/TrngLib.h | 103 +++++ >>> .../Library/BaseTrngLibNull/BaseTrngLibNull.c | 117 ++++++ >>> .../BaseTrngLibNull/BaseTrngLibNull.inf | 30 ++ >>> .../BaseTrngLibNull/BaseTrngLibNull.uni | 12 + >>> MdePkg/MdePkg.dec | 5 + >>> MdePkg/MdePkg.dsc | 1 + >>> .../RngDxe/AArch64/AArch64Algo.c | 72 ++++ >>> .../RngDxe/Arm/ArmAlgo.c | 51 +++ >>> .../RngDxe/{AArch64/RngDxe.c =3D> ArmRngDxe.c} | 81 +++- >>> .../RandomNumberGenerator/RngDxe/ArmTrng.c | 71 ++++ >>> .../RngDxe/Rand/RdRand.c | 14 +- >>> .../RngDxe/Rand/RdRand.h | 43 -- >>> .../RngDxe/Rand/RngDxe.c | 62 ++- >>> .../RandomNumberGenerator/RngDxe/RngDxe.c | 90 ++-- >>> .../RandomNumberGenerator/RngDxe/RngDxe.inf | 18 +- >>> .../RngDxe/RngDxeInternals.h | 71 ++-- >>> SecurityPkg/SecurityPkg.dsc | 5 +- >>> 30 files changed, 1454 insertions(+), 156 deletions(-) >>> create mode 100644 ArmPkg/Include/Library/ArmMonitorLib.h >>> create mode 100644 ArmPkg/Library/ArmFwTrngLib/ArmFwTrngDefs.h >>> create mode 100644 ArmPkg/Library/ArmFwTrngLib/ArmFwTrngLib.c >>> create mode 100644 ArmPkg/Library/ArmFwTrngLib/ArmFwTrngLib.inf >>> create mode 100644 ArmPkg/Library/ArmHvcLibNull/ArmHvcLibNull.c >>> create mode 100644 ArmPkg/Library/ArmHvcLibNull/ArmHvcLibNull.inf >>> create mode 100644 ArmPkg/Library/ArmMonitorLib/ArmMonitorLib.c >>> create mode 100644 ArmPkg/Library/ArmMonitorLib/ArmMonitorLib.inf >>> create mode 100644 MdePkg/Include/Library/TrngLib.h >>> create mode 100644 >> MdePkg/Library/BaseTrngLibNull/BaseTrngLibNull.c >>> create mode 100644 >> MdePkg/Library/BaseTrngLibNull/BaseTrngLibNull.inf >>> create mode 100644 >> MdePkg/Library/BaseTrngLibNull/BaseTrngLibNull.uni >>> create mode 100644 >> SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c >>> create mode 100644 >> SecurityPkg/RandomNumberGenerator/RngDxe/Arm/ArmAlgo.c >>> rename >> SecurityPkg/RandomNumberGenerator/RngDxe/{AArch64/RngDxe.c =3D> >> ArmRngDxe.c} (64%) >>> create mode 100644 >> SecurityPkg/RandomNumberGenerator/RngDxe/ArmTrng.c >>> delete mode 100644 >> SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RdRand.h >>> >=20 >=20