[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 40/42] acpi: change TPM TIS data conditions
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 40/42] acpi: change TPM TIS data conditions |
Date: |
Tue, 10 Oct 2017 00:56:21 +0200 |
The device should be exposed if present. It shouldn't have an
undefined version (or else backend init failed, and device should fail
too). Finally, make the fields specific to TIS device model.
Signed-off-by: Marc-André Lureau <address@hidden>
---
include/sysemu/tpm.h | 3 +++
hw/i386/acpi-build.c | 12 ++++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 9439330cf1..8223ec621c 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -47,6 +47,9 @@ void tpm_cleanup(void);
#define TYPE_TPM_TIS "tpm-tis"
+#define TPM_IS_TIS(chr) \
+ object_dynamic_cast(OBJECT(chr), TYPE_TPM_TIS)
+
static inline TPMIf *tpm_find(void)
{
Object *obj = object_resolve_path_type("", TYPE_TPM_IF, NULL);
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 40371b6f75..ee38b00e31 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2038,7 +2038,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
}
}
- if (misc->tpm_version != TPM_VERSION_UNSPEC) {
+ if (TPM_IS_TIS(tpm_find())) {
aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE,
TPM_TIS_ADDR_SIZE, AML_READ_WRITE));
}
@@ -2204,7 +2204,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
/* Scan all PCI buses. Generate tables to support hotplug. */
build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en);
- if (misc->tpm_version != TPM_VERSION_UNSPEC) {
+ if (TPM_IS_TIS(tpm_find())) {
dev = aml_device("ISA.TPM");
aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C31")));
aml_append(dev, aml_name_decl("_STA", aml_int(0xF)));
@@ -2281,8 +2281,12 @@ build_tpm2(GArray *table_data, BIOSLinker *linker)
tpm2_ptr = acpi_data_push(table_data, sizeof *tpm2_ptr);
tpm2_ptr->platform_class = cpu_to_le16(TPM2_ACPI_CLASS_CLIENT);
- tpm2_ptr->control_area_address = cpu_to_le64(0);
- tpm2_ptr->start_method = cpu_to_le32(TPM2_START_METHOD_MMIO);
+ if (TPM_IS_TIS(tpm_find())) {
+ tpm2_ptr->control_area_address = cpu_to_le64(0);
+ tpm2_ptr->start_method = cpu_to_le32(TPM2_START_METHOD_MMIO);
+ } else {
+ g_warn_if_reached();
+ }
build_header(linker, table_data,
(void *)tpm2_ptr, "TPM2", sizeof(*tpm2_ptr), 4, NULL, NULL);
--
2.14.1.146.gd35faa819
- Re: [Qemu-devel] [PATCH 36/42] tpm: rename qemu_find_tpm() -> qemu_find_tpm_be(), (continued)
- [Qemu-devel] [PATCH 38/42] tpm: add TPM interface to lookup TPM version, Marc-André Lureau, 2017/10/09
- [Qemu-devel] [PATCH 39/42] tpm: add tpm_cmd_get_size() to tpm_util, Marc-André Lureau, 2017/10/09
- [Qemu-devel] [PATCH 40/42] acpi: change TPM TIS data conditions,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 41/42] tpm-emulator: add a FIXME comment about blocking cancel, Marc-André Lureau, 2017/10/09
- [Qemu-devel] [PATCH 42/42] WIP: add TPM CRB device, Marc-André Lureau, 2017/10/09
- Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device, no-reply, 2017/10/09
- Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device, Stefan Berger, 2017/10/09