Revert "selftests/resctrl: Use resctrl/info for feature detection"
authorReinette Chatre <reinette.chatre@intel.com>
Wed, 11 Aug 2021 23:54:21 +0000 (16:54 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 15 Aug 2021 12:00:25 +0000 (14:00 +0200)
This reverts commit 19eaad1400eab34e97ec4467cd2ab694d1caf20c which is
ee0415681eb661efa1eb2db7acc263f2c7df1e23 upstream.

This commit is not a stable candidate and was backported without needed
dependencies that results in the resctrl tests unable to compile.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/testing/selftests/resctrl/resctrl.h
tools/testing/selftests/resctrl/resctrlfs.c

index 9dcc96e1ad3d7db5c26db1d1559558799980535b..36da6136af96808ac2454a51c7f099b27c0ab23f 100644 (file)
 #define RESCTRL_PATH           "/sys/fs/resctrl"
 #define PHYS_ID_PATH           "/sys/devices/system/cpu/cpu"
 #define CBM_MASK_PATH          "/sys/fs/resctrl/info"
-#define L3_PATH                        "/sys/fs/resctrl/info/L3"
-#define MB_PATH                        "/sys/fs/resctrl/info/MB"
-#define L3_MON_PATH            "/sys/fs/resctrl/info/L3_MON"
-#define L3_MON_FEATURES_PATH   "/sys/fs/resctrl/info/L3_MON/mon_features"
 
 #define PARENT_EXIT(err_msg)                   \
        do {                                    \
@@ -83,7 +79,7 @@ int remount_resctrlfs(bool mum_resctrlfs);
 int get_resource_id(int cpu_no, int *resource_id);
 int umount_resctrlfs(void);
 int validate_bw_report_request(char *bw_report);
-bool validate_resctrl_feature_request(const char *resctrl_val);
+bool validate_resctrl_feature_request(char *resctrl_val);
 char *fgrep(FILE *inf, const char *str);
 int taskset_benchmark(pid_t bm_pid, int cpu_no);
 void run_benchmark(int signum, siginfo_t *info, void *ucontext);
index b57170f53861d1490101b8cf5fb4e205919c2b72..4174e48e06d1eae720caae7ad33e03ae758827d7 100644 (file)
@@ -616,56 +616,26 @@ char *fgrep(FILE *inf, const char *str)
  * validate_resctrl_feature_request - Check if requested feature is valid.
  * @resctrl_val:       Requested feature
  *
- * Return: True if the feature is supported, else false
+ * Return: 0 on success, non-zero on failure
  */
-bool validate_resctrl_feature_request(const char *resctrl_val)
+bool validate_resctrl_feature_request(char *resctrl_val)
 {
-       struct stat statbuf;
+       FILE *inf = fopen("/proc/cpuinfo", "r");
        bool found = false;
        char *res;
-       FILE *inf;
 
-       if (!resctrl_val)
+       if (!inf)
                return false;
 
-       if (remount_resctrlfs(false))
-               return false;
+       res = fgrep(inf, "flags");
 
-       if (!strncmp(resctrl_val, CAT_STR, sizeof(CAT_STR))) {
-               if (!stat(L3_PATH, &statbuf))
-                       return true;
-       } else if (!strncmp(resctrl_val, MBA_STR, sizeof(MBA_STR))) {
-               if (!stat(MB_PATH, &statbuf))
-                       return true;
-       } else if (!strncmp(resctrl_val, MBM_STR, sizeof(MBM_STR)) ||
-                  !strncmp(resctrl_val, CMT_STR, sizeof(CMT_STR))) {
-               if (!stat(L3_MON_PATH, &statbuf)) {
-                       inf = fopen(L3_MON_FEATURES_PATH, "r");
-                       if (!inf)
-                               return false;
-
-                       if (!strncmp(resctrl_val, CMT_STR, sizeof(CMT_STR))) {
-                               res = fgrep(inf, "llc_occupancy");
-                               if (res) {
-                                       found = true;
-                                       free(res);
-                               }
-                       }
-
-                       if (!strncmp(resctrl_val, MBM_STR, sizeof(MBM_STR))) {
-                               res = fgrep(inf, "mbm_total_bytes");
-                               if (res) {
-                                       free(res);
-                                       res = fgrep(inf, "mbm_local_bytes");
-                                       if (res) {
-                                               found = true;
-                                               free(res);
-                                       }
-                               }
-                       }
-                       fclose(inf);
-               }
+       if (res) {
+               char *s = strchr(res, ':');
+
+               found = s && !strstr(s, resctrl_val);
+               free(res);
        }
+       fclose(inf);
 
        return found;
 }