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/
Home Products Support Community News


[Xen-devel] RE: "monitor"-ed address and IPI reduction

To: Jan Beulich <JBeulich@xxxxxxxxxx>
Subject: [Xen-devel] RE: "monitor"-ed address and IPI reduction
From: "Wei, Gang" <gang.wei@xxxxxxxxx>
Date: Wed, 10 Mar 2010 13:09:36 +0800
Accept-language: zh-CN, en-US
Acceptlanguage: zh-CN, en-US
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Tue, 09 Mar 2010 21:10:36 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <E6467867A6B05E4FA831B7DF29925F5C40C6C216@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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>
References: <4B9610140200007800033694@xxxxxxxxxxxxxxxxxx> <E6467867A6B05E4FA831B7DF29925F5C40C6C216@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acq/X7uzHWoNX1poSRqUbcD+XJl8LAAAcPDwACr8vFA=
Thread-topic: "monitor"-ed address and IPI reduction
Wei, Gang wrote:
> Jan Beulich wrote:
>> What is the point of specifying "current" as the address to monitor?
> You provide a good point. The original purpose to monitor "current"
> is to avoid accidentally wakeup while relying on ipi for waking up
> mechanism.  
>> The memory location of interest really is
>> irq_stat[cpu].__softirq_pending, and if that was used it would then
>> also be possible to actually avoid sending IPIs when monitor/mwait
>> are in use, as is being done on Linux.
> I agree that we can have a try on this. Waking up cpu by mem write
> should be more efficient for monitor/mwait case. 

Here is a patch to monitor "sortirq_pending" instead of "current". The IPI 
reduction part may be a bit complex, can we hold it for post-4.0?

CPUIDLE: monitor "sortirq_pending" instead of "current"

Signed-off-by: Yu Ke <ke.yu@xxxxxxxxx>
Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>

diff -r 132ac04cbdba xen/arch/x86/acpi/cpu_idle.c
--- a/xen/arch/x86/acpi/cpu_idle.c      Tue Mar 09 18:18:19 2010 +0000
+++ b/xen/arch/x86/acpi/cpu_idle.c      Wed Mar 10 11:23:14 2010 +0800
@@ -142,9 +142,13 @@ static void acpi_safe_halt(void)
 static void mwait_idle_with_hints(unsigned long eax, unsigned long ecx)
-    __monitor((void *)current, 0, 0);
+    int cpu = smp_processor_id();
+    __monitor((void *)&softirq_pending(cpu), 0, 0);
-    __mwait(eax, ecx);
+    if ( !softirq_pending(cpu) )
+        __mwait(eax, ecx);
 static void acpi_processor_ffh_cstate_enter(struct acpi_processor_cx *cx)

Attachment: cpuidle_mwait_fix.patch
Description: cpuidle_mwait_fix.patch

Xen-devel mailing list