[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1690369495.git.kai.huang@intel.com>
Date: Wed, 26 Jul 2023 23:25:02 +1200
From: Kai Huang <kai.huang@...el.com>
To: 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,
pbonzini@...hat.com, isaku.yamahata@...el.com,
sathyanarayanan.kuppuswamy@...ux.intel.com,
n.borisov.lkml@...il.com, kai.huang@...el.com
Subject: [PATCH v3 00/12] Unify TDCALL/SEAMCALL and TDVMCALL assembly
Hi Peter, Kirill, all,
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).
This version mainly addressed Peter's comment to add patch to adjust
'struct tdx_module_args' to match KVM's "vcpu::regs".
Tested by booting TDX guest, initializing TDX module, and running TDX
guest successfully, all with this series applied.
------- Histroy --------
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: Allow SEAMCALL to handle #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 | 231 ++++--------------------------
arch/x86/coco/tdx/tdx-shared.c | 28 +++-
arch/x86/coco/tdx/tdx.c | 69 +++++----
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 | 227 ++++++++++++++++++++++-------
14 files changed, 433 insertions(+), 345 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: 18b44bc5a67275641fb26f2c54ba7eef80ac5950
--
2.41.0
Powered by blists - more mailing lists