lkml.org 
[lkml]   [2009]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
SubjectRe: [RFC patch] Use IPI_shortcut for lapic timer broadcast
From
Thanks for review. How about the following patch?

/**The patch is enclosed in text attachment**
**Using web client to send the patch**
**below is for review, please apply attached patch*/


Signed-off-by: Yu Luming <luming.yu@intel.com>

apic.c | 5 ++++-
apic_flat_64.c | 7 ++++++-
2 files changed, 10 insertions(+), 2 deletions(-)


--- linux-2.6.30-rc6/arch/x86/kernel/apic/apic.c.0 2009-06-29
23:45:05.000000000 -0600
+++ linux-2.6.30-rc6/arch/x86/kernel/apic/apic.c 2009-06-30
00:37:56.000000000 -0600
@@ -419,7 +419,10 @@
static void lapic_timer_broadcast(const struct cpumask *mask)
{
#ifdef CONFIG_SMP
- apic->send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
+ if (unlikely(cpumask_weight(mask) == num_online_cpus() -1))
+ apic->send_IPI_all(LOCAL_TIMER_VECTOR);
+ else
+ apic->send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
#endif
}

--- linux-2.6.30-rc6/arch/x86/kernel/apic/apic_flat_64.c.0 2009-06-29
00:13:26.000000000 -0600
+++ linux-2.6.30-rc6/arch/x86/kernel/apic/apic_flat_64.c 2009-06-29
00:11:23.000000000 -0600
@@ -274,7 +274,12 @@

static void physflat_send_IPI_all(int vector)
{
- physflat_send_IPI_mask(cpu_online_mask, vector);
+ if (vector == NMI_VECTOR) {
+ physflat_send_IPI_mask(cpu_online_mask, vector);
+ } else {
+ __default_send_IPI_shortcut(APIC_DEST_ALLINC,
+ vector, apic->dest_logical);
+ }
}

static unsigned int physflat_cpu_mask_to_apicid(const struct cpumask *cpumask)[unhandled content-type:application/octet-stream]
\
 
 \ /
  Last update: 2009-06-30 09:03    [W:0.061 / U:6.356 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site