lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ