Hi Sai, On 3/6/2020 7:40 PM, Sai Praneeth Prakhya wrote: > From: Reinette Chatre <reinette.chatre@xxxxxxxxx> > > The intention of the resctrl selftests is to only run the tests > associated with the feature(s) supported by the platform. Through > parsing of the feature flags found in /proc/cpuinfo it is possible > to learn which features are supported by the plaform. > > There are currently two issues with the platform feature detection that > together result in tests always being run, whether the platform supports > a feature or not. First, the parsing of the the feature flags loads the > line containing the flags in a buffer that is too small (256 bytes) to > always contain all flags. The consequence is that the flags of the features > being tested for may not be present in the buffer. Second, the actual > test for presence of a feature has an error in the logic, negating the > test for a particular feature flag instead of testing for the presence of a > particular feature flag. > > These two issues combined results in all tests being run on all > platforms, whether the feature is supported or not. > > Fix these issue by (1) increasing the buffer size being used to parse > the feature flags, and (2) change the logic to test for presence of the > feature being tested for. > > Signed-off-by: Reinette Chatre <reinette.chatre@xxxxxxxxx> > Signed-off-by: Sai Praneeth Prakhya <sai.praneeth.prakhya@xxxxxxxxx> > --- > tools/testing/selftests/resctrl/resctrlfs.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/resctrl/resctrlfs.c b/tools/testing/selftests/resctrl/resctrlfs.c > index 19c0ec4045a4..226dd7fdcfb1 100644 > --- a/tools/testing/selftests/resctrl/resctrlfs.c > +++ b/tools/testing/selftests/resctrl/resctrlfs.c > @@ -596,11 +596,11 @@ bool check_resctrlfs_support(void) > > char *fgrep(FILE *inf, const char *str) > { > - char line[256]; > int slen = strlen(str); > + char line[2048]; > > while (!feof(inf)) { > - if (!fgets(line, 256, inf)) > + if (!fgets(line, 2048, inf)) > break; > if (strncmp(line, str, slen)) > continue; > @@ -631,7 +631,7 @@ bool validate_resctrl_feature_request(char *resctrl_val) > if (res) { > char *s = strchr(res, ':'); > > - found = s && !strstr(s, resctrl_val); > + found = s && strstr(s, resctrl_val); > free(res); > } > fclose(inf); > Please note that this is only a partial fix. The current feature detection relies on the feature flags found in /proc/cpuinfo. Quirks and kernel boot parameters are not taken into account. This fix only addresses the parsing of feature flags. If a feature has been disabled via kernel boot parameter or quirk then the resctrl tests would still attempt to run the test for it. Reinette