All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kai Huang <kai.huang@intel.com>
To: dave.hansen@intel.com, kirill.shutemov@linux.intel.com,
	tglx@linutronix.de, bp@alien8.de, peterz@infradead.org,
	mingo@redhat.com, hpa@zytor.com, dan.j.williams@intel.com,
	seanjc@google.com, pbonzini@redhat.com
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	rick.p.edgecombe@intel.com, isaku.yamahata@intel.com,
	adrian.hunter@intel.com, nik.borisov@suse.com,
	kai.huang@intel.com
Subject: [PATCH v9 0/6] TDX host: metadata reading tweaks and feature mandate
Date: Sun, 15 Dec 2024 04:15:41 +1300	[thread overview]
Message-ID: <cover.1734188033.git.kai.huang@intel.com> (raw)

This series replaces the existing TDX module metadata reading code with
a new auto-generated global metadata infrastructure for basic KVM TDX
support:

1) read "TDX_FEATURES0" field to mandate the "not clobbering RBP when
   exiting from TDX guest" feature is supported during the module
   initialization.

   Some old modules can clobber host's RBP when exiting from the TDX
   guest, and currently they can be initialized successfully.  We don't
   want to run TDX guests using such modules.  We should just fail to
   initialize them to avoid memory/CPU cycle cost of initializing TDX
   module [1].

2) provide metadata reading infrastructure which is required to read
   more metadata fields to support KVM TDX.  The patches which do so
   can be found at [2][3].

Hi Dave,

This series targets x86 tip.  This is the bare minimum pre-work to
support KVM TDX.  I appreciate if you could review and take this as we
think we have addressed all the comments.

This series has dropped all changes that are not required for TDX KVM
base support.  It includes only:
 - Host metadata infrastructure, which will be used by the KVM patches
   to get TDX module information to boot a TD.
 - The NO_RBP_MOD enforcement, which is required to avoid clobbering
   RBP when running TDX guests using old TDX modules.

The script used to auto-generate the metadata reading code in patch 3
can be found in [4].

History:

v8 -> v9:
 - Take out the "running out of reserved areas" bugfix:
   - Remove CMR reading code in patch 3.
   - Remove patch 7-8.
 - Take out the patch 5 which adds nice-to-have header file inclusions
   but it is not mandatory for KVM TDX.
 - Minor changelog improvement suggested by Rick and Reinette.
 - Rebase to tip/x86/tdx.

 v8: https://lore.kernel.org/lkml/cover.1731498635.git.kai.huang@intel.com/

v7 -> v8:
 - Address Dave's comments to remove the code to print module version
   and CMRs:
   - Remove the code which reads module version in the auto-generated
     code.
   - Remove the patch which prints module version (patch 10 in v7)
   - Remove the code which prints CMRs in patch 7.
   - Update the changelog of some patches that mentioned "reading module
     version" and "print CMRs".
 - Collect Nikolay's tag.

Previous versions and more background info please see:

 - https://lore.kernel.org/kvm/6ab90fd332bccdec7b64e5909cb4637732d6bb01.1731318868.git.kai.huang@intel.com/T/

[1]: https://lore.kernel.org/fc0e8ab7-86d4-4428-be31-82e1ece6dd21@intel.com/
[2]: https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?h=kvm-coco-queue&id=594fc3256733fe2c5b8bd9007effea2083431861
[3]: https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?h=kvm-coco-queue&id=8bb81c97ec53b8a3dea29572cdb6ecfa4ff3a181
[4]: https://lore.kernel.org/762a50133300710771337398284567b299a86f67.camel@intel.com/




Kai Huang (5):
  x86/virt/tdx: Rename 'struct tdx_tdmr_sysinfo' to reflect the spec
    better
  x86/virt/tdx: Start to track all global metadata in one structure
  x86/virt/tdx: Use dedicated struct members for PAMT entry sizes
  x86/virt/tdx: Switch to use auto-generated global metadata reading
    code
  x86/virt/tdx: Require the module to assert it has the NO_RBP_MOD
    mitigation

Paolo Bonzini (1):
  x86/virt/tdx: Use auto-generated code to read global metadata

 arch/x86/virt/vmx/tdx/tdx.c                 | 95 +++++++--------------
 arch/x86/virt/vmx/tdx/tdx.h                 | 40 +--------
 arch/x86/virt/vmx/tdx/tdx_global_metadata.c | 48 +++++++++++
 arch/x86/virt/vmx/tdx/tdx_global_metadata.h | 25 ++++++
 4 files changed, 108 insertions(+), 100 deletions(-)
 create mode 100644 arch/x86/virt/vmx/tdx/tdx_global_metadata.c
 create mode 100644 arch/x86/virt/vmx/tdx/tdx_global_metadata.h


base-commit: 564ea84c8c14b007d7838bfb1327295b873573be
-- 
2.47.1


             reply	other threads:[~2024-12-14 15:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-14 15:15 Kai Huang [this message]
2024-12-14 15:15 ` [PATCH v9 1/6] x86/virt/tdx: Rename 'struct tdx_tdmr_sysinfo' to reflect the spec better Kai Huang
2024-12-14 15:15 ` [PATCH v9 2/6] x86/virt/tdx: Start to track all global metadata in one structure Kai Huang
2024-12-14 15:15 ` [PATCH v9 3/6] x86/virt/tdx: Use auto-generated code to read global metadata Kai Huang
2024-12-14 15:15 ` [PATCH v9 4/6] x86/virt/tdx: Use dedicated struct members for PAMT entry sizes Kai Huang
2024-12-14 15:15 ` [PATCH v9 5/6] x86/virt/tdx: Switch to use auto-generated global metadata reading code Kai Huang
2024-12-14 15:15 ` [PATCH v9 6/6] x86/virt/tdx: Require the module to assert it has the NO_RBP_MOD mitigation Kai Huang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1734188033.git.kai.huang@intel.com \
    --to=kai.huang@intel.com \
    --cc=adrian.hunter@intel.com \
    --cc=bp@alien8.de \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=hpa@zytor.com \
    --cc=isaku.yamahata@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nik.borisov@suse.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rick.p.edgecombe@intel.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.