diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index b848f4808510..8a9a357875b7 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -1255,12 +1255,15 @@ static int ioapic_retrigger_irq(unsigned int irq) | |||
1255 | { | 1255 | { |
1256 | cpumask_t mask; | 1256 | cpumask_t mask; |
1257 | unsigned vector; | 1257 | unsigned vector; |
1258 | unsigned long flags; | ||
1258 | 1259 | ||
1260 | spin_lock_irqsave(&vector_lock, flags); | ||
1259 | vector = irq_vector[irq]; | 1261 | vector = irq_vector[irq]; |
1260 | cpus_clear(mask); | 1262 | cpus_clear(mask); |
1261 | cpu_set(vector >> 8, mask); | 1263 | cpu_set(first_cpu(irq_domain[irq]), mask); |
1262 | 1264 | ||
1263 | send_IPI_mask(mask, vector & 0xff); | 1265 | send_IPI_mask(mask, vector); |
1266 | spin_unlock_irqrestore(&vector_lock, flags); | ||
1264 | 1267 | ||
1265 | return 1; | 1268 | return 1; |
1266 | } | 1269 | } |