From: Sohil Mehta <sohil.mehta@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: <x86@kernel.org>, <linux-kernel@vger.kernel.org>,
Xin Li <xin@zytor.com>, "H . Peter Anvin" <hpa@zytor.com>,
Andy Lutomirski <luto@kernel.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "Borislav Petkov" <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
"Sean Christopherson" <seanjc@google.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, "Ian Rogers" <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
"Kan Liang" <kan.liang@linux.intel.com>,
Tony Luck <tony.luck@intel.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Zhang Rui <rui.zhang@intel.com>,
Lukasz Luba <lukasz.luba@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Brian Gerst <brgerst@gmail.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Jacob Pan <jacob.pan@linux.microsoft.com>,
Andi Kleen <ak@linux.intel.com>, Kai Huang <kai.huang@intel.com>,
Nikolay Borisov <nik.borisov@suse.com>,
<linux-perf-users@vger.kernel.org>, <linux-edac@vger.kernel.org>,
<kvm@vger.kernel.org>, <linux-pm@vger.kernel.org>,
<linux-trace-kernel@vger.kernel.org>
Subject: Re: [PATCH v5 4/9] x86/nmi: Assign and register NMI-source vectors
Date: Wed, 7 May 2025 13:43:24 -0700 [thread overview]
Message-ID: <3a9ebdf4-1a52-4659-84ad-2ee015b453f8@intel.com> (raw)
In-Reply-To: <20250507082216.GA4439@noisy.programming.kicks-ass.net>
On 5/7/2025 1:22 AM, Peter Zijlstra wrote:
> On Tue, May 06, 2025 at 06:21:40PM -0700, Sohil Mehta wrote:
>> + */
>> +#define NMIS_VECTOR_NONE 0 /* Reserved - Set for all unidentified sources */
>> +#define NMIS_VECTOR_TEST 1 /* NMI selftest */
>> +#define NMIS_VECTOR_EXTERNAL 2 /* Reserved - Match External NMI vector 2 */
>> +#define NMIS_VECTOR_SMP_STOP 3 /* Panic stop CPU */
>> +#define NMIS_VECTOR_BT 4 /* CPU backtrace */
>> +#define NMIS_VECTOR_KGDB 5 /* Kernel debugger */
>> +#define NMIS_VECTOR_MCE 6 /* MCE injection */
>> +#define NMIS_VECTOR_PMI 7 /* PerfMon counters */
>> +
>> +#define NMIS_VECTORS_MAX 16 /* Maximum number of NMI-source vectors */
>
> Are these really independent NMI vectors, or simply NMI source reporting bits?
>
> Because if they are not NMI vectors, naming them such is confusing.
>
> Specifically, is there a latch per source?
>
Yes, they are truly vectors, confirmed with HPA that there is one latch
per source. Also, while generating the NMIs these values are used in the
APIC code to program the ICR vector field as shown.
ICR[7:0] — Vector -> NMIS_VECTOR_BT (4)
ICR[10:8] — Delivery Mode -> APIC_DM_NMI (100)
>> diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
>> index be93ec7255bf..a1d672dcb6f0 100644
>> --- a/arch/x86/kernel/nmi.c
>> +++ b/arch/x86/kernel/nmi.c
>> @@ -184,6 +184,11 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
>>
>> raw_spin_lock_irqsave(&desc->lock, flags);
>>
>> + WARN_ON_ONCE(action->source_vector >= NMIS_VECTORS_MAX);
>> +
>> + if (!cpu_feature_enabled(X86_FEATURE_NMI_SOURCE) || type != NMI_LOCAL)
>> + action->source_vector = 0;
>
> How about:
>
> WARN_ON_ONCE(type != NMI_LOCAL && action->source_vector);
>
This should work fine as well.
I don't see any harm in storing the source_vector unconditionally even
if X86_FEATURE_NMI_SOURCE is disabled.
next prev parent reply other threads:[~2025-05-07 20:44 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 1:21 [PATCH v5 0/9] x86: Add support for NMI-source reporting with FRED Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 1/9] x86/fred, KVM: VMX: Pass event data to the FRED entry point from KVM Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 2/9] x86/cpufeatures: Add the CPUID feature bit for NMI-source reporting Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 3/9] x86/nmi: Extend the registration interface to include the NMI-source vector Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 4/9] x86/nmi: Assign and register NMI-source vectors Sohil Mehta
2025-05-07 8:22 ` Peter Zijlstra
2025-05-07 20:43 ` Sohil Mehta [this message]
2025-05-07 1:21 ` [PATCH v5 5/9] x86/nmi: Add support to handle NMIs with source information Sohil Mehta
2025-05-07 9:14 ` Peter Zijlstra
2025-05-07 21:48 ` Sohil Mehta
2025-05-08 12:15 ` Peter Zijlstra
2025-05-08 20:23 ` H. Peter Anvin
2025-05-08 20:49 ` Peter Zijlstra
2025-05-09 0:45 ` Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 6/9] x86/nmi: Prepare for the new NMI-source vector encoding Sohil Mehta
2025-05-07 9:17 ` Peter Zijlstra
2025-05-07 22:10 ` Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 7/9] x86/nmi: Enable NMI-source for IPIs delivered as NMIs Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 8/9] perf/x86: Enable NMI-source reporting for perfmon Sohil Mehta
2025-05-08 11:20 ` Sandipan Das
2025-05-09 0:46 ` Sohil Mehta
2025-05-07 1:21 ` [PATCH v5 9/9] x86/nmi: Include NMI-source information in tracepoint and debug prints Sohil Mehta
2025-05-07 21:48 ` Steven Rostedt
2025-05-08 0:02 ` Sohil Mehta
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=3a9ebdf4-1a52-4659-84ad-2ee015b453f8@intel.com \
--to=sohil.mehta@intel.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrew.cooper3@citrix.com \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=daniel.lezcano@linaro.org \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=irogers@google.com \
--cc=jacob.pan@linux.microsoft.com \
--cc=jolsa@kernel.org \
--cc=kai.huang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=nik.borisov@suse.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=rostedt@goodmis.org \
--cc=rui.zhang@intel.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=vkuznets@redhat.com \
--cc=x86@kernel.org \
--cc=xin@zytor.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).