[PATCH] x86/idt: Unbreak MS HyperV hypercall vector install

From: Thomas Gleixner
Date: Fri Sep 08 2017 - 04:20:05 EST


The rework of the IDT setup changed the way how unused system gates are
accounted. At the end of the gate initialization all unused gates in the
system vector area are set to the spurios handler and marked as used for
consistency reasons.

Marking them as used breaks MS HyperV because it installs its hypercall
vector after that point and the installation is guarded by the bit in the
used_vectors map. So the hyperv vector stays directed to the spurious
interrupt handler.

Leave them marked as unused again and unbreak HyperV that way.

Fixes: dc20b2d52653 ("x86/idt: Move interrupt gate initialization to IDT code")
Reported-by: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

---
arch/x86/kernel/idt.c | 1 -
1 file changed, 1 deletion(-)

--- a/arch/x86/kernel/idt.c
+++ b/arch/x86/kernel/idt.c
@@ -320,7 +320,6 @@ void __init idt_setup_apic_and_irq_gates

for_each_clear_bit_from(i, used_vectors, NR_VECTORS) {
#ifdef CONFIG_X86_LOCAL_APIC
- set_bit(i, used_vectors);
set_intr_gate(i, spurious_interrupt);
#else
entry = irq_entries_start + 8 * (i - FIRST_EXTERNAL_VECTOR);