Skip to contentSkip to conversation

cpufreq: fix using cpufreq-dt as module

PATCH Applied Andreas Kemnade 3 participants 5 messages Nov 3, 2024 – Dec 5, 2024

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cpufreq: fix using cpufreq-dt as module

E.g. omap2plus_defconfig compiles cpufreq-dt as module. As there is no module alias nor a module_init(), cpufreq-dt-platdev will not be used and therefore on several omap platforms there is no cpufreq.

Enforce builtin compile of cpufreq-dt-platdev to make it effective.

Fixes 3b062a086984 ("cpufreq: dt-platdev: Support building as module")
---
 drivers/cpufreq/Kconfig              | 2 +-
 drivers/cpufreq/cpufreq-dt-platdev.c | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)
drivers/cpufreq/Kconfig +1 -1
index 2561b215432a8..4547adf5d2a7d 100644
@@ -218,7 +218,7 @@ config CPUFREQ_DT
 	  If in doubt, say N.
 
 config CPUFREQ_DT_PLATDEV
-	tristate "Generic DT based cpufreq platdev driver"
+	bool "Generic DT based cpufreq platdev driver"
 	depends on OF
 	help
 	  This adds a generic DT based cpufreq platdev driver for frequency
drivers/cpufreq/cpufreq-dt-platdev.c +0 -2
index 18942bfe9c95f..78ad3221fe077 100644
@@ -234,5 +234,3 @@ static int __init cpufreq_dt_platdev_init(void)
 			       sizeof(struct cpufreq_dt_platform_data)));
 }
 core_initcall(cpufreq_dt_platdev_init);
-MODULE_DESCRIPTION("Generic DT based cpufreq platdev driver");
-MODULE_LICENSE("GPL");
Signature · 1 line
2.39.2
#1 lore raw
Quoted 9 lines · Andreas Kemnade

E.g. omap2plus_defconfig compiles cpufreq-dt as module. As there is no module alias nor a module_init(), cpufreq-dt-platdev will not be used and therefore on several omap platforms there is no cpufreq.

Enforce builtin compile of cpufreq-dt-platdev to make it effective.

Fixes 3b062a086984 ("cpufreq: dt-platdev: Support building as module")

I'd much rather see this fixed to work as a module. You already hinted at the right way to do that, so please do that instead.

Kevin

#2 lore raw

Am Mon, 04 Nov 2024 10:35:26 -0800
schrieb Kevin Hilman <[email protected]>:

Quoted 6 lines
Quoted 4 lines · Andreas Kemnade

E.g. omap2plus_defconfig compiles cpufreq-dt as module. As there is no module alias nor a module_init(), cpufreq-dt-platdev will not be used and therefore on several omap platforms there is no cpufreq.

Quoted 9 lines
Quoted 5 lines

Enforce builtin compile of cpufreq-dt-platdev to make it effective.

Fixes 3b062a086984 ("cpufreq: dt-platdev: Support building as

module") Cc: [email protected]

I'd much rather see this fixed to work as a module. You already hinted at the right way to do that, so please do that instead.

no clear idea how. What aliases should I add? The cpufreq-dt-platdev is not a real driver, so I could not create mod_devicetable aliases to match a given device. It constructs a device under certain conditions depending on the board compatible, so no simple list of compatibles, it contains allow and blocklists.

cpufreq-dt then binds to that device and that one can be built as a module (which then made cpufreq-dt-platdev also a module, causing the trouble). I do not see any benefit from having cpufreq-dt-platdev as a module. ti-cpufreq has a similar role and is also just builtin. It does itself no real work but provides a device cpufreq-dt then binds to.

Handling module removal would probably need to be added and tested. I feel not comfortable having such as a regression fix and for stable.

Regards,
Andreas

maintainer Applied
#3 lore raw
Quoted 13 lines · Andreas Kemnade

no clear idea how. What aliases should I add? The cpufreq-dt-platdev is not a real driver, so I could not create mod_devicetable aliases to match a given device. It constructs a device under certain conditions depending on the board compatible, so no simple list of compatibles, it contains allow and blocklists.

cpufreq-dt then binds to that device and that one can be built as a module (which then made cpufreq-dt-platdev also a module, causing the trouble). I do not see any benefit from having cpufreq-dt-platdev as a module. ti-cpufreq has a similar role and is also just builtin. It does itself no real work but provides a device cpufreq-dt then binds to.

Quoted 2 lines

Handling module removal would probably need to be added and tested. I feel not comfortable having such as a regression fix and for stable.

Applied this patch for now (with some changes to commit log), as there is no clean way to fix this for now. Got reports from other folks too about it.

Signature · 1 line
viresh
#4 lore raw
Quoted 14 lines · Viresh Kumar
Quoted 13 lines · Andreas Kemnade

no clear idea how. What aliases should I add? The cpufreq-dt-platdev is not a real driver, so I could not create mod_devicetable aliases to match a given device. It constructs a device under certain conditions depending on the board compatible, so no simple list of compatibles, it contains allow and blocklists.

cpufreq-dt then binds to that device and that one can be built as a module (which then made cpufreq-dt-platdev also a module, causing the trouble). I do not see any benefit from having cpufreq-dt-platdev as a module. ti-cpufreq has a similar role and is also just builtin. It does itself no real work but provides a device cpufreq-dt then binds to.

Quoted 5 lines
Quoted 2 lines

Handling module removal would probably need to be added and tested. I feel not comfortable having such as a regression fix and for stable.

Applied this patch for now (with some changes to commit log), as there is no clean way to fix this for now. Got reports from other folks too about it.

Oops, I thought I had replied to this earlier after detailed explanation from Andreas, but I guess I didn't.

Thanks for applying.

Kevin