mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-29 11:42:36 +00:00

Add driver for the vTPM defined by the AMD SVSM spec [1].
The specification defines a protocol that a SEV-SNP guest OS can use to
discover and talk to a vTPM emulated by the Secure VM Service Module (SVSM) in
the guest context, but at a more privileged level (VMPL0).
The new tpm-svsm platform driver uses API exposed by the x86/sev core
implementation interface to a SVSM to send commands and receive responses.
The device cannot be hot-plugged/unplugged as it is emulated by the platform,
so module_platform_driver_probe() can be used. The device will be registered
by the platform only when it's available, so the probe function just needs to
setup the tpm_chip.
This device does not support interrupts and sends responses to commands
synchronously.
In order to have .recv() called just after .send() in tpm_try_transmit(), the
.status() callback is not implemented as recently supported by commit
980a573621
("tpm: Make chip->{status,cancel,req_canceled} opt").
[1] "Secure VM Service Module for SEV-SNP Guests"
Publication # 58019 Revision: 1.00
[ bp: Massage commit message. ]
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Link: https://lore.kernel.org/r/20250410135118.133240-4-sgarzare@redhat.com
49 lines
1.5 KiB
Makefile
49 lines
1.5 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the kernel tpm device drivers.
|
|
#
|
|
obj-$(CONFIG_TCG_TPM) += tpm.o
|
|
tpm-y := tpm-chip.o
|
|
tpm-y += tpm-dev-common.o
|
|
tpm-y += tpm-dev.o
|
|
tpm-y += tpm-interface.o
|
|
tpm-y += tpm1-cmd.o
|
|
tpm-y += tpm2-cmd.o
|
|
tpm-y += tpmrm-dev.o
|
|
tpm-y += tpm2-space.o
|
|
tpm-y += tpm-sysfs.o
|
|
tpm-y += eventlog/common.o
|
|
tpm-y += eventlog/tpm1.o
|
|
tpm-y += eventlog/tpm2.o
|
|
tpm-y += tpm-buf.o
|
|
tpm-y += tpm2-sessions.o
|
|
|
|
tpm-$(CONFIG_ACPI) += tpm_ppi.o eventlog/acpi.o
|
|
tpm-$(CONFIG_EFI) += eventlog/efi.o
|
|
tpm-$(CONFIG_OF) += eventlog/of.o
|
|
obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
|
|
obj-$(CONFIG_TCG_TIS) += tpm_tis.o
|
|
obj-$(CONFIG_TCG_TIS_SYNQUACER) += tpm_tis_synquacer.o
|
|
|
|
obj-$(CONFIG_TCG_TIS_SPI) += tpm_tis_spi.o
|
|
tpm_tis_spi-y := tpm_tis_spi_main.o
|
|
tpm_tis_spi-$(CONFIG_TCG_TIS_SPI_CR50) += tpm_tis_spi_cr50.o
|
|
|
|
obj-$(CONFIG_TCG_TIS_I2C_CR50) += tpm_tis_i2c_cr50.o
|
|
|
|
obj-$(CONFIG_TCG_TIS_I2C) += tpm_tis_i2c.o
|
|
obj-$(CONFIG_TCG_TIS_I2C_ATMEL) += tpm_i2c_atmel.o
|
|
obj-$(CONFIG_TCG_TIS_I2C_INFINEON) += tpm_i2c_infineon.o
|
|
obj-$(CONFIG_TCG_TIS_I2C_NUVOTON) += tpm_i2c_nuvoton.o
|
|
obj-$(CONFIG_TCG_NSC) += tpm_nsc.o
|
|
obj-$(CONFIG_TCG_ATMEL) += tpm_atmel.o
|
|
obj-$(CONFIG_TCG_INFINEON) += tpm_infineon.o
|
|
obj-$(CONFIG_TCG_IBMVTPM) += tpm_ibmvtpm.o
|
|
obj-$(CONFIG_TCG_TIS_ST33ZP24) += st33zp24/
|
|
obj-$(CONFIG_TCG_XEN) += xen-tpmfront.o
|
|
obj-$(CONFIG_TCG_CRB) += tpm_crb.o
|
|
obj-$(CONFIG_TCG_ARM_CRB_FFA) += tpm_crb_ffa.o
|
|
obj-$(CONFIG_TCG_VTPM_PROXY) += tpm_vtpm_proxy.o
|
|
obj-$(CONFIG_TCG_FTPM_TEE) += tpm_ftpm_tee.o
|
|
obj-$(CONFIG_TCG_SVSM) += tpm_svsm.o
|