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.....
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
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.....
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.kerne....
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.kerne....
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.....
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.....
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.kerne....
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
linux-stable-mirror@lists.linaro.org