[SRU][N:linux-gcp/P:linux-gcp][PATCH 0/2] Add SVSM vTPM support for AMD SEV-SNP confidential VMs
Ian Whitfield
ian.whitfield at canonical.com
Mon Jun 16 23:04:45 UTC 2025
BugLink: https://bugs.launchpad.net/bugs/2111956
[Impact]
Google has made a request for SVSM vTPM support in linux-gcp kernels 6.8 and
later.
[Fix]
Patches requested in the support case:
980a573621ea ("tpm: Make chip->{status,cancel,req_canceled} opt")
770de678bc28 ("x86/sev: Add SVSM vTPM probe/send_command functions")
b2849b072366 ("svsm: Add header with SVSM_VTPM_CMD helpers")
93b7c6b3ce91 ("tpm: Add SNP SVSM vTPM driver")
e396dd85172c ("x86/sev: Register tpm-svsm platform device")
The config for all kernels must have CONFIG_TCG_SVSM=y
Noble also requires the changes from this pull request:
https://lore.kernel.org/lkml/20240716095557.GAZpZDrdC3HA0Zilxr@fat_crate.local/
and CONFIG_SEV_GUEST=m/y and CONFIG_TSM_REPORTS=y
Besides context adjustments, Noble required some additional changes to its patchset.
Three commits were added to enable 878e70dbd26e ("x86/sev: Check for the
presence of an SVSM in the SNP secrets page") to apply more smoothly:
88ed43d32beb ("x86/sev: Rename snp_init() in boot/compressed/sev.c")
e2f4c8c319ab ("x86/sev: Make the VMPL0 checking more straight forward")
1e52550729da ("x86/sev: Shorten struct name snp_secrets_page_layout to snp_secrets_page")
One commit was dropped from the patchset because it was applied via stable updates:
3991b04d4870 ("virt: sev-guest: Mark driver struct with __refdata to prevent section mismatch")
One commit was dropped because it fixes a bug not present in noble:linux-gcp:
0440feb09079 ("x86/sev: Do RMP memory coverage check after max_pfn has been set")
[Test Plan]
Compile and boot tested. Google has reviewed the patchset.
[Where problems could occur]
These changes are in core kernel security modules, so care should be taken
to ensure that patches are applied correctly to avoid creating new security
vulnerabilities. An issue with this patchset could result in critical kernel
failures in confidential compute VMs.
[Other]
SF #00409503
Borislav Petkov (AMD) (2):
x86/sev: Move SEV compilation units
Documentation/ABI/configfs-tsm: Fix an unexpected indentation silly
Ian Whitfield (1):
UBUNTU: [Config] gcp: Make tpm_svsm built-in
Jarkko Sakkinen (1):
tpm: Make chip->{status,cancel,req_canceled} opt
Stefano Garzarella (4):
x86/sev: Add SVSM vTPM probe/send_command functions
svsm: Add header with SVSM_VTPM_CMD helpers
tpm: Add SNP SVSM vTPM driver
x86/sev: Register tpm-svsm platform device
Tom Lendacky (15):
x86/irqflags: Provide native versions of the
local_irq_save()/restore()
x86/sev: Rename snp_init() in boot/compressed/sev.c
x86/sev: Make the VMPL0 checking more straight forward
x86/sev: Check for the presence of an SVSM in the SNP secrets page
x86/sev: Use kernel provided SVSM Calling Areas
x86/sev: Perform PVALIDATE using the SVSM when not at VMPL0
x86/sev: Use the SVSM to create a vCPU when not in VMPL0
x86/sev: Provide SVSM discovery support
x86/sev: Provide guest VMPL level to userspace
virt: sev-guest: Choose the VMPCK key based on executing VMPL
sev-guest: configfs-tsm: Allow the privlevel_floor attribute to be
updated
fs/configfs: Add a callback to determine attribute visibility
x86/sev: Take advantage of configfs visibility support in TSM
x86/sev: Extend the config-fs attestation support for an SVSM
x86/sev: Allow non-VMPL0 execution when an SVSM is present
Documentation/ABI/testing/configfs-tsm | 63 +++
.../ABI/testing/sysfs-devices-system-cpu | 12 +
.../arch/x86/amd-memory-encryption.rst | 29 +-
Documentation/virt/coco/sev-guest.rst | 11 +
arch/x86/boot/compressed/sev.c | 263 +++++----
arch/x86/coco/Makefile | 1 +
arch/x86/coco/sev/Makefile | 15 +
arch/x86/{kernel/sev.c => coco/sev/core.c} | 518 +++++++++++++++---
.../sev-shared.c => coco/sev/shared.c} | 460 +++++++++++++++-
arch/x86/include/asm/cpufeatures.h | 1 +
arch/x86/include/asm/irqflags.h | 20 +
arch/x86/include/asm/msr-index.h | 2 +
arch/x86/include/asm/sev-common.h | 18 +
arch/x86/include/asm/sev.h | 142 ++++-
arch/x86/include/uapi/asm/svm.h | 1 +
arch/x86/kernel/Makefile | 5 -
arch/x86/mm/mem_encrypt_amd.c | 8 +-
debian.gcp/config/annotations | 3 +
drivers/char/tpm/Kconfig | 10 +
drivers/char/tpm/Makefile | 1 +
drivers/char/tpm/tpm-interface.c | 30 +-
drivers/char/tpm/tpm_ftpm_tee.c | 20 -
drivers/char/tpm/tpm_svsm.c | 125 +++++
drivers/virt/coco/sev-guest/sev-guest.c | 204 ++++++-
drivers/virt/coco/tdx-guest/tdx-guest.c | 26 +-
drivers/virt/coco/tsm.c | 177 ++++--
fs/configfs/dir.c | 10 +
include/linux/configfs.h | 3 +
include/linux/tpm_svsm.h | 149 +++++
include/linux/tsm.h | 59 +-
30 files changed, 2105 insertions(+), 281 deletions(-)
create mode 100644 arch/x86/coco/sev/Makefile
rename arch/x86/{kernel/sev.c => coco/sev/core.c} (83%)
rename arch/x86/{kernel/sev-shared.c => coco/sev/shared.c} (72%)
create mode 100644 drivers/char/tpm/tpm_svsm.c
create mode 100644 include/linux/tpm_svsm.h
--
2.43.0
More information about the kernel-team
mailing list