[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.2-testing] x86: Reduce assertion aggressiveness in send_IPI_mask().
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1208938577 -3600 # Node ID c32fcc1672c4fad5771abddd2042d142651edbb3 # Parent 872282b8c11a5dfad51822485d0b937dd8cb9439 x86: Reduce assertion aggressiveness in send_IPI_mask(). Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> xen-unstable changeset: 17503:a5319f23db7c0985ac7ac84a998fedf435565062 xen-unstable date: Wed Apr 23 09:15:34 2008 +0100 --- xen/arch/x86/smp.c | 27 +++++---------------------- 1 files changed, 5 insertions(+), 22 deletions(-) diff -r 872282b8c11a -r c32fcc1672c4 xen/arch/x86/smp.c --- a/xen/arch/x86/smp.c Wed Apr 23 09:02:46 2008 +0100 +++ b/xen/arch/x86/smp.c Wed Apr 23 09:16:17 2008 +0100 @@ -75,20 +75,10 @@ static inline int __prepare_ICR2 (unsign return SET_APIC_DEST_FIELD(mask); } -static inline void check_IPI_mask(cpumask_t cpumask) -{ - /* - * Sanity, and necessary. An IPI with no target generates a send accept - * error with Pentium and P6 APICs. - */ - ASSERT(cpus_subset(cpumask, cpu_online_map)); - ASSERT(!cpus_empty(cpumask)); -} - void apic_wait_icr_idle(void) { - while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY ) - cpu_relax(); + while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY ) + cpu_relax(); } void send_IPI_mask_flat(cpumask_t cpumask, int vector) @@ -97,7 +87,8 @@ void send_IPI_mask_flat(cpumask_t cpumas unsigned long cfg; unsigned long flags; - check_IPI_mask(cpumask); + /* An IPI with no target generates a send accept error from P5/P6 APICs. */ + WARN_ON(mask == 0); local_irq_save(flags); @@ -130,17 +121,9 @@ void send_IPI_mask_phys(cpumask_t mask, unsigned long cfg, flags; unsigned int query_cpu; - check_IPI_mask(mask); - - /* - * Hack. The clustered APIC addressing mode doesn't allow us to send - * to an arbitrary mask, so I do a unicasts to each CPU instead. This - * should be modified to do 1 message per cluster ID - mbligh - */ - local_irq_save(flags); - for_each_cpu_mask( query_cpu, mask ) + for_each_cpu_mask ( query_cpu, mask ) { /* * Wait for idle. _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |