Message ID | 1303804097-488-1-git-send-email-daniel@gaisler.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
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
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 --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();
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com> --- arch/sparc/kernel/process_32.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)