mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
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
2 changed files with 11 additions and 4 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue