qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 40/42] acpi: change TPM TIS data conditions


From: Stefan Berger
Subject: Re: [Qemu-devel] [PATCH 40/42] acpi: change TPM TIS data conditions
Date: Tue, 10 Oct 2017 14:22:23 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

On 10/09/2017 06:56 PM, Marc-André Lureau wrote:
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>

Reviewed-by: Stefan Berger <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);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]