lkml.org 
[lkml]   [2021]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/26] x86/tdx: Extend the cc_platform_has() API to support TDX guests
    Date
    From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>

    Confidential Computing (CC) features (like string I/O unroll support,
    memory encryption/decryption support, etc) are conditionally enabled
    in the kernel using cc_platform_has() API. Since TDX guests also need
    to use these CC features, extend cc_platform_has() API and add TDX
    guest-specific CC attributes support.

    Use is_tdx_guest() API to detect for the TDX guest status and return
    TDX-specific CC attributes. To enable use of CC APIs in the TDX guest,
    select ARCH_HAS_CC_PLATFORM in the CONFIG_INTEL_TDX_GUEST case.

    This is a preparatory patch and just creates the framework for adding
    TDX guest specific CC attributes.

    Since is_tdx_guest() function (through cc_platform_has() API) is used in
    the early boot code, disable the instrumentation flags and function
    tracer. This is similar to AMD SEV and cc_platform.c.

    Since intel_cc_platform_has() function only gets triggered when
    is_tdx_guest() is true (valid CONFIG_INTEL_TDX_GUEST case), remove the
    redundant #ifdef in intel_cc_platform_has().

    Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    ---
    arch/x86/Kconfig | 1 +
    arch/x86/kernel/Makefile | 3 +++
    arch/x86/kernel/cc_platform.c | 9 ++++-----
    3 files changed, 8 insertions(+), 5 deletions(-)

    diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
    index a61ac6f8821a..8e781f166030 100644
    --- a/arch/x86/Kconfig
    +++ b/arch/x86/Kconfig
    @@ -877,6 +877,7 @@ config INTEL_TDX_GUEST
    bool "Intel TDX (Trust Domain Extensions) - Guest Support"
    depends on X86_64 && CPU_SUP_INTEL
    depends on X86_X2APIC
    + select ARCH_HAS_CC_PLATFORM
    help
    Support running as a guest under Intel TDX. Without this support,
    the guest kernel can not boot or run under TDX.
    diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
    index 64f9babcfd95..8c9a9214dd34 100644
    --- a/arch/x86/kernel/Makefile
    +++ b/arch/x86/kernel/Makefile
    @@ -22,6 +22,7 @@ CFLAGS_REMOVE_early_printk.o = -pg
    CFLAGS_REMOVE_head64.o = -pg
    CFLAGS_REMOVE_sev.o = -pg
    CFLAGS_REMOVE_cc_platform.o = -pg
    +CFLAGS_REMOVE_tdx.o = -pg
    endif

    KASAN_SANITIZE_head$(BITS).o := n
    @@ -31,6 +32,7 @@ KASAN_SANITIZE_stacktrace.o := n
    KASAN_SANITIZE_paravirt.o := n
    KASAN_SANITIZE_sev.o := n
    KASAN_SANITIZE_cc_platform.o := n
    +KASAN_SANITIZE_tdx.o := n

    # With some compiler versions the generated code results in boot hangs, caused
    # by several compilation units. To be safe, disable all instrumentation.
    @@ -50,6 +52,7 @@ KCOV_INSTRUMENT := n

    CFLAGS_head$(BITS).o += -fno-stack-protector
    CFLAGS_cc_platform.o += -fno-stack-protector
    +CFLAGS_tdx.o += -fno-stack-protector

    CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace

    diff --git a/arch/x86/kernel/cc_platform.c b/arch/x86/kernel/cc_platform.c
    index cc1ffe710dd2..e291e071aa63 100644
    --- a/arch/x86/kernel/cc_platform.c
    +++ b/arch/x86/kernel/cc_platform.c
    @@ -12,14 +12,11 @@
    #include <linux/mem_encrypt.h>

    #include <asm/processor.h>
    +#include <asm/tdx.h>

    -static bool __maybe_unused intel_cc_platform_has(enum cc_attr attr)
    +static bool intel_cc_platform_has(enum cc_attr attr)
    {
    -#ifdef CONFIG_INTEL_TDX_GUEST
    return false;
    -#else
    - return false;
    -#endif
    }

    /*
    @@ -67,6 +64,8 @@ bool cc_platform_has(enum cc_attr attr)
    {
    if (sme_me_mask)
    return amd_cc_platform_has(attr);
    + else if (is_tdx_guest())
    + return intel_cc_platform_has(attr);

    return false;
    }
    --
    2.32.0
    \
     
     \ /
      Last update: 2021-12-14 16:06    [W:4.935 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site