lkml.org 
[lkml]   [2017]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] x86/idt: Unbreak MS HyperV hypercall vector install
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@microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
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);
\
 
 \ /
  Last update: 2017-09-08 10:20    [W:0.048 / U:7.288 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site