diff options
Diffstat (limited to 'arch/x86_64/kernel/genapic_flat.c')
-rw-r--r-- | arch/x86_64/kernel/genapic_flat.c | 23 |
1 files changed, 1 insertions, 22 deletions
diff --git a/arch/x86_64/kernel/genapic_flat.c b/arch/x86_64/kernel/genapic_flat.c index 9e0a552f0e4a..01d3939e3a9c 100644 --- a/arch/x86_64/kernel/genapic_flat.c +++ b/arch/x86_64/kernel/genapic_flat.c | |||
@@ -61,31 +61,10 @@ static void flat_init_apic_ldr(void) | |||
61 | static void flat_send_IPI_mask(cpumask_t cpumask, int vector) | 61 | static void flat_send_IPI_mask(cpumask_t cpumask, int vector) |
62 | { | 62 | { |
63 | unsigned long mask = cpus_addr(cpumask)[0]; | 63 | unsigned long mask = cpus_addr(cpumask)[0]; |
64 | unsigned long cfg; | ||
65 | unsigned long flags; | 64 | unsigned long flags; |
66 | 65 | ||
67 | local_irq_save(flags); | 66 | local_irq_save(flags); |
68 | 67 | __send_IPI_dest_field(mask, vector, APIC_DEST_LOGICAL); | |
69 | /* | ||
70 | * Wait for idle. | ||
71 | */ | ||
72 | apic_wait_icr_idle(); | ||
73 | |||
74 | /* | ||
75 | * prepare target chip field | ||
76 | */ | ||
77 | cfg = __prepare_ICR2(mask); | ||
78 | apic_write(APIC_ICR2, cfg); | ||
79 | |||
80 | /* | ||
81 | * program the ICR | ||
82 | */ | ||
83 | cfg = __prepare_ICR(0, vector, APIC_DEST_LOGICAL); | ||
84 | |||
85 | /* | ||
86 | * Send the IPI. The write to APIC_ICR fires this off. | ||
87 | */ | ||
88 | apic_write(APIC_ICR, cfg); | ||
89 | local_irq_restore(flags); | 68 | local_irq_restore(flags); |
90 | } | 69 | } |
91 | 70 | ||