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

[Xen-devel] [PATCH4/6] cpuidle: remove hpet access in hpet_broadcast_exi

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH4/6] cpuidle: remove hpet access in hpet_broadcast_exit
From: "Wei, Gang" <gang.wei@xxxxxxxxx>
Date: Thu, 17 Jun 2010 15:38:17 +0800
Accept-language: zh-CN, en-US
Acceptlanguage: zh-CN, en-US
Cc: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, "Wei, Gang" <gang.wei@xxxxxxxxx>
Delivery-date: Thu, 17 Jun 2010 00:47:39 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcsN8A1GIAaHx7TYTZG5m8EnqJyGnQ==
Thread-topic: [PATCH4/6] cpuidle: remove hpet access in hpet_broadcast_exit
cpuidle: remove hpet access in hpet_broadcast_exit

hpet_broadcast_exit calls reprogram_hpet to stop possible hpet intr if the last 
deep-cstate waken up cpu is waken by unexpected intrs instead of hpet broadcast 
handler. This can be removed without brings much useless intrs, but bring 
chance for further optimization. It is a tradeoff between grace & optimization.

BTW, move the cpumask set out of critial section in hpet_broadcast_enter to 
shorten it.

Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>

diff -r 451a46c667c9 xen/arch/x86/hpet.c
--- a/xen/arch/x86/hpet.c       Sun Jun 13 07:23:26 2010 +0800
+++ b/xen/arch/x86/hpet.c       Sun Jun 13 07:27:14 2010 +0800
@@ -664,14 +664,12 @@ void hpet_broadcast_enter(void)
 
     /* Disable LAPIC timer interrupts. */
     disable_APIC_timer();
+    cpu_set(cpu, ch->cpumask);
 
     spin_lock(&ch->lock);
-
-    cpu_set(cpu, ch->cpumask);
     /* reprogram if current cpu expire time is nearer */
     if ( this_cpu(timer_deadline_end) < ch->next_event )
         reprogram_hpet_evt_channel(ch, this_cpu(timer_deadline_end), NOW(), 1);
-
     spin_unlock(&ch->lock);
 }
 
@@ -692,11 +690,7 @@ void hpet_broadcast_exit(void)
         raise_softirq(TIMER_SOFTIRQ);
 
     spin_lock_irq(&ch->lock);
-
     cpu_clear(cpu, ch->cpumask);
-    if ( cpus_empty(ch->cpumask) && ch->next_event != STIME_MAX )
-        reprogram_hpet_evt_channel(ch, STIME_MAX, 0, 0);
-
     spin_unlock_irq(&ch->lock);
 
     if ( ch != &legacy_hpet_event )

Attachment: 4-deepc-wakeup-optimize-1.patch
Description: 4-deepc-wakeup-optimize-1.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>