Message ID | 20220106074306.2712090-2-ray.huang@amd.com (mailing list archive) |
---|---|
State | Mainlined, archived |
Headers | show |
Series | [1/2] cpufreq: amd-pstate: Fix the dependence issue of AMD P-State | expand |
On Thu, Jan 06, 2022 at 03:43:06PM +0800, Huang Rui wrote: > The init_freq_invariance_cppc function is implemented in smpboot and depends on > CONFIG_SMP. > > MODPOST vmlinux.symvers > MODINFO modules.builtin.modinfo > GEN modules.builtin > LD .tmp_vmlinux.kallsyms1 > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > make: *** [Makefile:1161: vmlinux] Error 1 > > See https://lore.kernel.org/lkml/484af487-7511-647e-5c5b-33d4429acdec@infradead.org/. > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > Reported-by: kernel test robot <lkp@intel.com> > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > Signed-off-by: Huang Rui <ray.huang@amd.com> > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: Ingo Molnar <mingo@kernel.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: x86@kernel.org > Cc: stable@vger.kernel.org > --- > arch/x86/include/asm/topology.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > index cc164777e661..2f0b6be8eaab 100644 > --- a/arch/x86/include/asm/topology.h > +++ b/arch/x86/include/asm/topology.h > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > } > #endif > > -#ifdef CONFIG_ACPI_CPPC_LIB > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > void init_freq_invariance_cppc(void); > #define init_freq_invariance_cppc init_freq_invariance_cppc > #endif > -- Well, since that function is in smpboot.c then the logic should be that CPPC depends on functionality in smpboot.c for proper operation. IOW, ACPI_CPPC_LIB should have "depends on CONFIG_SMP" in Kconfig, no? Instead of adding more ifdeffery around...
On Thu, Jan 06, 2022 at 08:16:43PM +0800, Borislav Petkov wrote: > On Thu, Jan 06, 2022 at 03:43:06PM +0800, Huang Rui wrote: > > The init_freq_invariance_cppc function is implemented in smpboot and depends on > > CONFIG_SMP. > > > > MODPOST vmlinux.symvers > > MODINFO modules.builtin.modinfo > > GEN modules.builtin > > LD .tmp_vmlinux.kallsyms1 > > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > > make: *** [Makefile:1161: vmlinux] Error 1 > > > > See https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Flkml%2F484af487-7511-647e-5c5b-33d4429acdec%40infradead.org%2F&data=04%7C01%7Cray.huang%40amd.com%7C4c696d3f23ac4479dda108d9d10e6a53%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637770682133383506%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=9lC2az1xGeYn7fNputkUMsy7PIhmkqW8jdpDUsaWthI%3D&reserved=0. > > > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > > Reported-by: kernel test robot <lkp@intel.com> > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > > Signed-off-by: Huang Rui <ray.huang@amd.com> > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Cc: Borislav Petkov <bp@alien8.de> > > Cc: Ingo Molnar <mingo@kernel.org> > > Cc: Peter Zijlstra <peterz@infradead.org> > > Cc: x86@kernel.org > > Cc: stable@vger.kernel.org > > --- > > arch/x86/include/asm/topology.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > > index cc164777e661..2f0b6be8eaab 100644 > > --- a/arch/x86/include/asm/topology.h > > +++ b/arch/x86/include/asm/topology.h > > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > > } > > #endif > > > > -#ifdef CONFIG_ACPI_CPPC_LIB > > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > > void init_freq_invariance_cppc(void); > > #define init_freq_invariance_cppc init_freq_invariance_cppc > > #endif > > -- > > Well, since that function is in smpboot.c then the logic should be that > CPPC depends on functionality in smpboot.c for proper operation. > > IOW, ACPI_CPPC_LIB should have "depends on CONFIG_SMP" in Kconfig, no? > > Instead of adding more ifdeffery around... > Hmm, yes, that's fine. I will modify it in V2. Thanks, Ray
On Thu, Jan 06, 2022 at 10:37:59PM +0800, Huang Rui wrote: > On Thu, Jan 06, 2022 at 08:16:43PM +0800, Borislav Petkov wrote: > > On Thu, Jan 06, 2022 at 03:43:06PM +0800, Huang Rui wrote: > > > The init_freq_invariance_cppc function is implemented in smpboot and depends on > > > CONFIG_SMP. > > > > > > MODPOST vmlinux.symvers > > > MODINFO modules.builtin.modinfo > > > GEN modules.builtin > > > LD .tmp_vmlinux.kallsyms1 > > > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > > > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > > > make: *** [Makefile:1161: vmlinux] Error 1 > > > > > > See https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Flkml%2F484af487-7511-647e-5c5b-33d4429acdec%40infradead.org%2F&data=04%7C01%7Cray.huang%40amd.com%7C4c696d3f23ac4479dda108d9d10e6a53%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637770682133383506%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=9lC2az1xGeYn7fNputkUMsy7PIhmkqW8jdpDUsaWthI%3D&reserved=0. > > > > > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > > > Reported-by: kernel test robot <lkp@intel.com> > > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > > > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > > > Signed-off-by: Huang Rui <ray.huang@amd.com> > > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > Cc: Borislav Petkov <bp@alien8.de> > > > Cc: Ingo Molnar <mingo@kernel.org> > > > Cc: Peter Zijlstra <peterz@infradead.org> > > > Cc: x86@kernel.org > > > Cc: stable@vger.kernel.org > > > --- > > > arch/x86/include/asm/topology.h | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > > > index cc164777e661..2f0b6be8eaab 100644 > > > --- a/arch/x86/include/asm/topology.h > > > +++ b/arch/x86/include/asm/topology.h > > > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > > > } > > > #endif > > > > > > -#ifdef CONFIG_ACPI_CPPC_LIB > > > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > > > void init_freq_invariance_cppc(void); > > > #define init_freq_invariance_cppc init_freq_invariance_cppc > > > #endif > > > -- > > > > Well, since that function is in smpboot.c then the logic should be that > > CPPC depends on functionality in smpboot.c for proper operation. > > > > IOW, ACPI_CPPC_LIB should have "depends on CONFIG_SMP" in Kconfig, no? > > > > Instead of adding more ifdeffery around... > > > > Hmm, yes, that's fine. I will modify it in V2. > I just thought the CPPC function should be able to work on single core even SMP is disabled. Thanks, Ray
On Thu, Jan 06, 2022 at 10:55:20PM +0800, Huang Rui wrote: > I just thought the CPPC function should be able to work on single core even > SMP is disabled. Why, because SMP=n is a real use case?! FWIW, we were even speculating on removing SMP=n so how practical is using CPPC on SMP=n at all?
On Thu, Jan 6, 2022 at 4:55 PM Borislav Petkov <bp@alien8.de> wrote: > > On Thu, Jan 06, 2022 at 10:55:20PM +0800, Huang Rui wrote: > > I just thought the CPPC function should be able to work on single core even > > SMP is disabled. > > Why, because SMP=n is a real use case?! And why can't it be a real use case? > FWIW, we were even speculating on removing SMP=n so how practical is > using CPPC on SMP=n at all? The honest answer is that we don't know. Moreover, AFAICS the requisite #ifdeffery is there already and the problem is that the init_freq_invariance_cppc() defined in smpboot.c is not exported to modules and the CPPC code is modular in this build.
On Thu, Jan 06, 2022 at 05:12:51PM +0100, Rafael J. Wysocki wrote: > And why can't it be a real use case? You mean there's someone out there running SMP=n kernels on current hardware which has CPPC too? Yeah, right. > The honest answer is that we don't know. > > Moreover, AFAICS the requisite #ifdeffery is there already and the > problem is that the init_freq_invariance_cppc() defined in smpboot.c > is not exported to modules and the CPPC code is modular in this build. Yah, I saw that. And that's why I'm saying CPPC should depend on SMP - because it needs that functionality which is defined there. But if you really wanna support SMP=n, I don't care that much to debate this more - I just think it is silly.
On Thu, Jan 6, 2022 at 5:23 PM Borislav Petkov <bp@alien8.de> wrote: > > On Thu, Jan 06, 2022 at 05:12:51PM +0100, Rafael J. Wysocki wrote: > > And why can't it be a real use case? > > You mean there's someone out there running SMP=n kernels on current > hardware which has CPPC too? Yeah, right. > > > The honest answer is that we don't know. > > > > Moreover, AFAICS the requisite #ifdeffery is there already and the > > problem is that the init_freq_invariance_cppc() defined in smpboot.c > > is not exported to modules and the CPPC code is modular in this build. > > Yah, I saw that. And that's why I'm saying CPPC should depend on SMP - > because it needs that functionality which is defined there. In fact, the CPPC code itself doesn't need that functionality. The init_freq_invariance_cppc() call is in there, because amd_set_max_freq_ratio() depends on CPPC and it is pointless to run it when CPPC is not supported, not the other way around. > But if you really wanna support SMP=n, I don't care that much to debate > this more - I just think it is silly. Well, I just don't want to stop supporting SMP=n just because we can't possibly get our build dependencies right.
On Thu, Jan 6, 2022 at 8:43 AM Huang Rui <ray.huang@amd.com> wrote: > > The init_freq_invariance_cppc function is implemented in smpboot and depends on > CONFIG_SMP. > > MODPOST vmlinux.symvers > MODINFO modules.builtin.modinfo > GEN modules.builtin > LD .tmp_vmlinux.kallsyms1 > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > make: *** [Makefile:1161: vmlinux] Error 1 > > See https://lore.kernel.org/lkml/484af487-7511-647e-5c5b-33d4429acdec@infradead.org/. > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > Reported-by: kernel test robot <lkp@intel.com> > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > Signed-off-by: Huang Rui <ray.huang@amd.com> > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: Ingo Molnar <mingo@kernel.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: x86@kernel.org > Cc: stable@vger.kernel.org > --- > arch/x86/include/asm/topology.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > index cc164777e661..2f0b6be8eaab 100644 > --- a/arch/x86/include/asm/topology.h > +++ b/arch/x86/include/asm/topology.h > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > } > #endif > > -#ifdef CONFIG_ACPI_CPPC_LIB > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > void init_freq_invariance_cppc(void); > #define init_freq_invariance_cppc init_freq_invariance_cppc Why don't you check CONFIG_SMP instead of this symbol in cppc_acpi.c? That file depends on CONFIG_ACPI_CPPC_LIB anyway.
On Thu, Jan 6, 2022 at 6:12 PM Rafael J. Wysocki <rafael@kernel.org> wrote: > > On Thu, Jan 6, 2022 at 8:43 AM Huang Rui <ray.huang@amd.com> wrote: > > > > The init_freq_invariance_cppc function is implemented in smpboot and depends on > > CONFIG_SMP. > > > > MODPOST vmlinux.symvers > > MODINFO modules.builtin.modinfo > > GEN modules.builtin > > LD .tmp_vmlinux.kallsyms1 > > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > > make: *** [Makefile:1161: vmlinux] Error 1 > > > > See https://lore.kernel.org/lkml/484af487-7511-647e-5c5b-33d4429acdec@infradead.org/. > > > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > > Reported-by: kernel test robot <lkp@intel.com> > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > > Signed-off-by: Huang Rui <ray.huang@amd.com> > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Cc: Borislav Petkov <bp@alien8.de> > > Cc: Ingo Molnar <mingo@kernel.org> > > Cc: Peter Zijlstra <peterz@infradead.org> > > Cc: x86@kernel.org > > Cc: stable@vger.kernel.org > > --- > > arch/x86/include/asm/topology.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > > index cc164777e661..2f0b6be8eaab 100644 > > --- a/arch/x86/include/asm/topology.h > > +++ b/arch/x86/include/asm/topology.h > > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > > } > > #endif > > > > -#ifdef CONFIG_ACPI_CPPC_LIB > > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > > void init_freq_invariance_cppc(void); > > #define init_freq_invariance_cppc init_freq_invariance_cppc > > Why don't you check CONFIG_SMP instead of this symbol in cppc_acpi.c? > That file depends on CONFIG_ACPI_CPPC_LIB anyway. Scratch that, it needs to compile on non-x86 too. The $subject patch is cleaner than all of the alternatives I have considered, so I'm going to apply it. However, I'm not really happy with the dependencies between CPPC and smpboot.c going both ways.
On Fri, Jan 07, 2022 at 01:46:04AM +0800, Rafael J. Wysocki wrote: > On Thu, Jan 6, 2022 at 6:12 PM Rafael J. Wysocki <rafael@kernel.org> wrote: > > > > On Thu, Jan 6, 2022 at 8:43 AM Huang Rui <ray.huang@amd.com> wrote: > > > > > > The init_freq_invariance_cppc function is implemented in smpboot and depends on > > > CONFIG_SMP. > > > > > > MODPOST vmlinux.symvers > > > MODINFO modules.builtin.modinfo > > > GEN modules.builtin > > > LD .tmp_vmlinux.kallsyms1 > > > ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': > > > /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' > > > make: *** [Makefile:1161: vmlinux] Error 1 > > > > > > See https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Flkml%2F484af487-7511-647e-5c5b-33d4429acdec%40infradead.org%2F&data=04%7C01%7Cray.huang%40amd.com%7Cde64292b38394cf2cac508d9d13c701c%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637770879795785268%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=BtO45nsVaYM%2BBytS%2B5GOPQuIadaiUEnzzaSmydsl0Jo%3D&reserved=0. > > > > > > Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") > > > Reported-by: kernel test robot <lkp@intel.com> > > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > > > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > > > Signed-off-by: Huang Rui <ray.huang@amd.com> > > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > Cc: Borislav Petkov <bp@alien8.de> > > > Cc: Ingo Molnar <mingo@kernel.org> > > > Cc: Peter Zijlstra <peterz@infradead.org> > > > Cc: x86@kernel.org > > > Cc: stable@vger.kernel.org > > > --- > > > arch/x86/include/asm/topology.h | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > > > index cc164777e661..2f0b6be8eaab 100644 > > > --- a/arch/x86/include/asm/topology.h > > > +++ b/arch/x86/include/asm/topology.h > > > @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) > > > } > > > #endif > > > > > > -#ifdef CONFIG_ACPI_CPPC_LIB > > > +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) > > > void init_freq_invariance_cppc(void); > > > #define init_freq_invariance_cppc init_freq_invariance_cppc > > > > Why don't you check CONFIG_SMP instead of this symbol in cppc_acpi.c? > > That file depends on CONFIG_ACPI_CPPC_LIB anyway. > > Scratch that, it needs to compile on non-x86 too. > > The $subject patch is cleaner than all of the alternatives I have > considered, so I'm going to apply it. > > However, I'm not really happy with the dependencies between CPPC and > smpboot.c going both ways. Thanks, for urgent fix for linux-next, I think we can use this patch at this moment. Let me think out a better way to handle the dependencies next step. :-) Thanks, Ray
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h index cc164777e661..2f0b6be8eaab 100644 --- a/arch/x86/include/asm/topology.h +++ b/arch/x86/include/asm/topology.h @@ -221,7 +221,7 @@ static inline void arch_set_max_freq_ratio(bool turbo_disabled) } #endif -#ifdef CONFIG_ACPI_CPPC_LIB +#if defined(CONFIG_ACPI_CPPC_LIB) && defined(CONFIG_SMP) void init_freq_invariance_cppc(void); #define init_freq_invariance_cppc init_freq_invariance_cppc #endif
The init_freq_invariance_cppc function is implemented in smpboot and depends on CONFIG_SMP. MODPOST vmlinux.symvers MODINFO modules.builtin.modinfo GEN modules.builtin LD .tmp_vmlinux.kallsyms1 ld: drivers/acpi/cppc_acpi.o: in function `acpi_cppc_processor_probe': /home/ray/brahma3/linux/drivers/acpi/cppc_acpi.c:819: undefined reference to `init_freq_invariance_cppc' make: *** [Makefile:1161: vmlinux] Error 1 See https://lore.kernel.org/lkml/484af487-7511-647e-5c5b-33d4429acdec@infradead.org/. Fixes: 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD systems") Reported-by: kernel test robot <lkp@intel.com> Reported-by: Randy Dunlap <rdunlap@infradead.org> Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Huang Rui <ray.huang@amd.com> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: x86@kernel.org Cc: stable@vger.kernel.org --- arch/x86/include/asm/topology.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)