]> xenbits.xensource.com Git - xen.git/commitdiff
acpi sleep: domain_freeze() pauses all vcpus, but does not sync the
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 15 Apr 2010 11:21:00 +0000 (12:21 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 15 Apr 2010 11:21:00 +0000 (12:21 +0100)
current vcpu (since that would obviously deadlock).

This simplifies thaw_domains() which is required now that thawing can
happen in deifferent context to freeze_domains().

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/acpi/power.c

index 0252ff4fbc867273fef1cabe4a03949506dc3234..7978e01de2c52a9fb328da07110c1149b2021c74 100644 (file)
@@ -82,16 +82,12 @@ static void freeze_domains(void)
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
     {
-        switch ( d->domain_id )
+        for_each_vcpu ( d, v )
         {
-        case 0:
-            for_each_vcpu ( d, v )
-                if ( v != current )
-                    vcpu_pause(v);
-            break;
-        default:
-            domain_pause(d);
-            break;
+            if ( v != current )
+                vcpu_pause(v);
+            else
+                vcpu_pause_nosync(v);
         }
     }
     rcu_read_unlock(&domlist_read_lock);
@@ -105,17 +101,8 @@ static void thaw_domains(void)
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
     {
-        switch ( d->domain_id )
-        {
-        case 0:
-            for_each_vcpu ( d, v )
-                if ( v != current )
-                    vcpu_unpause(v);
-            break;
-        default:
-            domain_unpause(d);
-            break;
-        }
+        for_each_vcpu ( d, v )
+            vcpu_unpause(v);
     }
     rcu_read_unlock(&domlist_read_lock);
 }