From 2f8c55ccefe49bb526df0eaf5fa9b7b788422208 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 26 Feb 2013 10:15:56 +0100 Subject: x86: fix CMCI injection This fixes the wrong use of literal vector 0xF7 with an "int" instruction (invalidated by 25113:14609be41f36) and the fact that doing the injection via a software interrupt was never valid anyway (because cmci_interrupt() acks the LAPIC, which does the wrong thing if the interrupt didn't get delivered though it). In order to do latter, the patch introduces send_IPI_self(), at once removing two opend coded uses of "genapic" in the IRQ handling code. Reported-by: Yongjie Ren Signed-off-by: Jan Beulich Tested-by: Yongjie Ren Acked-by: Keir Fraser --- xen/arch/x86/irq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'xen/arch/x86/irq.c') diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index b98deb58f6..ca829bb0f4 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -646,7 +646,7 @@ void irq_move_cleanup_interrupt(struct cpu_user_regs *regs) * to myself. */ if (irr & (1 << (vector % 32))) { - genapic->send_IPI_self(IRQ_MOVE_CLEANUP_VECTOR); + send_IPI_self(IRQ_MOVE_CLEANUP_VECTOR); TRACE_3D(TRC_HW_IRQ_MOVE_CLEANUP_DELAY, irq, vector, smp_processor_id()); goto unlock; @@ -692,7 +692,7 @@ static void send_cleanup_vector(struct irq_desc *desc) cpumask_and(&cleanup_mask, desc->arch.old_cpu_mask, &cpu_online_map); desc->arch.move_cleanup_count = cpumask_weight(&cleanup_mask); - genapic->send_IPI_mask(&cleanup_mask, IRQ_MOVE_CLEANUP_VECTOR); + send_IPI_mask(&cleanup_mask, IRQ_MOVE_CLEANUP_VECTOR); desc->arch.move_in_progress = 0; } -- cgit v1.2.3