x86: Adjust handle_hpet_broadcast to let it run better before broadcast exit
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 16 Jul 2008 12:54:02 +0000 (13:54 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 16 Jul 2008 12:54:02 +0000 (13:54 +0100)
Since hpet_broadcast_exit has been moved after interrupt enabled in C3
case, so adjust the handler of hpet broadcast to adapt to this.
Meanwhile, remove a freqently executed debug print line to simplify
the serial output.

Signed-off-by: Wei Gang <gang.wei@intel.com>
xen/arch/x86/hpet.c

index 3e2e95423e7a4d41231fab80a62570932f1d6b18..147705d2f0391946bf586fd23fb2cbf7d28e55cb 100644 (file)
@@ -95,13 +95,8 @@ static int reprogram_hpet_evt_channel(
     }
 
     delta = expire - now;
-    if ( delta <= 0 )
-    {
-        printk(KERN_DEBUG "reprogram: expire(%"PRIx64") < "
-               "now(%"PRIx64")\n", expire, now);
-        if ( !force )
-            return -ETIME;
-    }
+    if ( (delta <= 0) && !force )
+        return -ETIME;
 
     ch->next_event = expire;
 
@@ -142,12 +137,10 @@ static void handle_hpet_broadcast(struct hpet_event_channel *ch)
 {
     cpumask_t mask;
     s_time_t now, next_event;
-    int cpu, current_cpu = smp_processor_id();
+    int cpu;
 
     spin_lock(&ch->lock);
 
-    if ( cpu_isset(current_cpu, ch->cpumask) )
-        printk(KERN_DEBUG "WARNING: current cpu%d in bc_mask\n", current_cpu);
 again:
     ch->next_event = STIME_MAX;
     next_event = STIME_MAX;
@@ -162,8 +155,6 @@ again:
         else if ( per_cpu(timer_deadline, cpu) < next_event )
             next_event = per_cpu(timer_deadline, cpu);
     }
-    if ( per_cpu(timer_deadline, current_cpu) <= now )
-        cpu_set(current_cpu, mask);
 
     /* wakeup the cpus which have an expired event. */
     evt_do_broadcast(mask);