On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > > This commit more or less reverts commit 709c4362725a ("cacheinfo: > Move resctrl's get_cache_id() to the cacheinfo header file"). > > There are no users of the static inline helper outside of resctrl/core.c > and cpu.h is a pretty heavy include, it pulls in device.h etc. This > trips up architectures like riscv which want to access cacheinfo > in low level headers like elf.h. > > Link: https://lore.kernel.org/all/20211120035253.72074-1-kuba@xxxxxxxxxx/ > Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx> > --- > CC: fenghua.yu@xxxxxxxxx > CC: reinette.chatre@xxxxxxxxx > CC: tglx@xxxxxxxxxxxxx > CC: mingo@xxxxxxxxxx > CC: bp@xxxxxxxxx > CC: dave.hansen@xxxxxxxxxxxxxxx > CC: x86@xxxxxxxxxx > CC: hpa@xxxxxxxxx > CC: paul.walmsley@xxxxxxxxxx > CC: palmer@xxxxxxxxxxx > CC: aou@xxxxxxxxxxxxxxxxx > CC: peterz@xxxxxxxxxxxxx > CC: will@xxxxxxxxxx > CC: linux-riscv@xxxxxxxxxxxxxxxxxxx > > x86 resctrl folks, does this look okay? > > I'd like to do some bpf header cleanups in -next which this is blocking. > How would you like to handle that? This change looks entirely harmless, > can I get an ack and take this via bpf/netdev to Linus ASAP so it > propagates to all trees? Does this patch target the bpf tree, or the bpf-next tree? If we want to unblock bpf header cleanup in -next, we can simply include it in a set for bpf-next. Thanks, Song > --- > arch/x86/kernel/cpu/resctrl/core.c | 20 ++++++++++++++++++++ > include/linux/cacheinfo.h | 21 --------------------- > 2 files changed, 20 insertions(+), 21 deletions(-) > > diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c > index bb1c3f5f60c8..3c0b2c34be23 100644 > --- a/arch/x86/kernel/cpu/resctrl/core.c > +++ b/arch/x86/kernel/cpu/resctrl/core.c > @@ -284,6 +284,26 @@ static void rdt_get_cdp_l2_config(void) > rdt_get_cdp_config(RDT_RESOURCE_L2); > } > > +/* > + * Get the id of the cache associated with @cpu at level @level. > + * cpuhp lock must be held. > + */ > +static int get_cpu_cacheinfo_id(int cpu, int level) > +{ > + struct cpu_cacheinfo *ci = get_cpu_cacheinfo(cpu); > + int i; > + > + for (i = 0; i < ci->num_leaves; i++) { > + if (ci->info_list[i].level == level) { > + if (ci->info_list[i].attributes & CACHE_ID) > + return ci->info_list[i].id; > + return -1; > + } > + } > + > + return -1; > +} > + > static void > mba_wrmsr_amd(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r) > { > diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h > index 2f909ed084c6..c8c71eea237d 100644 > --- a/include/linux/cacheinfo.h > +++ b/include/linux/cacheinfo.h > @@ -3,7 +3,6 @@ > #define _LINUX_CACHEINFO_H > > #include <linux/bitops.h> > -#include <linux/cpu.h> > #include <linux/cpumask.h> > #include <linux/smp.h> > > @@ -102,24 +101,4 @@ int acpi_find_last_cache_level(unsigned int cpu); > > const struct attribute_group *cache_get_priv_group(struct cacheinfo *this_leaf); > > -/* > - * Get the id of the cache associated with @cpu at level @level. > - * cpuhp lock must be held. > - */ > -static inline int get_cpu_cacheinfo_id(int cpu, int level) > -{ > - struct cpu_cacheinfo *ci = get_cpu_cacheinfo(cpu); > - int i; > - > - for (i = 0; i < ci->num_leaves; i++) { > - if (ci->info_list[i].level == level) { > - if (ci->info_list[i].attributes & CACHE_ID) > - return ci->info_list[i].id; > - return -1; > - } > - } > - > - return -1; > -} > - > #endif /* _LINUX_CACHEINFO_H */ > -- > 2.31.1 >