diff mbox series

[bpf] cacheinfo: move get_cpu_cacheinfo_id() back out

Message ID 20211120165528.197359-1-kuba@kernel.org (mailing list archive)
State New, archived
Headers show
Series [bpf] cacheinfo: move get_cpu_cacheinfo_id() back out | expand

Commit Message

Jakub Kicinski Nov. 20, 2021, 4:55 p.m. UTC
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@kernel.org/
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: fenghua.yu@intel.com
CC: reinette.chatre@intel.com
CC: tglx@linutronix.de
CC: mingo@redhat.com
CC: bp@alien8.de
CC: dave.hansen@linux.intel.com
CC: x86@kernel.org
CC: hpa@zytor.com
CC: paul.walmsley@sifive.com
CC: palmer@dabbelt.com
CC: aou@eecs.berkeley.edu
CC: peterz@infradead.org
CC: will@kernel.org
CC: linux-riscv@lists.infradead.org

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?
---
 arch/x86/kernel/cpu/resctrl/core.c | 20 ++++++++++++++++++++
 include/linux/cacheinfo.h          | 21 ---------------------
 2 files changed, 20 insertions(+), 21 deletions(-)

Comments

Song Liu Nov. 23, 2021, 5:45 p.m. UTC | #1
On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@kernel.org> 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@kernel.org/
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> CC: fenghua.yu@intel.com
> CC: reinette.chatre@intel.com
> CC: tglx@linutronix.de
> CC: mingo@redhat.com
> CC: bp@alien8.de
> CC: dave.hansen@linux.intel.com
> CC: x86@kernel.org
> CC: hpa@zytor.com
> CC: paul.walmsley@sifive.com
> CC: palmer@dabbelt.com
> CC: aou@eecs.berkeley.edu
> CC: peterz@infradead.org
> CC: will@kernel.org
> CC: linux-riscv@lists.infradead.org
>
> 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
>
Jakub Kicinski Nov. 23, 2021, 6:37 p.m. UTC | #2
On Tue, 23 Nov 2021 07:45:41 -1000 Song Liu wrote:
> > 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.

No strong preference. Since this is very much not a bpf patch and
should be safe my intuition is to ship it to Linus ASAP and avoid 
any potential conflicts with other -next trees. Also riscv people 
may appreciate it getting fixed sooner rather than later. If they 
trip up the same dependency later on in the cycle and we've already
committed this patch to bpf-next they'd have to duplicate the patch
in their tree.
James Morse Nov. 23, 2021, 6:48 p.m. UTC | #3
Hello,

On 23/11/2021 17:45, Song Liu wrote:
> On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@kernel.org> 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@kernel.org/
>> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>> ---

>> 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.


Some background: this is part of the mpam tree that wires up resctrl for arm64. This patch
floated to the top and got merged with some cleanup as it was independent of the wider
resctrl changes.

If the cpu.h include is the problem, I can't see what that is needed for. It almost
certainly came in with a lockdep annotation that got replaced by a comment instead.


Thanks,

James


>> 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
>>
Song Liu Nov. 24, 2021, 8:14 a.m. UTC | #4
On Tue, Nov 23, 2021 at 8:49 AM James Morse <james.morse@arm.com> wrote:
>
> Hello,
>
> On 23/11/2021 17:45, Song Liu wrote:
> > On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@kernel.org> 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@kernel.org/
> >> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> >> ---
>
> >> 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.
>
>
> Some background: this is part of the mpam tree that wires up resctrl for arm64. This patch
> floated to the top and got merged with some cleanup as it was independent of the wider
> resctrl changes.
>
> If the cpu.h include is the problem, I can't see what that is needed for. It almost
> certainly came in with a lockdep annotation that got replaced by a comment instead.

Thanks for the information.

I can ack the patch for the patch itself.

Acked-by: Song Liu <songliubraving@fb.com>

But I am not sure whether we should ship it via bpf tree. It seems to
me that the
only reason we ship it via bpf tree is to get it to upstream ASAP?

Alexei/Daniel/Andrii, what do you think about this?

Thanks,
Song
Alexei Starovoitov Nov. 25, 2021, 3:59 p.m. UTC | #5
On Wed, Nov 24, 2021 at 1:14 AM Song Liu <song@kernel.org> wrote:
>
> On Tue, Nov 23, 2021 at 8:49 AM James Morse <james.morse@arm.com> wrote:
> >
> > Hello,
> >
> > On 23/11/2021 17:45, Song Liu wrote:
> > > On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@kernel.org> 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@kernel.org/
> > >> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > >> ---
> >
> > >> 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.
> >
> >
> > Some background: this is part of the mpam tree that wires up resctrl for arm64. This patch
> > floated to the top and got merged with some cleanup as it was independent of the wider
> > resctrl changes.
> >
> > If the cpu.h include is the problem, I can't see what that is needed for. It almost
> > certainly came in with a lockdep annotation that got replaced by a comment instead.
>
> Thanks for the information.
>
> I can ack the patch for the patch itself.
>
> Acked-by: Song Liu <songliubraving@fb.com>
>
> But I am not sure whether we should ship it via bpf tree. It seems to
> me that the
> only reason we ship it via bpf tree is to get it to upstream ASAP?
>
> Alexei/Daniel/Andrii, what do you think about this?

I don't completely understand why it cannot go via -next along
with other patches, but if Jakub needs it asap here is my
Acked-by: Alexei Starovoitov <ast@kernel.org>
and probably the fastest is for Jakub to take it via net tree directly.
Reinette Chatre Nov. 29, 2021, 6:28 p.m. UTC | #6
Hi Everybody,

On 11/25/2021 7:59 AM, Alexei Starovoitov wrote:
> On Wed, Nov 24, 2021 at 1:14 AM Song Liu <song@kernel.org> wrote:
>>
>> On Tue, Nov 23, 2021 at 8:49 AM James Morse <james.morse@arm.com> wrote:
>>>
>>> Hello,
>>>
>>> On 23/11/2021 17:45, Song Liu wrote:
>>>> On Sat, Nov 20, 2021 at 6:55 AM Jakub Kicinski <kuba@kernel.org> 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@kernel.org/
>>>>> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>>>>> ---
>>>
>>>>> 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.
>>>
>>>
>>> Some background: this is part of the mpam tree that wires up resctrl for arm64. This patch
>>> floated to the top and got merged with some cleanup as it was independent of the wider
>>> resctrl changes.
>>>
>>> If the cpu.h include is the problem, I can't see what that is needed for. It almost
>>> certainly came in with a lockdep annotation that got replaced by a comment instead.
>>
>> Thanks for the information.
>>
>> I can ack the patch for the patch itself.
>>
>> Acked-by: Song Liu <songliubraving@fb.com>
>>
>> But I am not sure whether we should ship it via bpf tree. It seems to
>> me that the
>> only reason we ship it via bpf tree is to get it to upstream ASAP?
>>
>> Alexei/Daniel/Andrii, what do you think about this?
> 
> I don't completely understand why it cannot go via -next along
> with other patches, but if Jakub needs it asap here is my
> Acked-by: Alexei Starovoitov <ast@kernel.org>
> and probably the fastest is for Jakub to take it via net tree directly.

These responses seems to ignore the information provided by James.

How about just the hunk below. It is not needed by the other parts 
removed and addresses the issue described in the changelog.

--- 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>

Reinette
diff mbox series

Patch

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 */