Commit ff5ce21e authored by Marc-André Lureau's avatar Marc-André Lureau Committed by Stefan Berger
Browse files

acpi: change TPM TIS data conditions



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: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
parent 5cf954d0
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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);
    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);
+3 −0
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@ typedef struct TPMIfClass {

#define TYPE_TPM_TIS                "tpm-tis"

#define TPM_IS_TIS(chr)                             \
    object_dynamic_cast(OBJECT(chr), TYPE_TPM_TIS)

/* returns NULL unless there is exactly one TPM device */
static inline TPMIf *tpm_find(void)
{