From: Xin Li <xin3.li@intel.com>
To: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org,
kvm@vger.kernel.org, xen-devel@lists.xenproject.org
Cc: Jonathan Corbet <corbet@lwn.net>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
Andy Lutomirski <luto@kernel.org>,
Oleg Nesterov <oleg@redhat.com>, Tony Luck <tony.luck@intel.com>,
"K . Y . Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Peter Zijlstra <peterz@infradead.org>,
Juergen Gross <jgross@suse.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
"Paul E . McKenney" <paulmck@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Randy Dunlap <rdunlap@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Kim Phillips <kim.phillips@amd.com>, Xin Li <xin3.li@intel.com>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>,
"Liam R . Howlett" <Liam.Howlett@Oracle.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Suren Baghdasaryan <surenb@google.com>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
Babu Moger <babu.moger@amd.com>,
Jim Mattson <jmattson@google.com>,
Sandipan Das <sandipan.das@amd.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Hans de Goede <hdegoede@redhat.com>,
Reinette Chatre <reinette.chatre@intel.com>,
Daniel Sneddon <daniel.sneddon@linux.intel.com>,
Breno Leitao <leitao@debian.org>,
Nikunj A Dadhania <nikunj@amd.com>,
Brian Gerst <brgerst@gmail.com>,
Sami Tolvanen <samitolvanen@google.com>,
Alexander Potapenko <glider@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Arnd Bergmann <arnd@arndb.de>,
"Eric W . Biederman" <ebiederm@xmission.com>,
Kees Cook <keescook@chromium.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Masahiro Yamada <masahiroy@kernel.org>,
Ze Gao <zegao2021@gmail.com>, Fei Li <fei1.li@intel.com>,
Conghui <conghui.chen@intel.com>, Ashok Raj <ashok.raj@intel.com>,
"Jason A . Donenfeld" <Jason@zx2c4.com>,
Mark Rutland <mark.rutland@arm.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>,
Jiapeng Chong <jiapeng.chong@linux.alibaba.com>,
Jane Malalane <jane.malalane@citrix.com>,
David Woodhouse <dwmw@amazon.co.uk>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Yantengsi <siyanteng@loongson.cn>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Sathvika Vasireddy <sv@linux.ibm.com>
Subject: [PATCH RESEND v9 28/36] x86/idtentry: Incorporate declaration/definition of the FRED exception handler type
Date: Tue, 1 Aug 2023 01:35:45 -0700 [thread overview]
Message-ID: <20230801083553.8468-2-xin3.li@intel.com> (raw)
In-Reply-To: <20230801083553.8468-1-xin3.li@intel.com>
The existing IDT exception C-handlers of X86_TRAP_TS, X86_TRAP_NP,
X86_TRAP_SS, X86_TRAP_GP, X86_TRAP_AC and X86_TRAP_CP take an error
code as the second argument, thus their FRED version handlers simply
call the corresponding existing IDT handlers with orig_ax from the
pt_regs structure as the second argument.
Tested-by: Shan Kang <shan.kang@intel.com>
Signed-off-by: Xin Li <xin3.li@intel.com>
---
arch/x86/include/asm/idtentry.h | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h
index e67d111bf932..3b743c3fbe91 100644
--- a/arch/x86/include/asm/idtentry.h
+++ b/arch/x86/include/asm/idtentry.h
@@ -11,6 +11,7 @@
#include <linux/entry-common.h>
#include <linux/hardirq.h>
+#include <asm/fred.h>
#include <asm/irq_stack.h>
/**
@@ -67,13 +68,16 @@ static __always_inline void __##func(struct pt_regs *regs)
/**
* DECLARE_IDTENTRY_ERRORCODE - Declare functions for simple IDT entry points
+ * and their corresponding software based
+ * dispatch handler
* Error code pushed by hardware
* @vector: Vector number (ignored for C)
* @func: Function name of the entry point
*
- * Declares three functions:
+ * Declares four functions:
* - The ASM entry point: asm_##func
* - The XEN PV trap entry point: xen_##func (maybe unused)
+ * - The C handler called from the FRED event dispatch framework
* - The C handler called from the ASM entry point
*
* Same as DECLARE_IDTENTRY, but has an extra error_code argument for the
@@ -82,14 +86,19 @@ static __always_inline void __##func(struct pt_regs *regs)
#define DECLARE_IDTENTRY_ERRORCODE(vector, func) \
asmlinkage void asm_##func(void); \
asmlinkage void xen_asm_##func(void); \
+ __visible DECLARE_FRED_HANDLER(fred_##func); \
__visible void func(struct pt_regs *regs, unsigned long error_code)
/**
* DEFINE_IDTENTRY_ERRORCODE - Emit code for simple IDT entry points
+ * and their corresponding software based
+ * dispatch handler
* Error code pushed by hardware
* @func: Function name of the entry point
*
- * Same as DEFINE_IDTENTRY, but has an extra error_code argument
+ * Same as DEFINE_IDTENTRY, but has an extra error_code argument. The
+ * fred_func() simply calls func() with passing orig_ax as its second
+ * argument.
*/
#define DEFINE_IDTENTRY_ERRORCODE(func) \
static __always_inline void __##func(struct pt_regs *regs, \
@@ -106,6 +115,11 @@ __visible noinstr void func(struct pt_regs *regs, \
irqentry_exit(regs, state); \
} \
\
+__visible DEFINE_FRED_HANDLER(fred_##func) \
+{ \
+ func(regs, regs->orig_ax); \
+} \
+ \
static __always_inline void __##func(struct pt_regs *regs, \
unsigned long error_code)
--
2.34.1
next prev parent reply other threads:[~2023-08-01 9:08 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-01 8:35 [PATCH RESEND v9 27/36] x86/traps: Add external_interrupt() to dispatch external interrupts Xin Li
2023-08-01 8:35 ` Xin Li [this message]
2023-08-01 8:35 ` [PATCH RESEND v9 29/36] x86/fred: FRED entry/exit and dispatch code Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 30/36] x86/fred: Fixup fault on ERETU by jumping to fred_entrypoint_user Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 31/36] x86/traps: Export external_interrupt() for handling IRQ in IRQ induced VM exits Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 32/36] x86/fred: Export fred_entrypoint_kernel() for handling NMI in NMI " Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 33/36] KVM: VMX: Add VMX_DO_FRED_EVENT_IRQOFF for IRQ/NMI handling Xin Li
2023-08-01 19:01 ` Sean Christopherson
2023-08-01 19:37 ` Peter Zijlstra
2023-08-01 19:49 ` Sean Christopherson
2023-08-01 23:18 ` Li, Xin3
2023-08-03 16:58 ` Li, Xin3
2023-08-01 8:35 ` [PATCH RESEND v9 34/36] x86/syscall: Split IDT syscall setup code into idt_syscall_init() Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 35/36] x86/fred: FRED initialization code Xin Li
2023-08-01 8:35 ` [PATCH RESEND v9 36/36] x86/fred: Disable FRED by default in its early stage Xin Li
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=20230801083553.8468-2-xin3.li@intel.com \
--to=xin3.li@intel.com \
--cc=42.hyeyoo@gmail.com \
--cc=Jason@zx2c4.com \
--cc=Liam.Howlett@Oracle.com \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=ashok.raj@intel.com \
--cc=babu.moger@amd.com \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=conghui.chen@intel.com \
--cc=corbet@lwn.net \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=decui@microsoft.com \
--cc=dwmw@amazon.co.uk \
--cc=ebiederm@xmission.com \
--cc=fei1.li@intel.com \
--cc=glider@google.com \
--cc=haiyangz@microsoft.com \
--cc=hdegoede@redhat.com \
--cc=hpa@zytor.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=jane.malalane@citrix.com \
--cc=jgross@suse.com \
--cc=jiangshanlai@gmail.com \
--cc=jiapeng.chong@linux.alibaba.com \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=keescook@chromium.org \
--cc=kim.phillips@amd.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=kys@microsoft.com \
--cc=leitao@debian.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=nikunj@amd.com \
--cc=oleg@redhat.com \
--cc=oleksandr_tyshchenko@epam.com \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=rostedt@goodmis.org \
--cc=samitolvanen@google.com \
--cc=sandipan.das@amd.com \
--cc=seanjc@google.com \
--cc=sebastian.reichel@collabora.com \
--cc=siyanteng@loongson.cn \
--cc=sstabellini@kernel.org \
--cc=surenb@google.com \
--cc=sv@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=wei.liu@kernel.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.org \
--cc=zegao2021@gmail.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 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.