aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/apic.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/kernel/apic.c')
-rw-r--r--arch/x86_64/kernel/apic.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index 46acf4f2f1ec..bd3e45d47c37 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -934,9 +934,17 @@ EXPORT_SYMBOL(switch_APIC_timer_to_ipi);
934 934
935void smp_send_timer_broadcast_ipi(void) 935void smp_send_timer_broadcast_ipi(void)
936{ 936{
937 int cpu = smp_processor_id();
937 cpumask_t mask; 938 cpumask_t mask;
938 939
939 cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); 940 cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask);
941
942 if (cpu_isset(cpu, mask)) {
943 cpu_clear(cpu, mask);
944 add_pda(apic_timer_irqs, 1);
945 smp_local_timer_interrupt();
946 }
947
940 if (!cpus_empty(mask)) { 948 if (!cpus_empty(mask)) {
941 send_IPI_mask(mask, LOCAL_TIMER_VECTOR); 949 send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
942 } 950 }