diff mbox

sparc32,leon: SMP power down implementation

Message ID 1303804097-488-1-git-send-email-daniel@gaisler.com
State Accepted
Delegated to: David Miller
Headers show

Commit Message

Daniel Hellstrom April 26, 2011, 7:48 a.m. UTC
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
---
 arch/sparc/kernel/process_32.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

Comments

Daniel Hellstrom April 26, 2011, 7:53 a.m. UTC | #1
Daniel Hellstrom wrote:

>Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
>---
> arch/sparc/kernel/process_32.c |   12 ++++++++++--
> 1 files changed, 10 insertions(+), 2 deletions(-)
>
>diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
>index 1752929..c8cc461 100644
>--- a/arch/sparc/kernel/process_32.c
>+++ b/arch/sparc/kernel/process_32.c
>@@ -128,8 +128,16 @@ void cpu_idle(void)
>         set_thread_flag(TIF_POLLING_NRFLAG);
> 	/* endless idle loop with no priority at all */
> 	while(1) {
>-		while (!need_resched())
>-			cpu_relax();
>+#ifdef CONFIG_SPARC_LEON
>+		if (pm_idle) {
>+			while (!need_resched())
>+				(*pm_idle)();
>+		} else
>+#endif
>+		{
>+			while (!need_resched())
>+				cpu_relax();
>+		}
>  
>

I have made this CONFIG_SPARC_LEON because I'm not sure if other SMP 
SPARC32 supports the pmc idle. One can see from row 109 above that in 
single-processor pmc_idle() is called in the same mannor, however no for 
SMP... perhaps it is a meaning with that? I don't want to break 
anything, if you think is shuold not be ifdeffed I will remove it and 
repost.

Daniel
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller May 16, 2011, 8:04 p.m. UTC | #2
From: Daniel Hellstrom <daniel@gaisler.com>
Date: Tue, 26 Apr 2011 09:48:17 +0200

> Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index 1752929..c8cc461 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -128,8 +128,16 @@  void cpu_idle(void)
         set_thread_flag(TIF_POLLING_NRFLAG);
 	/* endless idle loop with no priority at all */
 	while(1) {
-		while (!need_resched())
-			cpu_relax();
+#ifdef CONFIG_SPARC_LEON
+		if (pm_idle) {
+			while (!need_resched())
+				(*pm_idle)();
+		} else
+#endif
+		{
+			while (!need_resched())
+				cpu_relax();
+		}
 		preempt_enable_no_resched();
 		schedule();
 		preempt_disable();