#include <asm/tlbflush.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
-#ifdef CONFIG_X86_32
-#include <mach_apic.h>
#include <mach_ipi.h>
-#else
-#include <asm/mach_apic.h>
-#endif
+#include <mach_apic.h>
/*
* Some notes on x86 processor bugs affecting SMP operation:
*
*/
static void native_smp_send_reschedule(int cpu)
{
- WARN_ON(cpu_is_offline(cpu));
+ if (unlikely(cpu_is_offline(cpu))) {
+ WARN_ON(1);
+ return;
+ }
send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR);
}
wmb();
/* Send a message to other CPUs */
- if (cpus_equal(mask, allbutself))
+ if (cpus_equal(mask, allbutself) &&
+ cpus_equal(cpu_online_map, cpu_callout_map))
send_IPI_allbutself(CALL_FUNCTION_VECTOR);
else
send_IPI_mask(mask, CALL_FUNCTION_VECTOR);