| From 4719a1e186a52bcfcfd6915b1144056ab3a4c8a5 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 23 Mar 2021 14:56:08 +0000 |
| Subject: PM: EM: postpone creating the debugfs dir till fs_initcall |
| |
| From: Lukasz Luba <lukasz.luba@arm.com> |
| |
| [ Upstream commit fb9d62b27ab1e07d625591549c314b7d406d21df ] |
| |
| The debugfs directory '/sys/kernel/debug/energy_model' is needed before |
| the Energy Model registration can happen. With the recent change in |
| debugfs subsystem it's not allowed to create this directory at early |
| stage (core_initcall). Thus creating this directory would fail. |
| |
| Postpone the creation of the EM debug dir to later stage: fs_initcall. |
| |
| It should be safe since all clients: CPUFreq drivers, Devfreq drivers |
| will be initialized in later stages. |
| |
| The custom debug log below prints the time of creation the EM debug dir |
| at fs_initcall and successful registration of EMs at later stages. |
| |
| [ 1.505717] energy_model: creating rootdir |
| [ 3.698307] cpu cpu0: EM: created perf domain |
| [ 3.709022] cpu cpu1: EM: created perf domain |
| |
| Fixes: 56348560d495 ("debugfs: do not attempt to create a new file before the filesystem is initalized") |
| Reported-by: Ionela Voinescu <ionela.voinescu@arm.com> |
| Signed-off-by: Lukasz Luba <lukasz.luba@arm.com> |
| Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| kernel/power/energy_model.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c |
| index 0a9326f5f421..8dac32bd9089 100644 |
| --- a/kernel/power/energy_model.c |
| +++ b/kernel/power/energy_model.c |
| @@ -74,7 +74,7 @@ static int __init em_debug_init(void) |
| |
| return 0; |
| } |
| -core_initcall(em_debug_init); |
| +fs_initcall(em_debug_init); |
| #else /* CONFIG_DEBUG_FS */ |
| static void em_debug_create_pd(struct em_perf_domain *pd, int cpu) {} |
| #endif |
| -- |
| 2.30.1 |
| |