From: Nathan Chancellor <nathan@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: tglx@kernel.org, linux-kernel@vger.kernel.org,
Sean Christopherson <seanjc@google.com>,
Jim Mattson <jmattson@google.com>,
Binbin Wu <binbin.wu@linux.intel.com>,
Vishal L Verma <vishal.l.verma@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
Binbin Wu <binbin.wu@intel.com>,
"x86@kernel.org" <x86@kernel.org>,
Paolo Bonzini <bonzini@redhat.com>,
Calvin Owens <calvin@wbinvd.org>
Subject: Re: [PATCH v3 1/2] x86/kvm/vmx: Move IRQ/NMI dispatch from KVM into x86 core
Date: Tue, 26 May 2026 12:35:10 -0700 [thread overview]
Message-ID: <20260526193510.GA2851089@ax162> (raw)
In-Reply-To: <20260526090631.GA4149641@noisy.programming.kicks-ass.net>
On Tue, May 26, 2026 at 11:06:31AM +0200, Peter Zijlstra wrote:
>
> Sorry, I missed this :/
No worries, I should have pinged about it elsewhere sooner.
> Subject: x86/kvm/vmx: Fix x86_64 CFI build
>
> I missed that idt_do_interrupt_irqoff() gets compiled on x84_64; this is
> a problem for CFI builds because it includes an unadorned indirect call.
> It is however completely dead code.
>
> Rework things to not emit this function at all.
>
> Fixes: 0701c9e17bd9 ("x86/kvm/vmx: Move IRQ/NMI dispatch from KVM into x86 core")
> Reported-by: Nathan Chancellor <nathan@kernel.org>
> Reported-by: Calvin Owens <calvin@wbinvd.org>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
> ---
> diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
> index 06c7c6ebd6f9..14cd43d4da6c 100644
> --- a/arch/x86/entry/common.c
> +++ b/arch/x86/entry/common.c
> @@ -55,7 +55,7 @@ noinstr void x86_entry_from_kvm(unsigned int event_type, unsigned int vector)
> * The FRED NMI context is significantly different and will not work
> * right (specifically FRED fixed the NMI recursion issue).
> */
> - idt_entry_from_kvm(vector);
> + idt_do_nmi_irqoff();
> }
> EXPORT_SYMBOL_FOR_KVM(x86_entry_from_kvm);
> #endif
> diff --git a/arch/x86/entry/entry.S b/arch/x86/entry/entry.S
> index a56e043b266d..2bc217bb5475 100644
> --- a/arch/x86/entry/entry.S
> +++ b/arch/x86/entry/entry.S
> @@ -109,11 +109,13 @@ EXPORT_SYMBOL(__ref_stack_chk_guard);
> RET
> .endm
>
> +#ifndef CONFIG_X86_64
> .pushsection .text, "ax"
> SYM_FUNC_START(idt_do_interrupt_irqoff)
> IDT_DO_EVENT_IRQOFF CALL_NOSPEC _ASM_ARG1
> SYM_FUNC_END(idt_do_interrupt_irqoff)
> .popsection
> +#endif
>
> .pushsection .noinstr.text, "ax"
> SYM_FUNC_START(idt_do_nmi_irqoff)
> diff --git a/arch/x86/kernel/idt.c b/arch/x86/kernel/idt.c
> index 7bcf1decc034..90a22e24a9eb 100644
> --- a/arch/x86/kernel/idt.c
> +++ b/arch/x86/kernel/idt.c
> @@ -268,18 +268,10 @@ void __init idt_setup_early_pf(void)
> }
> #endif
>
> -#if IS_ENABLED(CONFIG_KVM_INTEL)
> -noinstr void idt_entry_from_kvm(unsigned int vector)
> +#if IS_ENABLED(CONFIG_KVM_INTEL) && !defined(CONFIG_X86_64)
> +void idt_entry_from_kvm(unsigned int vector)
> {
> - if (vector == NMI_VECTOR)
> - return idt_do_nmi_irqoff();
> -
> - /*
> - * Only the NMI path requires noinstr.
> - */
> - instrumentation_begin();
> idt_do_interrupt_irqoff(gate_offset(idt_table + vector));
> - instrumentation_end();
> }
> #endif
>
--
Cheers,
Nathan
next prev parent reply other threads:[~2026-05-26 19:35 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-23 15:56 [PATCH 0/2] x86/kvm/vmx: Fix VMX interrupt injection vs hrtimer_rearm_deferred() Peter Zijlstra
2026-04-23 15:56 ` [PATCH 1/2] x86/kvm/vmx: Move IRQ/NMI dispatch from KVM into x86 core Peter Zijlstra
2026-04-23 17:54 ` Xin Li
2026-04-28 9:43 ` Binbin Wu
2026-04-28 11:25 ` Paolo Bonzini
2026-05-01 20:31 ` Peter Zijlstra
2026-05-01 20:37 ` [PATCH v2 " Peter Zijlstra
2026-05-08 2:54 ` Yan Zhao
2026-05-08 8:54 ` Peter Zijlstra
2026-05-08 6:09 ` Binbin Wu
2026-05-08 8:53 ` Peter Zijlstra
2026-05-08 8:56 ` Binbin Wu
2026-05-08 9:18 ` [PATCH v3 " Peter Zijlstra
2026-05-08 9:41 ` Binbin Wu
2026-05-12 22:31 ` Sean Christopherson
2026-05-18 8:12 ` Zhao Liu
2026-05-19 18:27 ` [tip: x86/urgent] " tip-bot2 for Peter Zijlstra
2026-05-20 23:06 ` [PATCH v3 1/2] " Nathan Chancellor
2026-05-26 9:06 ` Peter Zijlstra
2026-05-26 19:35 ` Nathan Chancellor [this message]
2026-05-28 9:36 ` [tip: x86/urgent] x86/kvm/vmx: Fix x86_64 CFI build tip-bot2 for Peter Zijlstra
2026-05-26 10:01 ` [PATCH v3 1/2] x86/kvm/vmx: Move IRQ/NMI dispatch from KVM into x86 core Bezdeka, Florian
2026-05-26 10:21 ` Peter Zijlstra
2026-05-26 10:42 ` Florian Bezdeka
2026-04-23 15:56 ` [PATCH 2/2] x86/kvm/vmx: Fix VMX vs hrtimer_rearm_deferred() Peter Zijlstra
2026-05-11 12:59 ` David Woodhouse
2026-05-12 22:32 ` Sean Christopherson
2026-05-15 18:15 ` Marc Dionne
2026-05-18 8:01 ` Zhao Liu
2026-05-18 8:16 ` Binbin Wu
2026-05-19 18:27 ` [tip: x86/urgent] " tip-bot2 for Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260526193510.GA2851089@ax162 \
--to=nathan@kernel.org \
--cc=binbin.wu@intel.com \
--cc=binbin.wu@linux.intel.com \
--cc=bonzini@redhat.com \
--cc=calvin@wbinvd.org \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rick.p.edgecombe@intel.com \
--cc=seanjc@google.com \
--cc=tglx@kernel.org \
--cc=vishal.l.verma@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.