x86/resctrl: Add sparse_masks file in info
authorFenghua Yu <fenghua.yu@intel.com>
Tue, 10 Oct 2023 10:42:38 +0000 (12:42 +0200)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 11 Oct 2023 19:51:24 +0000 (21:51 +0200)
Add the interface in resctrl FS to show if sparse cache allocation
bit masks are supported on the platform. Reading the file returns
either a "1" if non-contiguous 1s are supported and "0" otherwise.
The file path is /sys/fs/resctrl/info/{resource}/sparse_masks, where
{resource} can be either "L2" or "L3".

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Peter Newman <peternewman@google.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Peter Newman <peternewman@google.com>
Link: https://lore.kernel.org/r/7300535160beba41fd8aa073749ec1ee29b4621f.1696934091.git.maciej.wieczor-retman@intel.com
arch/x86/kernel/cpu/resctrl/rdtgroup.c

index a52cdf97c21c6d3ec75762f10f2643fe8568615e..09848ff11f7ba4a669bde2f4fd0557a5b2baeeae 100644 (file)
@@ -1117,6 +1117,17 @@ static enum resctrl_conf_type resctrl_peer_type(enum resctrl_conf_type my_type)
        }
 }
 
+static int rdt_has_sparse_bitmasks_show(struct kernfs_open_file *of,
+                                       struct seq_file *seq, void *v)
+{
+       struct resctrl_schema *s = of->kn->parent->priv;
+       struct rdt_resource *r = s->res;
+
+       seq_printf(seq, "%u\n", r->cache.arch_has_sparse_bitmasks);
+
+       return 0;
+}
+
 /**
  * __rdtgroup_cbm_overlaps - Does CBM for intended closid overlap with other
  * @r: Resource to which domain instance @d belongs.
@@ -1839,6 +1850,13 @@ static struct rftype res_common_files[] = {
                .seq_show       = rdtgroup_size_show,
                .fflags         = RF_CTRL_BASE,
        },
+       {
+               .name           = "sparse_masks",
+               .mode           = 0444,
+               .kf_ops         = &rdtgroup_kf_single_ops,
+               .seq_show       = rdt_has_sparse_bitmasks_show,
+               .fflags         = RF_CTRL_INFO | RFTYPE_RES_CACHE,
+       },
 
 };