WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ppc-devel

[XenPPC] [linux-ppc-2.6] [XEN][POWERPC] Switch to using power_save over

To: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Subject: [XenPPC] [linux-ppc-2.6] [XEN][POWERPC] Switch to using power_save over idle_loop for blocking
From: Xen patchbot-linux-ppc-2.6 <patchbot-linux-ppc-2.6@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 28 Aug 2006 21:02:26 +0000
Delivery-date: Mon, 28 Aug 2006 14:05:59 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
# Node ID 93507316d0a08aa566ceb1752f2b565ee1c384ad
# Parent  d7c010b63893b231e44f66ad658fa544cfae821f
[XEN][POWERPC] Switch to using power_save over idle_loop for blocking

It is debatable which is better, but usinf power_save makes more sense
to me.  By defining XENPPC_USE_IDLE in setup.c you can switch back and
forth to your hearts content.

Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
---
 arch/powerpc/platforms/xen/setup.c |   39 +++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff -r d7c010b63893 -r 93507316d0a0 arch/powerpc/platforms/xen/setup.c
--- a/arch/powerpc/platforms/xen/setup.c        Mon Aug 28 14:51:29 2006 -0400
+++ b/arch/powerpc/platforms/xen/setup.c        Mon Aug 28 15:10:14 2006 -0400
@@ -1,5 +1,6 @@
 
 #define DEBUG
+#undef XENPPC_USE_IDLE
 
 #include <linux/module.h>
 #include <linux/rwsem.h>
@@ -157,30 +158,37 @@ static u64 jiffies_to_ns(unsigned long j
        return j * (1000000000UL / HZ);
 }
 
+static void xen_power_save(void)
+{
+       /* SCHEDOP_yield could immediately return. Instead, we
+        * want to idle in the Xen idle domain, so use
+        * SCHEDOP_block with a one-shot timer. */
+       /* XXX do tickless stuff here. See
+        * linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c */
+       u64 now_ns = tb_to_ns(get_tb());
+       u64 offset_ns = jiffies_to_ns(1);
+       int rc;
+
+       rc = HYPERVISOR_set_timer_op(now_ns + offset_ns);
+       BUG_ON(rc != 0);
+
+       HYPERVISOR_sched_op(SCHEDOP_block, NULL);
+}
+
+#ifdef XENPPC_USE_IDLE
 static void xen_idle(void)
 {
        while (1) {
                local_irq_disable();
                if (!need_resched()) {
-                       /* SCHEDOP_yield could immediately return. Instead, we
-                        * want to idle in the Xen idle domain, so use
-                        * SCHEDOP_block with a one-shot timer. */
-                       /* XXX do tickless stuff here. See
-                        * linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c */
-                       u64 now_ns = tb_to_ns(get_tb());
-                       u64 offset_ns = jiffies_to_ns(1);
-                       int rc;
-
-                       rc = HYPERVISOR_set_timer_op(now_ns + offset_ns);
-                       BUG_ON(rc != 0);
-
-                       HYPERVISOR_sched_op(SCHEDOP_block, NULL);
+                       xen_power_save();
                }
                local_irq_enable();
 
                schedule();
        }
 }
+#endif
 
 #ifdef CONFIG_SMP
 
@@ -297,8 +305,11 @@ define_machine(xen) {
        .get_rtc_time           = 0,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = xen_progress,
+#ifdef XENPPC_USE_IDLE
        .idle_loop              = xen_idle,
-       .power_save             = xen_idle,     
+#else
+       .power_save             = xen_power_save,
+#endif
 #ifdef CONFIG_KEXEC
        .machine_kexec          = xen_machine_kexec,
        .machine_kexec_prepare  = xen_machine_kexec_prepare,

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel

<Prev in Thread] Current Thread [Next in Thread>
  • [XenPPC] [linux-ppc-2.6] [XEN][POWERPC] Switch to using power_save over idle_loop for blocking, Xen patchbot-linux-ppc-2 . 6 <=