cpufreq: stats_lock doesn't appear to need to be irq-safe.
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 7 Jan 2009 11:21:50 +0000 (11:21 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 7 Jan 2009 11:21:50 +0000 (11:21 +0000)
Changing this fixes some bugchecks (xmalloc() with irqs disabled).

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/drivers/acpi/pmstat.c
xen/drivers/cpufreq/utility.c

index e1faae3b33dfd925e82df73da79410312ef753f3..78b5fdf1435a6bf199ba524b5a728a5a9a8e7aeb 100644 (file)
@@ -92,11 +92,11 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
         spinlock_t *cpufreq_statistic_lock = 
                    &per_cpu(cpufreq_statistic_lock, op->cpuid);
 
-        spin_lock_irq(cpufreq_statistic_lock);
+        spin_lock(cpufreq_statistic_lock);
 
         if ( !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt )
         {
-            spin_unlock_irq(cpufreq_statistic_lock);
+            spin_unlock(cpufreq_statistic_lock);
             return -ENODATA;
         }
 
@@ -107,14 +107,14 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
         ct = pmpt->perf.state_count;
         if ( copy_to_guest(op->u.getpx.trans_pt, pxpt->u.trans_pt, ct*ct) )
         {
-            spin_unlock_irq(cpufreq_statistic_lock);
+            spin_unlock(cpufreq_statistic_lock);
             ret = -EFAULT;
             break;
         }
 
         if ( copy_to_guest(op->u.getpx.pt, pxpt->u.pt, ct) )
         {
-            spin_unlock_irq(cpufreq_statistic_lock);
+            spin_unlock(cpufreq_statistic_lock);
             ret = -EFAULT;
             break;
         }
@@ -124,7 +124,7 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
         op->u.getpx.last = pxpt->u.last;
         op->u.getpx.cur = pxpt->u.cur;
 
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
 
         break;
     }
index 24e070deda327f24f70e59fdd0aa8aaab67e51de..91225b9199cf4e55c0336fcb601752dcfe4012ef 100644 (file)
@@ -68,10 +68,10 @@ void cpufreq_statistic_update(unsigned int cpu, uint8_t from, uint8_t to)
     spinlock_t *cpufreq_statistic_lock = 
                &per_cpu(cpufreq_statistic_lock, cpu);
 
-    spin_lock_irq(cpufreq_statistic_lock);
+    spin_lock(cpufreq_statistic_lock);
 
     if ( !pxpt || !pmpt ) {
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return;
     }
 
@@ -83,7 +83,7 @@ void cpufreq_statistic_update(unsigned int cpu, uint8_t from, uint8_t to)
 
     (*(pxpt->u.trans_pt + from * pmpt->perf.state_count + to))++;
 
-    spin_unlock_irq(cpufreq_statistic_lock);
+    spin_unlock(cpufreq_statistic_lock);
 }
 
 int cpufreq_statistic_init(unsigned int cpuid)
@@ -97,10 +97,10 @@ int cpufreq_statistic_init(unsigned int cpuid)
     if ( !pmpt )
         return -EINVAL;
 
-    spin_lock_irq(cpufreq_statistic_lock);
+    spin_lock(cpufreq_statistic_lock);
 
     if ( pxpt ) {
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return 0;
     }
 
@@ -108,7 +108,7 @@ int cpufreq_statistic_init(unsigned int cpuid)
 
     pxpt = xmalloc(struct pm_px);
     if ( !pxpt ) {
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return -ENOMEM;
     }
     memset(pxpt, 0, sizeof(*pxpt));
@@ -117,7 +117,7 @@ int cpufreq_statistic_init(unsigned int cpuid)
     pxpt->u.trans_pt = xmalloc_array(uint64_t, count * count);
     if (!pxpt->u.trans_pt) {
         xfree(pxpt);
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return -ENOMEM;
     }
 
@@ -125,7 +125,7 @@ int cpufreq_statistic_init(unsigned int cpuid)
     if (!pxpt->u.pt) {
         xfree(pxpt->u.trans_pt);
         xfree(pxpt);
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return -ENOMEM;
     }
 
@@ -141,7 +141,7 @@ int cpufreq_statistic_init(unsigned int cpuid)
     pxpt->prev_state_wall = NOW();
     pxpt->prev_idle_wall = get_cpu_idle_time(cpuid);
 
-    spin_unlock_irq(cpufreq_statistic_lock);
+    spin_unlock(cpufreq_statistic_lock);
 
     return 0;
 }
@@ -152,10 +152,10 @@ void cpufreq_statistic_exit(unsigned int cpuid)
     spinlock_t *cpufreq_statistic_lock = 
                &per_cpu(cpufreq_statistic_lock, cpuid);
 
-    spin_lock_irq(cpufreq_statistic_lock);
+    spin_lock(cpufreq_statistic_lock);
 
     if (!pxpt) {
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return;
     }
 
@@ -164,7 +164,7 @@ void cpufreq_statistic_exit(unsigned int cpuid)
     xfree(pxpt);
     cpufreq_statistic_data[cpuid] = NULL;
 
-    spin_unlock_irq(cpufreq_statistic_lock);
+    spin_unlock(cpufreq_statistic_lock);
 }
 
 void cpufreq_statistic_reset(unsigned int cpuid)
@@ -175,10 +175,10 @@ void cpufreq_statistic_reset(unsigned int cpuid)
     spinlock_t *cpufreq_statistic_lock = 
                &per_cpu(cpufreq_statistic_lock, cpuid);
 
-    spin_lock_irq(cpufreq_statistic_lock);
+    spin_lock(cpufreq_statistic_lock);
 
     if ( !pmpt || !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt ) {
-        spin_unlock_irq(cpufreq_statistic_lock);
+        spin_unlock(cpufreq_statistic_lock);
         return;
     }
 
@@ -195,7 +195,7 @@ void cpufreq_statistic_reset(unsigned int cpuid)
     pxpt->prev_state_wall = NOW();
     pxpt->prev_idle_wall = get_cpu_idle_time(cpuid);
 
-    spin_unlock_irq(cpufreq_statistic_lock);
+    spin_unlock(cpufreq_statistic_lock);
 }