All of lore.kernel.org
 help / color / mirror / Atom feed
From: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
To: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-arch@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Paul McKenney <paulmck@linux.vnet.ibm.com>,
	Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <peterz@infradead.org>,
	Magnus Damm <magnus.damm@gmail.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Preeti U Murthy <preeti@linux.vnet.ibm.com>,
	Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Subject: Re: [patch 26/34] powerpc: Use generic idle loop
Date: Mon, 01 Apr 2013 14:43:57 +0530	[thread overview]
Message-ID: <51594FD5.6030204@linux.vnet.ibm.com> (raw)
In-Reply-To: <51546452.3090408@linux.vnet.ibm.com>

On 03/28/2013 09:10 PM, Srivatsa S. Bhat wrote:
> On 03/22/2013 03:23 AM, Thomas Gleixner wrote:
>> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>> ---
> [...]
>> Index: linux-2.6/arch/powerpc/kernel/idle.c
>> ===================================================================
>> --- linux-2.6.orig/arch/powerpc/kernel/idle.c
>> +++ linux-2.6/arch/powerpc/kernel/idle.c
>> @@ -50,64 +50,30 @@ static int __init powersave_off(char *ar
>>  }
>>  __setup("powersave=off", powersave_off);
>>
>> -/*
>> - * The body of the idle task.
>> - */
>> -void cpu_idle(void)
>> +void arch_cpu_idle(void)
>>  {
>> -	set_thread_flag(TIF_POLLING_NRFLAG);
>> -	while (1) {
>> -		tick_nohz_idle_enter();
>> -		rcu_idle_enter();
>> -
>> -		while (!need_resched() && !cpu_should_die()) {
>> -			ppc64_runlatch_off();
>> -
>> -			if (ppc_md.power_save) {
>> -				clear_thread_flag(TIF_POLLING_NRFLAG);
>> -				/*
>> -				 * smp_mb is so clearing of TIF_POLLING_NRFLAG
>> -				 * is ordered w.r.t. need_resched() test.
>> -				 */
>> -				smp_mb();
>> -				local_irq_disable();
>> -
>> -				/* Don't trace irqs off for idle */
>> -				stop_critical_timings();
>> -
>> -				/* check again after disabling irqs */
>> -				if (!need_resched() && !cpu_should_die())
>> -					ppc_md.power_save();
>> -
>> -				start_critical_timings();
>> -
>> -				/* Some power_save functions return with
>> -				 * interrupts enabled, some don't.
>> -				 */
>> -				if (irqs_disabled())
>> -					local_irq_enable();
>> -				set_thread_flag(TIF_POLLING_NRFLAG);
>> -
>> -			} else {
>> -				/*
>> -				 * Go into low thread priority and possibly
>> -				 * low power mode.
>> -				 */
>> -				HMT_low();
>> -				HMT_very_low();
>> -			}
>> -		}
>> -
>> -		HMT_medium();
>> -		ppc64_runlatch_on();
>> -		rcu_idle_exit();
>> -		tick_nohz_idle_exit();
>> -		if (cpu_should_die()) {
>> -			sched_preempt_enable_no_resched();
>> -			cpu_die();
>> -		}
>> -		schedule_preempt_disabled();
>> +	ppc64_runlatch_off();
>> +
>> +	if (ppc_md.power_save) {
>> +		ppc_md.power_save();
>> +		/*
>> +		 * Some power_save functions return with
>> +		 * interrupts enabled, some don't.
>> +		 */
>> +		if (irqs_disabled())
>> +			local_irq_enable();
>> +	} else {
>> +		local_irq_enable();
>> +		/*
>> +		 * Go into low thread priority and possibly
>> +		 * low power mode.
>> +		 */
>> +		HMT_low();
>> +		HMT_very_low();
>>  	}
>> +
>> +	HMT_medium();
>> +	ppc64_runlatch_on();
>>  }
>>

The below patch is essential to get hotplug working on POWER.
With that, generic idle loop works fine for PSERIES.

Tested-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>

> 
> The call to cpu_die() seems to be missing. And considering this commit,
> 
> commit a7c2bb8279d20d853e43c34584eaf2b039de8026
> Author: Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
> Date:   Wed Aug 4 18:28:33 2010 +0000
> 
>     powerpc: Re-enable preemption before cpu_die()
> 
> we need to call it with preempt enabled. So how about folding the
> following diff with this patch?
> 
> 
> diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
> index b751baa..e434fb9 100644
> --- a/arch/powerpc/kernel/idle.c
> +++ b/arch/powerpc/kernel/idle.c
> @@ -33,11 +33,6 @@
>  #include <asm/runlatch.h>
>  #include <asm/smp.h>
> 
> -#ifdef CONFIG_HOTPLUG_CPU
> -#define cpu_should_die()	cpu_is_offline(smp_processor_id())
> -#else
> -#define cpu_should_die()	0
> -#endif
> 
>  unsigned long cpuidle_disable = IDLE_NO_OVERRIDE;
>  EXPORT_SYMBOL(cpuidle_disable);
> @@ -50,6 +45,12 @@ static int __init powersave_off(char *arg)
>  }
>  __setup("powersave=off", powersave_off);
> 
> +void arch_cpu_idle_dead(void)
> +{
> +	sched_preempt_enable_no_resched();
> +	cpu_die();
> +}
> +
>  void arch_cpu_idle(void)
>  {
>  	ppc64_runlatch_off();
> 
> 
> Regards,
> Srivatsa S. Bhat
> 


  reply	other threads:[~2013-04-01  9:16 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-21 21:52 [patch 00/34] idle: Consolidate idle implementations Thomas Gleixner
2013-03-21 21:52 ` [patch 01/34] arch: Cleanup enable/disable_hlt Thomas Gleixner
2013-04-08 20:08   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:52 ` [patch 02/34] arch: Consolidate tsk_is_polling() Thomas Gleixner
2013-03-22  5:01   ` Tony Breeds
2013-03-22  5:20   ` Tony Breeds
2013-03-22  9:26     ` Thomas Gleixner
2013-04-08 20:09   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:52 ` [patch 03/34] idle: Implement set/clr functions for need_resched poll Thomas Gleixner
2013-03-22  9:38   ` James Hogan
2013-03-22  9:38     ` James Hogan
2013-04-08 20:10   ` [tip:smp/hotplug] idle: Implement set/ clr " tip-bot for Thomas Gleixner
2013-03-21 21:52 ` [patch 04/34] idle: Provide a generic entry point for the idle code Thomas Gleixner
2013-04-08 20:12   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-04-14  0:42     ` Yinghai Lu
2013-03-21 21:53 ` [patch 06/34] arc: Use generic idle loop Thomas Gleixner
2013-03-22  9:02   ` Vineet Gupta
2013-03-22  9:02     ` Vineet Gupta
2013-04-08 20:15   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 05/34] idle: Implement generic idle function Thomas Gleixner
2013-03-23  8:56   ` Heiko Carstens
2013-03-25 10:39     ` Thomas Gleixner
2013-03-28 15:39   ` Srivatsa S. Bhat
2013-04-08 20:14   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-04-15 22:25     ` Tony Luck
2013-04-16 13:28       ` Thomas Gleixner
2013-04-16 18:25         ` Tony Luck
2013-04-16 18:35           ` [PATCH] ia64: Make sure interrupts enabled when we "safe_halt()" Luck, Tony
2013-04-17  9:00             ` [tip:smp/hotplug] ia64: Make sure interrupts enabled when we " safe_halt()" tip-bot for Luck, Tony
2013-11-18  6:05   ` [patch 05/34] idle: Implement generic idle function Viresh Kumar
2013-11-22 22:32     ` Thomas Gleixner
2013-03-21 21:53 ` [patch 07/34] alpha: Use generic idle loop Thomas Gleixner
2013-03-28 15:37   ` Srivatsa S. Bhat
2013-03-29 11:22     ` Thomas Gleixner
2013-04-08 20:16   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 08/34] arm: " Thomas Gleixner
2013-03-22 21:24   ` Kevin Hilman
2013-03-25 11:31     ` Thomas Gleixner
2013-03-25 11:48       ` Russell King - ARM Linux
2013-03-25 14:02         ` Thomas Gleixner
2013-04-08 21:47           ` Russell King - ARM Linux
2013-04-09  9:20             ` Thomas Gleixner
2013-04-09  9:38               ` Russell King - ARM Linux
2013-04-25 20:03                 ` Stephen Boyd
2013-04-25 21:01                   ` Thomas Gleixner
2013-05-01  0:49                     ` Stephen Boyd
2013-05-01  0:55                       ` Paul E. McKenney
2013-05-01  0:55                         ` Paul E. McKenney
2013-05-21  0:57                         ` [PATCH] ARM: smp: Drop RCU_NONIDLE usage in cpu_die() Stephen Boyd
2013-04-08 20:17   ` [tip:smp/hotplug] arm: Use generic idle loop tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 09/34] arm64: " Thomas Gleixner
2013-03-25 18:06   ` Catalin Marinas
2013-04-08 20:18   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 10/34] avr32: " Thomas Gleixner
2013-04-08 20:20   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-04-09  7:31     ` Hans-Christian Egtvedt
2013-03-21 21:53 ` [patch 12/34] c6x: " Thomas Gleixner
2013-04-08 20:22   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 11/34] bfin: " Thomas Gleixner
2013-04-08 20:21   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 13/34] cris: " Thomas Gleixner
2013-03-27 15:04   ` Jesper Nilsson
2013-03-27 17:10     ` Thomas Gleixner
2013-04-08 20:23   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 14/34] frv: " Thomas Gleixner
2013-04-08 20:24   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 15/34] h8300: " Thomas Gleixner
2013-04-08 20:26   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 16/34] hexagon: " Thomas Gleixner
2013-04-08 20:27   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 18/34] m32r: " Thomas Gleixner
2013-04-08 20:29   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 17/34] ia64: " Thomas Gleixner
2013-03-28 15:40   ` Srivatsa S. Bhat
2013-04-08 20:28   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 19/34] m68k: " Thomas Gleixner
2013-04-08 20:30   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 20/34] metag: " Thomas Gleixner
2013-03-22 10:16   ` James Hogan
2013-03-22 10:16     ` James Hogan
2013-03-25 11:26     ` Thomas Gleixner
2013-04-08 20:32   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 21/34] microblaze: " Thomas Gleixner
2013-04-08 20:33   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 22/34] mips: " Thomas Gleixner
2013-03-28 15:42   ` Srivatsa S. Bhat
2013-04-08 20:34   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 24/34] openrisc: " Thomas Gleixner
2013-04-08 20:36   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 23/34] mn10300: " Thomas Gleixner
2013-04-08 20:35   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 25/34] parisc: " Thomas Gleixner
2013-04-08 20:38   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 26/34] powerpc: " Thomas Gleixner
2013-03-28 15:40   ` Srivatsa S. Bhat
2013-04-01  9:13     ` Deepthi Dharwar [this message]
2013-04-08 20:39   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 27/34] s390: " Thomas Gleixner
2013-03-23  9:38   ` Heiko Carstens
2013-03-23  9:39   ` Heiko Carstens
2013-03-23  9:39     ` Heiko Carstens
2013-04-08 20:40   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 28/34] score: " Thomas Gleixner
2013-04-08 20:41   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 29/34] sh: " Thomas Gleixner
2013-03-28 15:40   ` Srivatsa S. Bhat
2013-04-08 20:42   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 30/34] tile: Enter idle with preemption disabled Thomas Gleixner
2013-03-22 20:34   ` Chris Metcalf
2013-03-22 20:34     ` Chris Metcalf
2013-03-22 20:40   ` Chris Metcalf
2013-03-22 20:40     ` Chris Metcalf
2013-03-28 15:43   ` Srivatsa S. Bhat
2013-04-08 20:44   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 31/34] tile: Use generic idle loop Thomas Gleixner
2013-03-28 15:41   ` Srivatsa S. Bhat
2013-03-29 11:24     ` Thomas Gleixner
2013-04-08 20:45   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 32/34] unicore: " Thomas Gleixner
2013-04-08 20:46   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 33/34] x86: " Thomas Gleixner
2013-03-28 15:43   ` Srivatsa S. Bhat
2013-04-08 20:47   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-21 21:53 ` [patch 34/34] xtensa: " Thomas Gleixner
2013-03-22 12:37   ` Max Filippov
2013-04-08 20:48   ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2013-03-22 20:09 ` [patch 00/34] idle: Consolidate idle implementations Sam Ravnborg
     [not found] ` <alpine.LFD.2.02.1303271940150.22263@ionos>
     [not found]   ` <5153EC43.7070808@zankel.net>
2013-03-28  9:24     ` Thomas Gleixner
2013-03-28 22:16       ` Chris Zankel
2013-03-29 16:19 ` Sam Ravnborg
2013-03-29 20:29   ` [PATCH] sparc: Use generic idle loop Sam Ravnborg
2013-03-31 23:46     ` David Miller
2013-04-01  6:53     ` Srivatsa S. Bhat
2013-04-01  9:06       ` Sam Ravnborg
2013-04-01  9:06         ` Sam Ravnborg
2013-04-01  9:06         ` Sam Ravnborg
2013-04-08 12:33         ` Srivatsa S. Bhat
2013-04-08 17:10           ` Sam Ravnborg
2013-04-08 19:24             ` David Miller
2013-04-11 19:38               ` [PATCH v2] " Sam Ravnborg
2013-04-11 19:38                 ` Sam Ravnborg
2013-04-11 19:38                 ` Sam Ravnborg
2013-04-12 18:56                 ` Thomas Gleixner
2013-04-12 18:58                   ` David Miller
2013-04-13 19:53                 ` [tip:smp/hotplug] " tip-bot for Sam Ravnborg
2013-05-03  9:47 ` [patch 00/34] idle: Consolidate idle implementations Geert Uytterhoeven
2013-05-03  9:47   ` Geert Uytterhoeven

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51594FD5.6030204@linux.vnet.ibm.com \
    --to=deepthi@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mingo@elte.hu \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=rusty@rustcorp.com.au \
    --cc=srivatsa.bhat@linux.vnet.ibm.com \
    --cc=svaidy@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.