From: Stefan Berger <stef...@linux.ibm.com> Move the TPM TIS IRQ to unused IRQ 13, which is the only one accepted by Windows. Query for the TPM's irq number and enable the TPM IRQ unless TPM_IRQ_DISABLED is returned.
Signed-off-by: Stefan Berger <stef...@linux.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> Message-id: 20200616205721.1191408-6-stef...@linux.vnet.ibm.com CC: Michael S. Tsirkin <m...@redhat.com> --- hw/i386/acpi-build.c | 11 +++++------ include/hw/acpi/tpm.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 900f786d08..bb9a7f8497 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2021,6 +2021,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en); if (TPM_IS_TIS_ISA(tpm)) { + int8_t irq = tpm_get_irqnum(tpm); if (misc->tpm_version == TPM_VERSION_2_0) { dev = aml_device("TPM"); aml_append(dev, aml_name_decl("_HID", @@ -2035,12 +2036,10 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, crs = aml_resource_template(); aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE, TPM_TIS_ADDR_SIZE, AML_READ_WRITE)); - /* - FIXME: TPM_TIS_IRQ=5 conflicts with PNP0C0F irqs, - Rewrite to take IRQ from TPM device model and - fix default IRQ value there to use some unused IRQ - */ - /* aml_append(crs, aml_irq_no_flags(TPM_TIS_IRQ)); */ + + if (irq != TPM_IRQ_DISABLED) { + aml_append(crs, aml_irq_no_flags(irq)); + } aml_append(dev, aml_name_decl("_CRS", crs)); tpm_build_ppi_acpi(tpm, dev); diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h index d5caee9771..d356f2e06e 100644 --- a/include/hw/acpi/tpm.h +++ b/include/hw/acpi/tpm.h @@ -24,7 +24,7 @@ #define TPM_TIS_ADDR_BASE 0xFED40000 #define TPM_TIS_ADDR_SIZE 0x5000 -#define TPM_TIS_ISA_IRQ 5 +#define TPM_TIS_ISA_IRQ 13 /* only one possible */ #define TPM_TIS_SYSBUS_IRQ 5 #define TPM_TIS_NUM_LOCALITIES 5 /* per spec */ -- 2.24.1