Looks good. Series Reviewed-by: Qin Long <qin.l...@intel.com>
Best Regards & Thanks, LONG, Qin > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Thomas Palmer > Sent: Friday, October 9, 2015 1:13 AM > To: edk2-devel@lists.01.org > Cc: Zhang, Chao B > Subject: [edk2] [PATCH 1/3] MdePkg: Create GetRandomNumber128 in > RngLib > > Declare GetRandomNumber128 in RngLib.h. > Create GetRandomNumber128 in BaseRngLib, which is simply calling > GetRandomNumber64 twice > > A GetRandomNumber128 function allows platforms with 128bit HWRNGs to > save on IO overhead that comes from having to prime the HWRNG device > before each read operation. Using the HWRNG installed on the HP ProLiant > m400 moonshot cartridge, this will save about 50ms per RAW Entropy > operation as compared with calling GetRandomNumber64 twice. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Thomas Palmer <thomas.pal...@hpe.com> > --- > MdePkg/Include/Library/RngLib.h | 17 +++++++++++++++++ > MdePkg/Library/BaseRngLib/BaseRng.c | 32 > ++++++++++++++++++++++++++++++++ > 2 files changed, 49 insertions(+) > > diff --git a/MdePkg/Include/Library/RngLib.h > b/MdePkg/Include/Library/RngLib.h index 157a931..ece4394 100644 > --- a/MdePkg/Include/Library/RngLib.h > +++ b/MdePkg/Include/Library/RngLib.h > @@ -66,4 +66,21 @@ GetRandomNumber64 ( > OUT UINT64 *Rand > ); > > +/** > + Generates a 128-bit random number. > + > + if Rand is NULL, then ASSERT(). > + > + @param[out] Rand Buffer pointer to store the 128-bit random value. > + > + @retval TRUE Random number generated successfully. > + @retval FALSE Failed to generate the random number. > + > +**/ > +BOOLEAN > +EFIAPI > +GetRandomNumber128 ( > + OUT UINT64 *Rand > + ); > + > #endif // __RNG_LIB_H__ > diff --git a/MdePkg/Library/BaseRngLib/BaseRng.c > b/MdePkg/Library/BaseRngLib/BaseRng.c > index 279df30..2c8df56 100644 > --- a/MdePkg/Library/BaseRngLib/BaseRng.c > +++ b/MdePkg/Library/BaseRngLib/BaseRng.c > @@ -155,3 +155,35 @@ GetRandomNumber64 ( > > return FALSE; > } > + > +/** > + Generates a 128-bit random number. > + > + if Rand is NULL, then ASSERT(). > + > + @param[out] Rand Buffer pointer to store the 128-bit random value. > + > + @retval TRUE Random number generated successfully. > + @retval FALSE Failed to generate the random number. > + > +**/ > +BOOLEAN > +EFIAPI > +GetRandomNumber128 ( > + OUT UINT64 *Rand > + ) > +{ > + ASSERT (Rand != NULL); > + > + // > + // Read first 64 bits > + // > + if (!GetRandomNumber64 (Rand)) { > + return FALSE; > + } > + > + // > + // Read second 64 bits > + // > + return GetRandomNumber64 (++Rand); > +} > -- > 1.7.9.5 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel