Re: [PATCH 04/14] sched: cpufreq: Move sched_cpufreq_governor_change()

2020-05-08 Thread Quentin Perret
On Friday 08 May 2020 at 11:05:23 (+0530), Pavan Kondeti wrote:
> In the previous patch, you removed reference to schedutil and replaced it with
> " an EAS-compatible CPUfreq governor (schedutil)". May be you could do the
> same here.

Good point, I add it to the todo list for v2 ;)

Thanks,
Quentin


Re: [PATCH 04/14] sched: cpufreq: Move sched_cpufreq_governor_change()

2020-05-07 Thread Pavan Kondeti
On Thu, May 07, 2020 at 07:10:02PM +0100, Quentin Perret wrote:
> CPUFreq calls into sched_cpufreq_governor_change() when switching
> governors, which triggers a sched domain rebuild when entering or
> exiting schedutil.
> 
> Move the function to sched/cpufreq.c to prepare the ground for the
> modularization of schedutil.
> 
> Signed-off-by: Quentin Perret 
> ---
>  kernel/sched/cpufreq.c   | 33 
>  kernel/sched/cpufreq_schedutil.c | 33 
>  2 files changed, 33 insertions(+), 33 deletions(-)
> 
> diff --git a/kernel/sched/cpufreq.c b/kernel/sched/cpufreq.c
> index 7c2fe50fd76d..82f2dda61a55 100644
> --- a/kernel/sched/cpufreq.c
> +++ b/kernel/sched/cpufreq.c
> @@ -75,3 +75,36 @@ bool cpufreq_this_cpu_can_update(struct cpufreq_policy 
> *policy)
>   (policy->dvfs_possible_from_any_cpu &&
>
> rcu_dereference_sched(*this_cpu_ptr(_update_util_data)));
>  }
> +
> +#ifdef CONFIG_ENERGY_MODEL
> +extern bool sched_energy_update;
> +extern struct mutex sched_energy_mutex;
> +
> +static void rebuild_sd_workfn(struct work_struct *work)
> +{
> + mutex_lock(_energy_mutex);
> + sched_energy_update = true;
> + rebuild_sched_domains();
> + sched_energy_update = false;
> + mutex_unlock(_energy_mutex);
> +}
> +static DECLARE_WORK(rebuild_sd_work, rebuild_sd_workfn);
> +
> +/*
> + * EAS shouldn't be attempted without sugov, so rebuild the sched_domains
> + * on governor changes to make sure the scheduler knows about it.
> + */

In the previous patch, you removed reference to schedutil and replaced it with
" an EAS-compatible CPUfreq governor (schedutil)". May be you could do the
same here.

Thanks,
Pavan

-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux 
Foundation Collaborative Project.


[PATCH 04/14] sched: cpufreq: Move sched_cpufreq_governor_change()

2020-05-07 Thread Quentin Perret
CPUFreq calls into sched_cpufreq_governor_change() when switching
governors, which triggers a sched domain rebuild when entering or
exiting schedutil.

Move the function to sched/cpufreq.c to prepare the ground for the
modularization of schedutil.

Signed-off-by: Quentin Perret 
---
 kernel/sched/cpufreq.c   | 33 
 kernel/sched/cpufreq_schedutil.c | 33 
 2 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/kernel/sched/cpufreq.c b/kernel/sched/cpufreq.c
index 7c2fe50fd76d..82f2dda61a55 100644
--- a/kernel/sched/cpufreq.c
+++ b/kernel/sched/cpufreq.c
@@ -75,3 +75,36 @@ bool cpufreq_this_cpu_can_update(struct cpufreq_policy 
*policy)
(policy->dvfs_possible_from_any_cpu &&
 
rcu_dereference_sched(*this_cpu_ptr(_update_util_data)));
 }
+
+#ifdef CONFIG_ENERGY_MODEL
+extern bool sched_energy_update;
+extern struct mutex sched_energy_mutex;
+
+static void rebuild_sd_workfn(struct work_struct *work)
+{
+   mutex_lock(_energy_mutex);
+   sched_energy_update = true;
+   rebuild_sched_domains();
+   sched_energy_update = false;
+   mutex_unlock(_energy_mutex);
+}
+static DECLARE_WORK(rebuild_sd_work, rebuild_sd_workfn);
+
+/*
+ * EAS shouldn't be attempted without sugov, so rebuild the sched_domains
+ * on governor changes to make sure the scheduler knows about it.
+ */
+void sched_cpufreq_governor_change(struct cpufreq_policy *policy,
+ struct cpufreq_governor *old_gov)
+{
+   if ((old_gov && old_gov->want_eas) || policy->governor->want_eas) {
+   /*
+* When called from the cpufreq_register_driver() path, the
+* cpu_hotplug_lock is already held, so use a work item to
+* avoid nested locking in rebuild_sched_domains().
+*/
+   schedule_work(_sd_work);
+   }
+
+}
+#endif
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index c5e5045f7c81..33e67c48f668 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -905,36 +905,3 @@ static int __init sugov_register(void)
return cpufreq_register_governor(_gov);
 }
 core_initcall(sugov_register);
-
-#ifdef CONFIG_ENERGY_MODEL
-extern bool sched_energy_update;
-extern struct mutex sched_energy_mutex;
-
-static void rebuild_sd_workfn(struct work_struct *work)
-{
-   mutex_lock(_energy_mutex);
-   sched_energy_update = true;
-   rebuild_sched_domains();
-   sched_energy_update = false;
-   mutex_unlock(_energy_mutex);
-}
-static DECLARE_WORK(rebuild_sd_work, rebuild_sd_workfn);
-
-/*
- * EAS shouldn't be attempted without sugov, so rebuild the sched_domains
- * on governor changes to make sure the scheduler knows about it.
- */
-void sched_cpufreq_governor_change(struct cpufreq_policy *policy,
- struct cpufreq_governor *old_gov)
-{
-   if ((old_gov && old_gov->want_eas) || policy->governor->want_eas) {
-   /*
-* When called from the cpufreq_register_driver() path, the
-* cpu_hotplug_lock is already held, so use a work item to
-* avoid nested locking in rebuild_sched_domains().
-*/
-   schedule_work(_sd_work);
-   }
-
-}
-#endif
-- 
2.26.2.526.g744177e7f7-goog