]> xenbits.xensource.com Git - xen.git/commitdiff
x86: Simplify freeze_domains() and thaw_domains(). Since they now
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 19 Apr 2010 10:34:49 +0000 (11:34 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 19 Apr 2010 10:34:49 +0000 (11:34 +0100)
run in idle-vcpu context, no care needs to be taken about pausing
'current'.

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

index e6847b3e4f3afaf6a8c3589e9e833b332e4a60cd..9efae905c2ee31cf0c83cdde787da1ba1ea5c82f 100644 (file)
@@ -77,46 +77,25 @@ static void device_power_up(void)
 static void freeze_domains(void)
 {
     struct domain *d;
-    struct vcpu *v;
 
     rcu_read_lock(&domlist_read_lock);
+    /*
+     * Note that we iterate in order of domain-id. Hence we will pause dom0
+     * first which is required for correctness (as only dom0 can add domains to
+     * the domain list). Otherwise we could miss concurrently-created domains.
+     */
     for_each_domain ( d )
-    {
-        switch ( d->domain_id )
-        {
-        case 0:
-            for_each_vcpu ( d, v )
-                if ( v != current )
-                    vcpu_pause(v);
-            break;
-        default:
-            domain_pause(d);
-            break;
-        }
-    }
+        domain_pause(d);
     rcu_read_unlock(&domlist_read_lock);
 }
 
 static void thaw_domains(void)
 {
     struct domain *d;
-    struct vcpu *v;
 
     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;
-        }
-    }
+        domain_unpause(d);
     rcu_read_unlock(&domlist_read_lock);
 }