[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <57BC5CB4.409@linaro.org>
Date: Tue, 23 Aug 2016 16:24:52 +0200
From: Daniel Lezcano <daniel.lezcano@...aro.org>
To: Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
linux-kernel@...r.kernel.org
Cc: Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>, rt@...utronix.de,
"Rafael J. Wysocki" <rjw@...ysocki.net>, linux-pm@...r.kernel.org
Subject: Re: [PATCH 12/16] cpuidle: coupled: Convert to hotplug state machine
On 08/18/2016 02:57 PM, Sebastian Andrzej Siewior wrote:
> Install the callbacks via the state machine.
>
> Cc: "Rafael J. Wysocki" <rjw@...ysocki.net>
> Cc: Daniel Lezcano <daniel.lezcano@...aro.org>
> Cc: linux-pm@...r.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
> ---
[ ... ]
> -
> mutex_lock(&cpuidle_lock);
>
> dev = per_cpu(cpuidle_devices, cpu);
> if (!dev || !dev->coupled)
> goto out;
>
> - switch (action & ~CPU_TASKS_FROZEN) {
> - case CPU_UP_PREPARE:
> - case CPU_DOWN_PREPARE:
> - cpuidle_coupled_prevent_idle(dev->coupled);
> - break;
> - case CPU_ONLINE:
> - case CPU_DEAD:
> - cpuidle_coupled_update_online_cpus(dev->coupled);
> - /* Fall through */
> - case CPU_UP_CANCELED:
> - case CPU_DOWN_FAILED:
> - cpuidle_coupled_allow_idle(dev->coupled);
> - break;
> - }
> -
> + cpuidle_coupled_update_online_cpus(dev->coupled);
> + cpuidle_coupled_allow_idle(dev->coupled);
> out:
> mutex_unlock(&cpuidle_lock);
> - return NOTIFY_OK;
> + return 0;
You can remove the useless label 'out':
if (dev && dev->coupled) {
cpuidle_coupled_update_online_cpus(dev->coupled);
cpuidle_coupled_allow_idle(dev->coupled);
}
> }
>
> -static struct notifier_block cpuidle_coupled_cpu_notifier = {
> - .notifier_call = cpuidle_coupled_cpu_notify,
> -};
> +static int coupled_cpu_up_prepare(unsigned int cpu)
> +{
> + struct cpuidle_device *dev;
> +
> + mutex_lock(&cpuidle_lock);
> +
> + dev = per_cpu(cpuidle_devices, cpu);
> + if (!dev || !dev->coupled)
> + goto out;
> +
> + cpuidle_coupled_prevent_idle(dev->coupled);
> +out:
> + mutex_unlock(&cpuidle_lock);
> + return 0;
Same comment here.
> +}
>
> static int __init cpuidle_coupled_init(void)
> {
> - return register_cpu_notifier(&cpuidle_coupled_cpu_notifier);
> + int ret;
> +
> + ret = cpuhp_setup_state_nocalls(CPUHP_CPUIDLE_COUPLED_PREPARE,
> + "CPUIDLE_COUPLED_PREPARE",
> + coupled_cpu_up_prepare,
> + coupled_cpu_online);
> + if (ret)
> + goto err;
There is nothing to undo here.
if (ret)
return ret;
> + ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
> + "CPUIDLE_COUPLED_ONLINE",
> + coupled_cpu_online,
> + coupled_cpu_up_prepare);
> + if (ret < 0)
> + goto err;
if (ret)
cpuhp_remove_state_nocalls(
CPUHP_CPUIDLE_COUPLED_PREPARE);
return ret;
> + return 0;
> +err:
> + cpuhp_remove_state_nocalls(CPUHP_CPUIDLE_COUPLED_PREPARE);
> + return ret;
^^^^^ zaaap !
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
Powered by blists - more mailing lists