[PATCHv6, RESEND 0/4] x86/tdx: Adjust TD settings on boot

From: Kirill A. Shutemov
Date: Mon Nov 04 2024 - 05:38:42 EST


The patchset adjusts a few TD settings on boot for the optimal functioning
of the system:

- Disable EPT violation #VE on private memory if TD can control it

The newer TDX module allows the guest to control whether it wants to
see #VE on EPT violation on private memory. The Linux kernel does not
want such #VEs and needs to disable them.

- Enable virtualization of topology-related CPUID leafs X2APIC_APICID MSR;

The ENUM_TOPOLOGY feature allows the VMM to provide topology
information to the guest. Enabling the feature eliminates
topology-related #VEs: the TDX module virtualizes accesses to the
CPUID leafs and the MSR.

It allows TDX guest to run with non-trivial topology configuration.

v5:
- Rebased to current tip tree;
v4:
- Drop unnecessary enumeration;
- Drop TDG.SYS.RD wrapper;
- CC stable@ for SEPT disable patch;
- Update commit messages;
v3:
- Update commit messages;
- Rework patches 3/4 and 4/4;
v2:
- Rebased;
- Allow write to TDCS_TD_CTLS to fail;
- Adjust commit messages;
Kirill A. Shutemov (4):
x86/tdx: Introduce wrappers to read and write TD metadata
x86/tdx: Rename tdx_parse_tdinfo() to tdx_setup()
x86/tdx: Dynamically disable SEPT violations from causing #VEs
x86/tdx: Enable CPU topology enumeration

arch/x86/coco/tdx/tdx.c | 140 +++++++++++++++++++++++++-----
arch/x86/include/asm/shared/tdx.h | 13 ++-
2 files changed, 130 insertions(+), 23 deletions(-)

--
2.45.2