[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a64122a6-0be1-8263-4629-8cae0c013305@redhat.com>
Date: Mon, 11 Sep 2023 19:08:37 +0200
From: Paolo Bonzini <pbonzini@...hat.com>
To: Kai Huang <kai.huang@...el.com>, peterz@...radead.org,
kirill.shutemov@...ux.intel.com, linux-kernel@...r.kernel.org
Cc: dave.hansen@...el.com, tglx@...utronix.de, bp@...en8.de,
mingo@...hat.com, hpa@...or.com, x86@...nel.org, seanjc@...gle.com,
isaku.yamahata@...el.com,
sathyanarayanan.kuppuswamy@...ux.intel.com,
n.borisov.lkml@...il.com
Subject: Re: [PATCH v4 00/12] Unify TDCALL/SEAMCALL and TDVMCALL assembly
On 8/15/23 13:01, Kai Huang wrote:
> Hi Peter, Kirill,
>
> This series unifies the assembly code for TDCALL/SEAMCALL and TDVMCALL.
> Now all of them use one singe TDX_MODULE_CALL asm macro. More
> information please see cover letter of v2 (see link below).
>
> Tested by booting TDX guest, initializing TDX module, and running TDX
> guest successfully, all with this series applied.
Not sure it if's new in this version but I'm seeing
WARNING: modpost: EXPORT symbol "__seamcall_ret" [vmlinux] version ...
Is "__seamcall_ret" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__seamcall" [vmlinux] version ...
Is "__seamcall" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__seamcall_saved_ret" [vmlinux] version ...
Is "__seamcall_saved_ret" prototyped in <asm/asm-prototypes.h>?
which is fixed by
diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h
index 8f80de627c60..eff5252e9c86 100644
--- a/arch/x86/include/asm/asm-prototypes.h
+++ b/arch/x86/include/asm/asm-prototypes.h
@@ -6,6 +6,7 @@
#include <asm/page.h>
#include <asm/checksum.h>
#include <asm/mce.h>
+#include <asm/tdx.h>
#include <asm-generic/asm-prototypes.h>
Paolo
> ------- Histroy --------
>
> v3 -> v4:
>
> - Addressed Kirill's minor comments
> - Collected Reviewed-by tags from Kirill/Sathy.
> - Collected Isaku's Tested-by tag.
> - Removed unneeded header file inclusion in tdcall.S in the relevant
> two patches.
> - Rebased to latest tip/x86/tdx (v6.5-rc5).
>
> v3: https://lore.kernel.org/lkml/20230806114131.2ilofgmxhdaa2u6b@box.shutemov.name/T/
>
> v2 -> v3:
>
> - New patch (patch 12) to adjust 'struct tdx_module_args' layout to
> match KVM's "vcpu::regs[]" for VP.ENTER. (Peter)
> - Added __seamcall_saved_ret() wrapper to support VP.ENTER (merged to
> patch 10).
> - Fixed a 'noinstr' check build regression found by LKP (patch 7).
> - Rebased to latest Linus's tree (6.5-rc3 + 2 commits).
>
> v2: https://lore.kernel.org/lkml/a23ce8fd289141cea3a1b4f3dace221dca847238.camel@intel.com/T/
>
> v1 -> v2:
> - Rebased to 6.5-rc2.
> - Fixed comments from Peter and others.
> - Split patch "x86/tdx: Unify TDX_HYPERCALL and TDX_MODULE_CALL assembly"
> into three smaller patches for better review.
> - A new patch to skip saving output registers when SEAMCALL fails due to
> VMFailInvalid.
> - Removed patch "x86/tdx: Use cmovc to save a label in TDX_MODULE_CALL asm"
> - Merged patch "x86/tdx: Move FRAME_BEGIN/END to TDX_MODULE_CALL asm macro"
> to the new patch mentioned above.
>
> v1: https://lore.kernel.org/lkml/b95c4169-88c8-219e-87b7-6c4e058c246a@suse.com/T/
>
>
>
> Kai Huang (12):
> x86/tdx: Zero out the missing RSI in TDX_HYPERCALL macro
> x86/tdx: Skip saving output regs when SEAMCALL fails with
> VMFailInvalid
> x86/tdx: Make macros of TDCALLs consistent with the spec
> x86/tdx: Rename __tdx_module_call() to __tdcall()
> x86/tdx: Pass TDCALL/SEAMCALL input/output registers via a structure
> x86/tdx: Extend TDX_MODULE_CALL to support more TDCALL/SEAMCALL leafs
> x86/tdx: Make TDX_HYPERCALL asm similar to TDX_MODULE_CALL
> x86/tdx: Reimplement __tdx_hypercall() using TDX_MODULE_CALL asm
> x86/tdx: Remove 'struct tdx_hypercall_args'
> x86/virt/tdx: Wire up basic SEAMCALL functions
> x86/virt/tdx: Make TDX_MODULE_CALL handle SEAMCALL #UD and #GP
> x86/virt/tdx: Adjust 'struct tdx_module_args' to use x86 "register
> index" layout
>
> arch/x86/Kconfig | 12 ++
> arch/x86/Makefile | 2 +
> arch/x86/boot/compressed/tdx.c | 6 +-
> arch/x86/coco/tdx/tdcall.S | 234 ++++--------------------------
> arch/x86/coco/tdx/tdx-shared.c | 28 +++-
> arch/x86/coco/tdx/tdx.c | 71 +++++----
> arch/x86/include/asm/shared/tdx.h | 92 +++++++-----
> arch/x86/include/asm/tdx.h | 11 ++
> arch/x86/kernel/asm-offsets.c | 33 ++---
> arch/x86/virt/Makefile | 2 +
> arch/x86/virt/vmx/Makefile | 2 +
> arch/x86/virt/vmx/tdx/Makefile | 2 +
> arch/x86/virt/vmx/tdx/seamcall.S | 61 ++++++++
> arch/x86/virt/vmx/tdx/tdxcall.S | 230 ++++++++++++++++++++++-------
> 14 files changed, 435 insertions(+), 351 deletions(-)
> create mode 100644 arch/x86/virt/Makefile
> create mode 100644 arch/x86/virt/vmx/Makefile
> create mode 100644 arch/x86/virt/vmx/tdx/Makefile
> create mode 100644 arch/x86/virt/vmx/tdx/seamcall.S
>
>
> base-commit: 52a93d39b17dc7eb98b6aa3edb93943248e03b2f
Powered by blists - more mailing lists