mirror of https://gitee.com/openkylin/qemu.git
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: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
parent
5cf954d021
commit
ff5ce21e1b
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue