From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Stefan Berger" <stefanb@linux.vnet.ibm.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Stefan Berger" <stefanb@linux.ibm.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <rth@twiddle.net>,
"Eduardo Habkost" <ehabkost@redhat.com>
Subject: [Qemu-devel] [PULL v2 39/49] acpi: expose TPM/PPI configuration parameters to firmware via fw_cfg
Date: Tue, 15 Jan 2019 15:05:59 -0500 [thread overview]
Message-ID: <20190115200252.25911-40-mst@redhat.com> (raw)
In-Reply-To: <20190115200252.25911-1-mst@redhat.com>
From: Stefan Berger <stefanb@linux.vnet.ibm.com>
To avoid having to hard code the base address of the PPI virtual
memory device we introduce a fw_cfg file etc/tpm/config that holds the
base address of the PPI device, the version of the PPI interface and
the version of the attached TPM.
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
[ Marc-André: renamed to etc/tpm/config, made it static, document it ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
docs/specs/tpm.txt | 19 +++++++++++++++++++
include/hw/acpi/tpm.h | 3 +++
hw/i386/acpi-build.c | 19 +++++++++++++++++++
3 files changed, 41 insertions(+)
diff --git a/docs/specs/tpm.txt b/docs/specs/tpm.txt
index 1af82bba86..e4bb094700 100644
--- a/docs/specs/tpm.txt
+++ b/docs/specs/tpm.txt
@@ -34,6 +34,25 @@ The CRB interface makes a memory mapped IO region in the area 0xfed40000 -
QEMU files related to TPM CRB interface:
- hw/tpm/tpm_crb.c
+= fw_cfg interface =
+
+The bios/firmware may read the "etc/tpm/config" fw_cfg entry for
+configuring the guest appropriately.
+
+The entry of 6 bytes has the following content, in little-endian:
+
+ #define TPM_VERSION_UNSPEC 0
+ #define TPM_VERSION_1_2 1
+ #define TPM_VERSION_2_0 2
+
+ #define TPM_PPI_VERSION_NONE 0
+ #define TPM_PPI_VERSION_1_30 1
+
+ struct FwCfgTPMConfig {
+ uint32_t tpmppi_address; /* PPI memory location */
+ uint8_t tpm_version; /* TPM version */
+ uint8_t tpmppi_version; /* PPI version */
+ };
= ACPI Interface =
diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h
index b8796df916..a6109a97fc 100644
--- a/include/hw/acpi/tpm.h
+++ b/include/hw/acpi/tpm.h
@@ -194,4 +194,7 @@ REG32(CRB_DATA_BUFFER, 0x80)
#define TPM_PPI_ADDR_SIZE 0x400
#define TPM_PPI_ADDR_BASE 0xFED45000
+#define TPM_PPI_VERSION_NONE 0
+#define TPM_PPI_VERSION_1_30 1
+
#endif /* HW_ACPI_TPM_H */
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 14f757fc36..9898247705 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -119,6 +119,12 @@ typedef struct AcpiBuildPciBusHotplugState {
bool pcihp_bridge_en;
} AcpiBuildPciBusHotplugState;
+typedef struct FwCfgTPMConfig {
+ uint32_t tpmppi_address;
+ uint8_t tpm_version;
+ uint8_t tpmppi_version;
+} QEMU_PACKED FwCfgTPMConfig;
+
static void init_common_fadt_data(Object *o, AcpiFadtData *data)
{
uint32_t io = object_property_get_uint(o, ACPI_PM_PROP_PM_IO_BASE, NULL);
@@ -2847,6 +2853,8 @@ void acpi_setup(void)
AcpiBuildTables tables;
AcpiBuildState *build_state;
Object *vmgenid_dev;
+ TPMIf *tpm;
+ static FwCfgTPMConfig tpm_config;
if (!pcms->fw_cfg) {
ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
@@ -2881,6 +2889,17 @@ void acpi_setup(void)
fw_cfg_add_file(pcms->fw_cfg, ACPI_BUILD_TPMLOG_FILE,
tables.tcpalog->data, acpi_data_len(tables.tcpalog));
+ tpm = tpm_find();
+ if (tpm && object_property_get_bool(OBJECT(tpm), "ppi", &error_abort)) {
+ tpm_config = (FwCfgTPMConfig) {
+ .tpmppi_address = cpu_to_le32(TPM_PPI_ADDR_BASE),
+ .tpm_version = tpm_get_version(tpm),
+ .tpmppi_version = TPM_PPI_VERSION_NONE
+ };
+ fw_cfg_add_file(pcms->fw_cfg, "etc/tpm/config",
+ &tpm_config, sizeof tpm_config);
+ }
+
vmgenid_dev = find_vmgenid_dev();
if (vmgenid_dev) {
vmgenid_add_fw_cfg(VMGENID(vmgenid_dev), pcms->fw_cfg,
--
MST
next prev parent reply other threads:[~2019-01-15 20:06 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 20:03 [Qemu-devel] [PULL v2 00/49] pci, pc, virtio: fixes, features Michael S. Tsirkin
2019-01-15 20:03 ` [Qemu-devel] [PULL v2 01/49] pci/pcie: stop plug/unplug if the slot is locked Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 02/49] msix: make pba size math more uniform Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 03/49] hw/misc/ivshmem: Remove deprecated "ivshmem" legacy device Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 04/49] qemu: avoid memory leak while remove disk Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 05/49] tests: vhost-user-test: initialize 'fd' in chr_read Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 06/49] vhost-user: fix ioeventfd_enabled Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 07/49] util: check the return value of fcntl in qemu_set_{block, nonblock} Michael S. Tsirkin
2019-01-25 18:53 ` Philippe Mathieu-Daudé
2019-01-25 18:58 ` Kamil Rytarowski
2019-01-25 19:04 ` Brad Smith
2019-01-25 19:36 ` Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 08/49] tests: acpi: use AcpiSdtTable::aml in consistent way Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 09/49] tests: acpi: make sure FADT is fetched only once Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 10/49] tests: acpi: simplify rsdt handling Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 11/49] tests: acpi: reuse fetch_table() for fetching FACS and DSDT Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 12/49] tests: acpi: reuse fetch_table() in vmgenid-test Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 13/49] tests: smbios: fetch whole table in one step instead of reading it step by step Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 14/49] tests: acpi: squash sanitize_fadt_ptrs() into test_acpi_fadt_table() Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 15/49] tests: acpi: use AcpiSdtTable::aml instead of AcpiSdtTable::header::signature Michael S. Tsirkin
2019-01-15 20:04 ` [Qemu-devel] [PULL v2 16/49] virtio-net: support RSC v4/v6 tcp traffic for Windows HCK Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 17/49] virtio-net: changed VIRTIO_NET_F_RSC_EXT to be 61 Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 18/49] virtio: split vhost vsock bits from virtio-pci Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 19/49] virtio: split virtio input host " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 20/49] virtio: split virtio input " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 21/49] virtio: split virtio rng " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 22/49] virtio: split virtio balloon " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 23/49] virtio: split virtio 9p " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 24/49] virtio: split vhost user blk " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 25/49] virtio: split vhost user scsi " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 26/49] virtio: split vhost " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 27/49] virtio: split virtio " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 28/49] virtio: split virtio blk " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 29/49] virtio: split virtio net " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 30/49] virtio: split virtio serial " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 31/49] virtio: split virtio gpu bits from virtio-pci.h Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 32/49] virtio: split virtio crypto " Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 33/49] virtio: virtio 9p really requires CONFIG_VIRTFS to work Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 34/49] globals: Allow global properties to be optional Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 35/49] virtio: Make disable-legacy/disable-modern compat properties optional Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 36/49] hw/misc/edu: add msi_uninit() for pci_edu_uninit() Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 37/49] tpm: add a "ppi" boolean property Michael S. Tsirkin
2019-01-15 20:05 ` [Qemu-devel] [PULL v2 38/49] tpm: allocate/map buffer for TPM Physical Presence interface Michael S. Tsirkin
2019-01-15 20:05 ` Michael S. Tsirkin [this message]
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 40/49] acpi: build " Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 41/49] acpi: add ACPI memory clear interface Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 42/49] tpm: clear RAM when "memory overwrite" requested Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 43/49] hw: acpi: Fix memory hotplug AML generation error Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 44/49] acpi: update expected files Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 45/49] qemu/compiler: Define QEMU_NONSTRING Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 46/49] block/sheepdog: Use QEMU_NONSTRING for non NUL-terminated arrays Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 47/49] hw/acpi: " Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 48/49] migration: Fix stringop-truncation warning Michael S. Tsirkin
2019-01-15 20:06 ` [Qemu-devel] [PULL v2 49/49] migration: Use strnlen() for fixed-size string Michael S. Tsirkin
2019-01-17 12:48 ` [Qemu-devel] [PULL v2 00/49] pci, pc, virtio: fixes, features Peter Maydell
2019-01-17 13:44 ` Michael S. Tsirkin
2019-01-17 14:07 ` Peter Maydell
2019-01-17 14:19 ` Michael S. Tsirkin
2019-01-17 14:25 ` Peter Maydell
2019-01-17 14:38 ` Michael S. Tsirkin
2019-01-17 16:21 ` Peter Maydell
2019-01-18 2:12 ` Michael S. Tsirkin
2019-01-18 9:28 ` Igor Mammedov
2019-01-18 15:56 ` Peter Maydell
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=20190115200252.25911-40-mst@redhat.com \
--to=mst@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=stefanb@linux.ibm.com \
--cc=stefanb@linux.vnet.ibm.com \
/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.