Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-15937

Backport non-KVM parts of TDX host support

    • kernel-5.14.0-415.el9
    • sst_arch_hw
    • ssg_platform_enablement
    • 19
    • 24
    • None
    • False
    • Hide


    • None
    • Red Hat Enterprise Linux
    • None
    • x86_64
    • None

      Backport the following upstream patches:

      08f253ec3767bcfa x86/cpu: Clear SME feature flag when not in use
      1f5e7eb7868e4222 x86/smp: Make stop_other_cpus() more robust
      9b040453d4440659 x86/smp: Dont access non-existing CPUID leaf
      019b383d1132e405 x86/tdx: Retry partially-completed page conversion hypercalls
      5d092b66119d7748 x86/tdx: Zero out the missing RSI in TDX_HYPERCALL macro
      03a423d40cb30e0e x86/tdx: Skip saving output regs when SEAMCALL fails with VMFailInvalid 
      f0024dbfc48d8814 x86/tdx: Make macros of TDCALLs consistent with the spec 
      5efb96289e581c18 x86/tdx: Rename __tdx_module_call() to __tdcall()
      57a420bb8186d1d0 x86/tdx: Pass TDCALL/SEAMCALL input/output registers via a structure
      12f34ed8622aafd3 x86/tdx: Extend TDX_MODULE_CALL to support more TDCALL/SEAMCALL leafs
      c641cfb5c157b6c3 x86/tdx: Make TDX_HYPERCALL asm similar to TDX_MODULE_CALL
      90f5ecd37faed9a5 x86/tdx: Reimplement __tdx_hypercall() using TDX_MODULE_CALL asm
      8a8544bde858e5d6 x86/tdx: Remove 'struct tdx_hypercall_args'
      7b804135d4d1f0a2 x86/virt/tdx: Make TDX_MODULE_CALL handle SEAMCALL #UD and #GP
      518755a7eeae77a3 x86/tdx: Fix __noreturn build warning around __tdx_hypercall_failed() 
      9ee4318c157b9802 x86/tdx: Mark TSC reliable

      and the following ones from https://patchew.org/linux/cover.1697532085.git.kai.huang@intel.com/ when accepted:

      x86/virt/tdx: Detect TDX during kernel boot
      x86/virt/tdx: Handle SEAMCALL no entropy error in common code
      x86/virt/tdx: Add SEAMCALL error printing for module initialization
      x86/virt/tdx: Add skeleton to enable TDX on demand
      x86/virt/tdx: Get information about TDX module and TDX-capable memory
      x86/virt/tdx: Use all system memory when initializing TDX module as TDX memory
      x86/virt/tdx: Add placeholder to construct TDMRs to cover all TDX memory regions
      x86/virt/tdx: Fill out TDMRs to cover all TDX memory regions
      x86/virt/tdx: Allocate and set up PAMTs for TDMRs
      x86/virt/tdx: Designate reserved areas for all TDMRs
      x86/virt/tdx: Configure TDX module with the TDMRs and global KeyID
      x86/virt/tdx: Configure global KeyID on all packages
      x86/virt/tdx: Initialize all TDMRs
      x86/kexec: Flush cache of TDX private memory
      x86/virt/tdx: Keep TDMRs when module initialization is successful
      x86/virt/tdx: Improve readability of module initialization error handling
      x86/kexec(): Reset TDX private memory on platforms with TDX erratum
      x86/virt/tdx: Handle TDX interaction with ACPI S3 and deeper states
      x86/mce: Improve error log of kernel space TDX #MC due to erratum
      Documentation/x86: Add documentation for TDX host support

            rhn-engineering-pbonzini Paolo Bonzini
            rhn-engineering-pbonzini Paolo Bonzini
            Paolo Bonzini Paolo Bonzini
            Zixi Chen Zixi Chen
            0 Vote for this issue
            8 Start watching this issue