Hi Ray, Below is my opinions for your 2 questions: 1. Can we rename this function name to "RegisterCpuFeatureLibIsFeatureValid"? [Bell]: In content of RegisterCpuFeaturesLib.c, there is a function named IsBitMaskMatchCheck(), it's my function's base, they have similar function - a small valid/invalid check, So I think it is better to keep them align. 2. Can we just say "CPU_FEATURE_PROC_TRACE" is the MAX feature we support? [Bell]: Discussed with Eric before, we should not define this as a MAX feature for future extension purpose.
Best Regards, Bell Song > -----Original Message----- > From: Ni, Ruiyu > Sent: Monday, December 11, 2017 5:40 PM > To: Song, BinX <binx.s...@intel.com>; edk2-devel@lists.01.org > Cc: ler...@redhat.com; Dong, Eric <eric.d...@intel.com> > Subject: Re: [edk2] [PATCH] UefiCpuPkg: Check invalid RegisterCpuFeature > parameter > > On 12/11/2017 4:16 PM, Song, BinX wrote: > > Check and assert invalid RegisterCpuFeature function parameter > > > > Cc: Eric Dong <eric.d...@intel.com> > > Cc: Laszlo Ersek <ler...@redhat.com> > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Bell Song <binx.s...@intel.com> > > --- > > .../Include/Library/RegisterCpuFeaturesLib.h | 4 ++++ > > .../RegisterCpuFeaturesLib.c | 28 > > ++++++++++++++++++++++ > > 2 files changed, 32 insertions(+) > > > > diff --git a/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h > b/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h > > index 9331e49..54244cd 100644 > > --- a/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h > > +++ b/UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h > > @@ -72,6 +72,10 @@ > > #define CPU_FEATURE_ENERGY_PERFORMANCE_BIAS (32+10) > > #define CPU_FEATURE_PPIN (32+11) > > +// > > +// When you add new CPU features, please also replace the minor CPU > feature > > +// with the max CPU feature in the IsFeatureValidCheck() function. > > +// > > #define CPU_FEATURE_PROC_TRACE (32+12) > > > > #define CPU_FEATURE_BEFORE_ALL BIT27 > > #define CPU_FEATURE_AFTER_ALL BIT28 > > diff --git > a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c > b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c > > index dd6a82b..f75d900 100644 > > --- > a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c > > +++ > b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c > > @@ -81,6 +81,33 @@ DumpCpuFeature ( > > } > > > > /** > > + Determines if the CPU feature is valid. > > + > > + @param[in] Feature Pointer to CPU feature > > + > > + @retval TRUE The CPU feature is valid. > > + @retval FALSE The CPU feature is invalid. > > +**/ > > +BOOLEAN > > +IsFeatureValidCheck ( > Can we rename this function name to > "RegisterCpuFeatureLibIsFeatureValid"? > > > > + IN UINT32 Feature > > + ) > > +{ > > + UINT32 Data; > > + > > + Data = Feature; > > + Data &= ~(CPU_FEATURE_BEFORE | CPU_FEATURE_AFTER | > CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL); > > + // > > + // Please replace CPU feature below with the MAX one if have. > Can we just say "CPU_FEATURE_PROC_TRACE" is the MAX feature we > support? > > > > + // > > + if (Data > CPU_FEATURE_PROC_TRACE) { > > + DEBUG ((DEBUG_ERROR, "Invalid CPU feature: 0x%x ", Feature)); > > + return FALSE; > > + } > > + return TRUE; > > +} > > + > > +/** > > Determines if the feature bit mask is in dependent CPU feature bit mask > buffer. > > > > @param[in] FeatureMask Pointer to CPU feature bit mask > > @@ -444,6 +471,7 @@ RegisterCpuFeature ( > > > > VA_START (Marker, InitializeFunc); > > Feature = VA_ARG (Marker, UINT32); > > + ASSERT (IsFeatureValidCheck(Feature)); > > while (Feature != CPU_FEATURE_END) { > > ASSERT ((Feature & (CPU_FEATURE_BEFORE | CPU_FEATURE_AFTER)) > > != (CPU_FEATURE_BEFORE | CPU_FEATURE_AFTER)); > > > > > -- > Thanks, > Ray _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel