// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2025 Red Hat, Inc. All Rights Reserved. * * 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 (usually VMPL0). * * [1] "Secure VM Service Module for SEV-SNP Guests" * Publication # 58019 Revision: 1.00
*/
ret = svsm_vtpm_cmd_request_fill(priv->buffer, 0, buf, cmd_len); if (ret) return ret;
/* * The SVSM call uses the same buffer for the command and for the * response, so after this call, the buffer will contain the response. * * Note: we have to use an internal buffer because the device in SVSM * expects the svsm_vtpm header + data to be physically contiguous.
*/
ret = snp_svsm_vtpm_send_command(priv->buffer); if (ret) return ret;
priv = devm_kmalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM;
/* * The maximum buffer supported is one page (see SVSM_VTPM_MAX_BUFFER * in tpm_svsm.h).
*/
priv->buffer = (void *)devm_get_free_pages(dev, GFP_KERNEL, 0); if (!priv->buffer) return -ENOMEM;
chip = tpmm_chip_alloc(dev, &tpm_chip_ops); if (IS_ERR(chip)) return PTR_ERR(chip);
dev_set_drvdata(&chip->dev, priv);
chip->flags |= TPM_CHIP_FLAG_SYNC;
err = tpm2_probe(chip); if (err) return err;
err = tpm_chip_register(chip); if (err) return err;
/* * tpm_svsm_remove() lives in .exit.text. For drivers registered via * module_platform_driver_probe() this is ok because they cannot get unbound * at runtime. So mark the driver struct with __refdata to prevent modpost * triggering a section mismatch warning.
*/ staticstruct platform_driver tpm_svsm_driver __refdata = {
.remove = __exit_p(tpm_svsm_remove),
.driver = {
.name = "tpm-svsm",
},
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.