Message ID | 20200617142305.1198672-6-stefanb@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tpm: Enable usage of TPM TIS with interrupts | expand |
Hi, On 6/17/20 4:23 PM, Stefan Berger wrote: > From: Stefan Berger <stefanb@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 <stefanb@linux.ibm.com> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Message-id: 20200616205721.1191408-6-stefanb@linux.vnet.ibm.com > CC: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Eric > --- > 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 */ >
On Wed, 17 Jun 2020 10:23:02 -0400 Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > From: Stefan Berger <stefanb@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 <stefanb@linux.ibm.com> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Message-id: 20200616205721.1191408-6-stefanb@linux.vnet.ibm.com > CC: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Igor Mammedov <imammedo@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 */
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 */