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-changelog

[Xen-changelog] [xen-unstable] Revert 21180:11423ce78ee0, 21181:9d5ecf79

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Revert 21180:11423ce78ee0, 21181:9d5ecf79f1b5, 21185:fddff17c7c74.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Apr 2010 18:50:23 -0700
Delivery-date: Mon, 19 Apr 2010 18:51:57 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1271672166 -3600
# Node ID 700da767f797c49f06ae3e19a55ab6d40342b986
# Parent  6bf069a423183f5b8e7301f94e64cbe71458b5ee
Revert 21180:11423ce78ee0, 21181:9d5ecf79f1b5, 21185:fddff17c7c74.

Unnecessary now that tasklets run in vcpu context.

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/arch/x86/acpi/power.c |   80 +++++++++++++++++++---------------------------
 1 files changed, 34 insertions(+), 46 deletions(-)

diff -r 6bf069a42318 -r 700da767f797 xen/arch/x86/acpi/power.c
--- a/xen/arch/x86/acpi/power.c Mon Apr 19 11:07:14 2010 +0100
+++ b/xen/arch/x86/acpi/power.c Mon Apr 19 11:16:06 2010 +0100
@@ -74,30 +74,27 @@ static void device_power_up(void)
     console_resume();
 }
 
-static int freeze_domains(void)
+static void freeze_domains(void)
 {
     struct domain *d;
     struct vcpu *v;
 
-    if ( !spin_trylock(&current->domain->hypercall_deadlock_mutex) )
-        return -EBUSY;
-
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
     {
-        for_each_vcpu ( d, v )
+        switch ( d->domain_id )
         {
-            if ( v != current )
-                vcpu_pause(v);
-            else
-                vcpu_pause_nosync(v);
+        case 0:
+            for_each_vcpu ( d, v )
+                if ( v != current )
+                    vcpu_pause(v);
+            break;
+        default:
+            domain_pause(d);
+            break;
         }
     }
     rcu_read_unlock(&domlist_read_lock);
-
-    spin_unlock(&current->domain->hypercall_deadlock_mutex);
-
-    return 0;
 }
 
 static void thaw_domains(void)
@@ -108,8 +105,17 @@ static void thaw_domains(void)
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
     {
-        for_each_vcpu ( d, v )
-            vcpu_unpause(v);
+        switch ( d->domain_id )
+        {
+        case 0:
+            for_each_vcpu ( d, v )
+                if ( v != current )
+                    vcpu_unpause(v);
+            break;
+        default:
+            domain_unpause(d);
+            break;
+        }
     }
     rcu_read_unlock(&domlist_read_lock);
 }
@@ -143,7 +149,15 @@ static int enter_state(u32 state)
     int error;
     unsigned long cr4;
 
-    BUG_ON(!spin_is_locked(&pm_lock));
+    if ( (state <= ACPI_STATE_S0) || (state > ACPI_S_STATES_MAX) )
+        return -EINVAL;
+
+    if ( !spin_trylock(&pm_lock) )
+        return -EBUSY;
+
+    printk(XENLOG_INFO "Preparing system for ACPI S%d state.", state);
+
+    freeze_domains();
 
     disable_nonboot_cpus();
     if ( num_online_cpus() != 1 )
@@ -232,9 +246,6 @@ static long enter_state_helper(void *dat
  */
 int acpi_enter_sleep(struct xenpf_enter_acpi_sleep *sleep)
 {
-    int rc;
-    u32 state;
-
     if ( !IS_PRIV(current->domain) || !acpi_sinfo.pm1a_cnt_blk.address )
         return -EPERM;
 
@@ -247,37 +258,14 @@ int acpi_enter_sleep(struct xenpf_enter_
         return -EINVAL;
     }
 
-    state = sleep->sleep_state;
-    if ( sleep->flags ||
-         (state <= ACPI_STATE_S0) || (state > ACPI_S_STATES_MAX) )
+    if ( sleep->flags )
         return -EINVAL;
-
-    if ( !spin_trylock(&pm_lock) )
-        return -EBUSY;
 
     acpi_sinfo.pm1a_cnt_val = sleep->pm1a_cnt_val;
     acpi_sinfo.pm1b_cnt_val = sleep->pm1b_cnt_val;
-    acpi_sinfo.sleep_state = state;
-
-    printk(XENLOG_INFO "Preparing system for ACPI S%d state.", state);
-
-    rc = freeze_domains();
-    if ( rc )
-        goto unlock_and_fail;
-
-    rc = continue_hypercall_on_cpu(0, enter_state_helper, &acpi_sinfo);
-    if ( rc )
-    {
-        /* Continuation will not execute: undo our own work so far. */
-        thaw_domains();
-        goto unlock_and_fail;
-    }
-
-    return 0;
-
- unlock_and_fail:
-    spin_unlock(&pm_lock);
-    return rc;
+    acpi_sinfo.sleep_state = sleep->sleep_state;
+
+    return continue_hypercall_on_cpu(0, enter_state_helper, &acpi_sinfo);
 }
 
 static int acpi_get_wake_status(void)

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Revert 21180:11423ce78ee0, 21181:9d5ecf79f1b5, 21185:fddff17c7c74., Xen patchbot-unstable <=