Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Tan, Dun <dun....@intel.com> > Sent: Thursday, March 23, 2023 3:41 PM > To: devel@edk2.groups.io > Cc: Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Kumar, > Rahul R <rahul.r.ku...@intel.com>; Gerd Hoffmann <kra...@redhat.com> > Subject: [Patch V4 10/21] UefiCpuPkg/CpuPageTableLib:Modify > RandomBoolean() in RandomTest > > Add an input parameter to control the probability of returning > true. Change RandomBoolean() in RandomTest from 50% chance > returning true to returning true with the percentage of input > Probability. > > Signed-off-by: Dun Tan <dun....@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > --- > UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.c | 43 > +++++++++++++++++++++---------------------- > 1 file changed, 21 insertions(+), 22 deletions(-) > > diff --git a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.c > b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.c > index 97a388ca1c..52eb9daa10 100644 > --- a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.c > +++ b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.c > @@ -1,7 +1,7 @@ > /** @file > Random test case for Unit tests of the CpuPageTableLib instance of the > CpuPageTableLib class > > - Copyright (c) 2022, Intel Corporation. All rights reserved.<BR> > + Copyright (c) 2022 - 2023, Intel Corporation. All rights reserved.<BR> > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > @@ -81,22 +81,6 @@ LocalRandomBytes ( > } > } > > -/** > - Return a random boolean. > - > - @return boolean > -**/ > -BOOLEAN > -RandomBoolean ( > - VOID > - ) > -{ > - BOOLEAN Value; > - > - LocalRandomBytes ((UINT8 *)&Value, sizeof (BOOLEAN)); > - return Value%2; > -} > - > /** > Return a 32bit random number. > > @@ -139,6 +123,21 @@ Random64 ( > return (UINT64)(Value % (Limit - Start + 1)) + Start; > } > > +/** > + Returns true with the percentage of input Probability. > + > + @param[in] Probability The percentage to return true. > + > + @return boolean > +**/ > +BOOLEAN > +RandomBoolean ( > + UINT8 Probability > + ) > +{ > + return ((Probability > ((UINT8)Random64 (0, 100))) ? TRUE : FALSE); > +} > + > /** > Check if the Page table entry is valid > > @@ -178,7 +177,7 @@ > ValidateAndRandomeModifyPageTablePageTableEntry ( > UT_ASSERT_EQUAL ((PagingEntry->Uint64 & > mValidMaskLeaf[Level].Uint64), PagingEntry->Uint64); > } > > - if ((RandomNumber < 100) && RandomBoolean ()) { > + if ((RandomNumber < 100) && RandomBoolean (50)) { > RandomNumber++; > if (Level == 1) { > TempPhysicalBase = PagingEntry->Pte4K.Bits.PageTableBaseAddress; > @@ -211,7 +210,7 @@ > ValidateAndRandomeModifyPageTablePageTableEntry ( > UT_ASSERT_EQUAL ((PagingEntry->Uint64 & > mValidMaskNoLeaf[Level].Uint64), PagingEntry->Uint64); > } > > - if ((RandomNumber < 100) && RandomBoolean ()) { > + if ((RandomNumber < 100) && RandomBoolean (50)) { > RandomNumber++; > TempPhysicalBase = PagingEntry->Pnle.Bits.PageTableBaseAddress; > > @@ -299,7 +298,7 @@ GenerateSingleRandomMapEntry ( > // > // use AlignedTable to avoid that a random number can be very hard to be > 1G or 2M aligned > // > - if ((MapsIndex != 0) && (RandomBoolean ())) { > + if ((MapsIndex != 0) && (RandomBoolean (50))) { > FormerLinearAddress = MapEntrys->Maps[Random32 (0, > (UINT32)MapsIndex-1)].LinearAddress; > if (FormerLinearAddress < 2 * (UINT64)SIZE_1GB) { > FormerLinearAddressBottom = 0; > @@ -323,7 +322,7 @@ GenerateSingleRandomMapEntry ( > // > MapEntrys->Maps[MapsIndex].Length = Random64 (0, MIN (MaxAddress - > MapEntrys->Maps[MapsIndex].LinearAddress, 10 * (UINT64)SIZE_1GB)) & > AlignedTable[Random32 (0, ARRAY_SIZE (AlignedTable) -1)]; > > - if ((MapsIndex != 0) && (RandomBoolean ())) { > + if ((MapsIndex != 0) && (RandomBoolean (50))) { > MapEntrys->Maps[MapsIndex].Attribute.Uint64 = MapEntrys- > >Maps[Random32 (0, (UINT32)MapsIndex-1)].Attribute.Uint64; > MapEntrys->Maps[MapsIndex].Mask.Uint64 = MapEntrys- > >Maps[Random32 (0, (UINT32)MapsIndex-1)].Mask.Uint64; > } else { > @@ -344,7 +343,7 @@ GenerateSingleRandomMapEntry ( > // Need to avoid such case when remove the Random option > ONLY_ONE_ONE_MAPPING > // > MapEntrys->Maps[MapsIndex].Attribute.Bits.PageTableBaseAddress = > (Random64 (0, (((UINT64)1)<<52) - 1) & AlignedTable[Random32 (0, > ARRAY_SIZE (AlignedTable) -1)])>> 12; > - if (RandomBoolean ()) { > + if (RandomBoolean (50)) { > MapEntrys->Maps[MapsIndex].Mask.Bits.PageTableBaseAddress = 0; > } > } > -- > 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101677): https://edk2.groups.io/g/devel/message/101677 Mute This Topic: https://groups.io/mt/97796386/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-