On Fri, Feb 20, 2026 at 05:14:26PM +0000, Michael Kelley wrote: > From: Mukesh R <[email protected]> Sent: Tuesday, February 17, 2026 > 3:12 PM > > > > MSVC compiler, used to compile the Microsoft Hyper-V hypervisor currently, > > has an assert intrinsic that uses interrupt vector 0x29 to create an > > exception. This will cause hypervisor to then crash and collect core. As > > such, if this interrupt number is assigned to a device by Linux and the > > device generates it, hypervisor will crash. There are two other such > > vectors hard coded in the hypervisor, 0x2C and 0x2D for debug purposes. > > Fortunately, the three vectors are part of the kernel driver space and > > that makes it feasible to reserve them early so they are not assigned > > later. > > > > Signed-off-by: Mukesh Rathor <[email protected]> > > --- > > > > v1: Add ifndef CONFIG_X86_FRED (thanks hpa) > > v2: replace ifndef with cpu_feature_enabled() (thanks hpa and tglx) > > > > arch/x86/kernel/cpu/mshyperv.c | 27 +++++++++++++++++++++++++++ > > 1 file changed, 27 insertions(+) > > > > diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c > > index 579fb2c64cfd..88ca127dc6d4 100644 > > --- a/arch/x86/kernel/cpu/mshyperv.c > > +++ b/arch/x86/kernel/cpu/mshyperv.c > > @@ -478,6 +478,28 @@ int hv_get_hypervisor_version(union > > hv_hypervisor_version_info *info) > > } > > EXPORT_SYMBOL_GPL(hv_get_hypervisor_version); > > > > +/* > > + * Reserve vectors hard coded in the hypervisor. If used outside, the > > hypervisor > > + * will either crash or hang or attempt to break into debugger. > > + */ > > +static void hv_reserve_irq_vectors(void) > > +{ > > + #define HYPERV_DBG_FASTFAIL_VECTOR 0x29 > > + #define HYPERV_DBG_ASSERT_VECTOR 0x2C > > + #define HYPERV_DBG_SERVICE_VECTOR 0x2D > > + > > + if (cpu_feature_enabled(X86_FEATURE_FRED)) > > + return; > > + > > + if (test_and_set_bit(HYPERV_DBG_ASSERT_VECTOR, system_vectors) || > > + test_and_set_bit(HYPERV_DBG_SERVICE_VECTOR, system_vectors) || > > + test_and_set_bit(HYPERV_DBG_FASTFAIL_VECTOR, system_vectors)) > > + BUG(); > > + > > + pr_info("Hyper-V:reserve vectors: %d %d %d\n", HYPERV_DBG_ASSERT_VECTOR, > > + HYPERV_DBG_SERVICE_VECTOR, HYPERV_DBG_FASTFAIL_VECTOR); > > I'm a little late to the party here, but I've always seen Intel interrupt > vectors > displayed as 2-digit hex numbers. This info message is displaying decimal, > which is atypical and will probably be confusing.
Noted. The pull request to Linus has been sent. We will change the format in a follow up patch. Wei
