tree e741dfb082e94685c6cb0d1ccc3616c216af7c7a
parent fd899c0cc725387992ccfc83fb6f70505c36cbeb
author Michael Ellerman <[EMAIL PROTECTED]> Fri, 08 Jul 2005 07:56:29 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Fri, 08 Jul 2005 08:23:40 -0700

[PATCH] ppc64: Move iSeries_idle() into iSeries_setup.c

Move iSeries_idle() into iSeries_setup.c, no one else needs to know about it.

Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>
Signed-off-by: Anton Blanchard <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 arch/ppc64/kernel/iSeries_setup.c |   81 +++++++++++++++++++++++++++++++++++
 arch/ppc64/kernel/idle.c          |   86 --------------------------------------
 2 files changed, 81 insertions(+), 86 deletions(-)

diff --git a/arch/ppc64/kernel/iSeries_setup.c 
b/arch/ppc64/kernel/iSeries_setup.c
--- a/arch/ppc64/kernel/iSeries_setup.c
+++ b/arch/ppc64/kernel/iSeries_setup.c
@@ -834,6 +834,87 @@ static int __init iSeries_src_init(void)
 
 late_initcall(iSeries_src_init);
 
+static unsigned long maxYieldTime = 0;
+static unsigned long minYieldTime = 0xffffffffffffffffUL;
+
+static inline void process_iSeries_events(void)
+{
+       asm volatile ("li 0,0x5555; sc" : : : "r0", "r3");
+}
+
+static void yield_shared_processor(void)
+{
+       unsigned long tb;
+       unsigned long yieldTime;
+
+       HvCall_setEnabledInterrupts(HvCall_MaskIPI |
+                                   HvCall_MaskLpEvent |
+                                   HvCall_MaskLpProd |
+                                   HvCall_MaskTimeout);
+
+       tb = get_tb();
+       /* Compute future tb value when yield should expire */
+       HvCall_yieldProcessor(HvCall_YieldTimed, tb+tb_ticks_per_jiffy);
+
+       yieldTime = get_tb() - tb;
+       if (yieldTime > maxYieldTime)
+               maxYieldTime = yieldTime;
+
+       if (yieldTime < minYieldTime)
+               minYieldTime = yieldTime;
+
+       /*
+        * The decrementer stops during the yield.  Force a fake decrementer
+        * here and let the timer_interrupt code sort out the actual time.
+        */
+       get_paca()->lppaca.int_dword.fields.decr_int = 1;
+       process_iSeries_events();
+}
+
+static int iSeries_idle(void)
+{
+       struct paca_struct *lpaca;
+       long oldval;
+
+       /* ensure iSeries run light will be out when idle */
+       ppc64_runlatch_off();
+
+       lpaca = get_paca();
+
+       while (1) {
+               if (lpaca->lppaca.shared_proc) {
+                       if (hvlpevent_is_pending())
+                               process_iSeries_events();
+                       if (!need_resched())
+                               yield_shared_processor();
+               } else {
+                       oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED);
+
+                       if (!oldval) {
+                               set_thread_flag(TIF_POLLING_NRFLAG);
+
+                               while (!need_resched()) {
+                                       HMT_medium();
+                                       if (hvlpevent_is_pending())
+                                               process_iSeries_events();
+                                       HMT_low();
+                               }
+
+                               HMT_medium();
+                               clear_thread_flag(TIF_POLLING_NRFLAG);
+                       } else {
+                               set_need_resched();
+                       }
+               }
+
+               ppc64_runlatch_on();
+               schedule();
+               ppc64_runlatch_off();
+       }
+
+       return 0;
+}
+
 #ifndef CONFIG_PCI
 void __init iSeries_init_IRQ(void) { }
 #endif
diff --git a/arch/ppc64/kernel/idle.c b/arch/ppc64/kernel/idle.c
--- a/arch/ppc64/kernel/idle.c
+++ b/arch/ppc64/kernel/idle.c
@@ -39,90 +39,6 @@ extern void power4_idle(void);
 
 static int (*idle_loop)(void);
 
-#ifdef CONFIG_PPC_ISERIES
-static unsigned long maxYieldTime = 0;
-static unsigned long minYieldTime = 0xffffffffffffffffUL;
-
-static inline void process_iSeries_events(void)
-{
-       asm volatile ("li 0,0x5555; sc" : : : "r0", "r3");
-}
-
-static void yield_shared_processor(void)
-{
-       unsigned long tb;
-       unsigned long yieldTime;
-
-       HvCall_setEnabledInterrupts(HvCall_MaskIPI |
-                                   HvCall_MaskLpEvent |
-                                   HvCall_MaskLpProd |
-                                   HvCall_MaskTimeout);
-
-       tb = get_tb();
-       /* Compute future tb value when yield should expire */
-       HvCall_yieldProcessor(HvCall_YieldTimed, tb+tb_ticks_per_jiffy);
-
-       yieldTime = get_tb() - tb;
-       if (yieldTime > maxYieldTime)
-               maxYieldTime = yieldTime;
-
-       if (yieldTime < minYieldTime)
-               minYieldTime = yieldTime;
-       
-       /*
-        * The decrementer stops during the yield.  Force a fake decrementer
-        * here and let the timer_interrupt code sort out the actual time.
-        */
-       get_paca()->lppaca.int_dword.fields.decr_int = 1;
-       process_iSeries_events();
-}
-
-static int iSeries_idle(void)
-{
-       struct paca_struct *lpaca;
-       long oldval;
-
-       /* ensure iSeries run light will be out when idle */
-       ppc64_runlatch_off();
-
-       lpaca = get_paca();
-
-       while (1) {
-               if (lpaca->lppaca.shared_proc) {
-                       if (hvlpevent_is_pending())
-                               process_iSeries_events();
-                       if (!need_resched())
-                               yield_shared_processor();
-               } else {
-                       oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED);
-
-                       if (!oldval) {
-                               set_thread_flag(TIF_POLLING_NRFLAG);
-
-                               while (!need_resched()) {
-                                       HMT_medium();
-                                       if (hvlpevent_is_pending())
-                                               process_iSeries_events();
-                                       HMT_low();
-                               }
-
-                               HMT_medium();
-                               clear_thread_flag(TIF_POLLING_NRFLAG);
-                       } else {
-                               set_need_resched();
-                       }
-               }
-
-               ppc64_runlatch_on();
-               schedule();
-               ppc64_runlatch_off();
-       }
-
-       return 0;
-}
-
-#else
-
 int default_idle(void)
 {
        long oldval;
@@ -305,8 +221,6 @@ int native_idle(void)
        return 0;
 }
 
-#endif /* CONFIG_PPC_ISERIES */
-
 void cpu_idle(void)
 {
        BUG_ON(NULL == ppc_md.idle_loop);
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to