Re: [patch 22/34] mips: Use generic idle loop

Srivatsa S. Bhat
2013-03-28T15:45:19Z

On 03/22/2013 03:23 AM, Thomas Gleixner wrote:
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ralf Baechle <ralf@linux-mips.org>
> ---
> arch/mips/Kconfig | 1
> arch/mips/kernel/process.c | 46 ++++++++++++---------------------------------
> arch/mips/kernel/smp.c | 2 -
> 3 files changed, 15 insertions(+), 34 deletions(-)
>
[...]

> Index: linux-2.6/arch/mips/kernel/process.c
> ===================================================================
> --- linux-2.6.orig/arch/mips/kernel/process.c
> +++ linux-2.6/arch/mips/kernel/process.c
> @@ -41,44 +41,24 @@
> #include <asm/inst.h>
> #include <asm/stacktrace.h>
>
> -/*
> - * The idle thread. There's no useful work to be done, so just try to conserve
> - * power and have a low exit latency (ie sit in a loop waiting for somebody to
> - * say that they'd like to reschedule)
> - */
> -void __noreturn cpu_idle(void)
> +void arch_cpu_idle_dead(void)
> {
> - int cpu;
> -
> - /* CPU is going idle. */
> - cpu = smp_processor_id();
> + /* What the heck is this check doing ? */
> + if (!cpu_isset(cpu, cpu_callin_map))
> + play_dead();}

Extra closing brace?

> +}
>
> - /* endless idle loop with no priority at all */
> - while (1) {
> - tick_nohz_idle_enter();
> - rcu_idle_enter();
> - while (!need_resched() && cpu_online(cpu)) {
> +void arch__cpu_idle(void)

s/arch__cpu_idle/arch_cpu_idle (single underscore)

Regards,
Srivatsa S. Bhat

> +{
> #ifdef CONFIG_MIPS_MT_SMTC
> - extern void smtc_idle_loop_hook(void);
> + extern void smtc_idle_loop_hook(void);
>
> - smtc_idle_loop_hook();
> + smtc_idle_loop_hook();
> #endif
> -
> - if (cpu_wait) {
> - /* Don't trace irqs off for idle */
> - stop_critical_timings();
> - (*cpu_wait)();
> - start_critical_timings();
> - }
> - }
> -#ifdef CONFIG_HOTPLUG_CPU
> - if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map))
> - play_dead();
> -#endif
> - rcu_idle_exit();
> - tick_nohz_idle_exit();
> - schedule_preempt_disabled();
> - }
> + if (cpu_wait)
> + (*cpu_wait)();
> + else
> + local_irq_enable();
> }
>