x86/resctrl: Replace open coded cacheinfo searches
authorTony Luck <tony.luck@intel.com>
Mon, 10 Jun 2024 00:39:27 +0000 (17:39 -0700)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 10 Jun 2024 06:50:12 +0000 (08:50 +0200)
pseudo_lock_region_init() and rdtgroup_cbm_to_size() open code a search for
details of a particular cache level.

Replace with get_cpu_cacheinfo_level().

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Link: https://lore.kernel.org/r/20240610003927.341707-5-tony.luck@intel.com
arch/x86/kernel/cpu/resctrl/pseudo_lock.c
arch/x86/kernel/cpu/resctrl/rdtgroup.c

index aacf236dfe3b9c774ab3e8ef8da01a422a074a22..1bbfd3c1e3002982c64e9ee711b8c960af6c6025 100644 (file)
@@ -292,9 +292,8 @@ static void pseudo_lock_region_clear(struct pseudo_lock_region *plr)
  */
 static int pseudo_lock_region_init(struct pseudo_lock_region *plr)
 {
-       struct cpu_cacheinfo *ci;
+       struct cacheinfo *ci;
        int ret;
-       int i;
 
        /* Pick the first cpu we find that is associated with the cache. */
        plr->cpu = cpumask_first(&plr->d->cpu_mask);
@@ -306,15 +305,11 @@ static int pseudo_lock_region_init(struct pseudo_lock_region *plr)
                goto out_region;
        }
 
-       ci = get_cpu_cacheinfo(plr->cpu);
-
-       plr->size = rdtgroup_cbm_to_size(plr->s->res, plr->d, plr->cbm);
-
-       for (i = 0; i < ci->num_leaves; i++) {
-               if (ci->info_list[i].level == plr->s->res->cache_level) {
-                       plr->line_size = ci->info_list[i].coherency_line_size;
-                       return 0;
-               }
+       ci = get_cpu_cacheinfo_level(plr->cpu, plr->s->res->cache_level);
+       if (ci) {
+               plr->line_size = ci->coherency_line_size;
+               plr->size = rdtgroup_cbm_to_size(plr->s->res, plr->d, plr->cbm);
+               return 0;
        }
 
        ret = -1;
index 02f213f1c51c5158c6c2cf540ab7e0e351b0bf49..cb68a121dabb6b0131ca7593687e4922f58f531f 100644 (file)
@@ -1450,18 +1450,14 @@ out:
 unsigned int rdtgroup_cbm_to_size(struct rdt_resource *r,
                                  struct rdt_domain *d, unsigned long cbm)
 {
-       struct cpu_cacheinfo *ci;
        unsigned int size = 0;
-       int num_b, i;
+       struct cacheinfo *ci;
+       int num_b;
 
        num_b = bitmap_weight(&cbm, r->cache.cbm_len);
-       ci = get_cpu_cacheinfo(cpumask_any(&d->cpu_mask));
-       for (i = 0; i < ci->num_leaves; i++) {
-               if (ci->info_list[i].level == r->cache_level) {
-                       size = ci->info_list[i].size / r->cache.cbm_len * num_b;
-                       break;
-               }
-       }
+       ci = get_cpu_cacheinfo_level(cpumask_any(&d->cpu_mask), r->cache_level);
+       if (ci)
+               size = ci->size / r->cache.cbm_len * num_b;
 
        return size;
 }