* [PULL v1 0/8] Merge tpm 2020/06/25 v1
@ 2020-06-25 13:23 Stefan Berger
2020-06-25 13:23 ` [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Stefan Berger
This series of patches enables TPM TIS interrupts on PCs via IRQ 13 and disables
it for ARM.
Stefan
The following changes since commit 0250c595c9dd61221515221e92737422c75dd38b:
Merge remote-tracking branch 'remotes/armbru/tags/pull-qdev-2020-06-23' into staging (2020-06-25 09:34:52 +0100)
are available in the Git repository at:
git://github.com/stefanberger/qemu-tpm.git tags/pull-tpm-2020-06-25-1
for you to fetch changes up to dcee2d2f6111a3a7b3ec2c5e6ff8ad1f679e907b:
tpm: Disable interrupt support for TIS on sysbus (2020-06-25 08:45:53 -0400)
----------------------------------------------------------------
Stefan Berger (8):
tpm_tis: Allow lowering of IRQ also when locality is not active
tpm: Extend TPMIfClass with get_irqnum() function
tests: Temporarily ignore DSDT table differences
tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
acpi: Enable TPM IRQ
tests: Add updated DSDT
tpm: Guard irq related ops in case interrupts are disabled
tpm: Disable interrupt support for TIS on sysbus
hw/i386/acpi-build.c | 11 +++++------
hw/tpm/tpm_tis_common.c | 12 +++++++++---
hw/tpm/tpm_tis_isa.c | 17 ++++++++++++++---
hw/tpm/tpm_tis_sysbus.c | 12 +++++++++++-
include/hw/acpi/tpm.h | 3 ++-
include/sysemu/tpm.h | 12 ++++++++++++
tests/data/acpi/q35/DSDT.tis | Bin 8357 -> 8360 bytes
7 files changed, 53 insertions(+), 14 deletions(-)
--
2.24.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Marc-André Lureau, Eric Auger, Stefan Berger
From: Stefan Berger <stefanb@linux.ibm.com>
This patch fixes a bug that occurs when using interrupts. It
allows to lower the IRQ also when a locality is not active.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-2-stefanb@linux.vnet.ibm.com
---
hw/tpm/tpm_tis_common.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c
index e700d82181..93667e7788 100644
--- a/hw/tpm/tpm_tis_common.c
+++ b/hw/tpm/tpm_tis_common.c
@@ -596,10 +596,6 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr,
/* hard wired -- ignore */
break;
case TPM_TIS_REG_INT_STATUS:
- if (s->active_locty != locty) {
- break;
- }
-
/* clearing of interrupt flags */
if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) &&
(s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) {
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
2020-06-25 13:23 ` [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Stefan Berger, Eric Auger, Marc-André Lureau,
Stefan Berger
Implement get_irqnum() as part of the TPMIfClass to get the assigned IRQ
number or TPM_IRQ_DISABLED (~0) in case IRQs cannot be used.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-3-stefanb@linux.vnet.ibm.com
---
hw/tpm/tpm_tis_isa.c | 9 +++++++++
hw/tpm/tpm_tis_sysbus.c | 9 +++++++++
include/sysemu/tpm.h | 12 ++++++++++++
3 files changed, 30 insertions(+)
diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
index 5faf6231c0..bacc4447b5 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -81,6 +81,14 @@ static enum TPMVersion tpm_tis_isa_get_tpm_version(TPMIf *ti)
return tpm_tis_get_tpm_version(s);
}
+static int8_t tpm_tis_isa_get_irqnum(TPMIf *ti)
+{
+ TPMStateISA *isadev = TPM_TIS_ISA(ti);
+ TPMState *s = &isadev->state;
+
+ return s->irq_num;
+}
+
static void tpm_tis_isa_reset(DeviceState *dev)
{
TPMStateISA *isadev = TPM_TIS_ISA(dev);
@@ -149,6 +157,7 @@ static void tpm_tis_isa_class_init(ObjectClass *klass, void *data)
dc->reset = tpm_tis_isa_reset;
tc->request_completed = tpm_tis_isa_request_completed;
tc->get_version = tpm_tis_isa_get_tpm_version;
+ tc->get_irqnum = tpm_tis_isa_get_irqnum;
}
static const TypeInfo tpm_tis_isa_info = {
diff --git a/hw/tpm/tpm_tis_sysbus.c b/hw/tpm/tpm_tis_sysbus.c
index 4a3bc70625..879a5788de 100644
--- a/hw/tpm/tpm_tis_sysbus.c
+++ b/hw/tpm/tpm_tis_sysbus.c
@@ -81,6 +81,14 @@ static enum TPMVersion tpm_tis_sysbus_get_tpm_version(TPMIf *ti)
return tpm_tis_get_tpm_version(s);
}
+static int8_t tpm_tis_sysbus_get_irqnum(TPMIf *ti)
+{
+ TPMStateSysBus *sbdev = TPM_TIS_SYSBUS(ti);
+ TPMState *s = &sbdev->state;
+
+ return s->irq_num;
+}
+
static void tpm_tis_sysbus_reset(DeviceState *dev)
{
TPMStateSysBus *sbdev = TPM_TIS_SYSBUS(dev);
@@ -138,6 +146,7 @@ static void tpm_tis_sysbus_class_init(ObjectClass *klass, void *data)
dc->reset = tpm_tis_sysbus_reset;
tc->request_completed = tpm_tis_sysbus_request_completed;
tc->get_version = tpm_tis_sysbus_get_tpm_version;
+ tc->get_irqnum = tpm_tis_sysbus_get_irqnum;
}
static const TypeInfo tpm_tis_sysbus_info = {
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 03fb25941c..39c3c9c0f2 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -25,6 +25,8 @@ typedef enum TPMVersion {
TPM_VERSION_2_0 = 2,
} TPMVersion;
+#define TPM_IRQ_DISABLED (~0)
+
#define TYPE_TPM_IF "tpm-if"
#define TPM_IF_CLASS(klass) \
OBJECT_CLASS_CHECK(TPMIfClass, (klass), TYPE_TPM_IF)
@@ -41,6 +43,7 @@ typedef struct TPMIfClass {
enum TpmModel model;
void (*request_completed)(TPMIf *obj, int ret);
enum TPMVersion (*get_version)(TPMIf *obj);
+ int8_t (*get_irqnum)(TPMIf *obj);
} TPMIfClass;
#define TYPE_TPM_TIS_ISA "tpm-tis"
@@ -74,4 +77,13 @@ static inline TPMVersion tpm_get_version(TPMIf *ti)
return TPM_IF_GET_CLASS(ti)->get_version(ti);
}
+static inline int8_t tpm_get_irqnum(TPMIf *ti)
+{
+ if (!ti || !TPM_IF_GET_CLASS(ti)->get_irqnum) {
+ return TPM_IRQ_DISABLED;
+ }
+
+ return TPM_IF_GET_CLASS(ti)->get_irqnum(ti);
+}
+
#endif /* QEMU_TPM_H */
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 3/8] tests: Temporarily ignore DSDT table differences
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
2020-06-25 13:23 ` [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
2020-06-25 13:23 ` [PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Michael S . Tsirkin, Stefan Berger, Eric Auger,
Marc-André Lureau, Stefan Berger
Ignore DSDT table differences before enabling IRQ support for TPM.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-4-stefanb@linux.vnet.ibm.com
CC: Michael S. Tsirkin <mst@redhat.com>
---
tests/qtest/bios-tables-test-allowed-diff.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..bb4ce8967b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,2 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT.tis",
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (2 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 5/8] acpi: Enable TPM IRQ Stefan Berger
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Stefan Berger, Eric Auger, Marc-André Lureau,
Stefan Berger
Before the enablement of interrupts on PCs, split the TPM_TIS_IRQ
into TPM_TIS_ISA_IRQ for PCs and TPM_TIS_SYSBUS_IRQ for ARM.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-5-stefanb@linux.vnet.ibm.com
---
hw/tpm/tpm_tis_isa.c | 2 +-
hw/tpm/tpm_tis_sysbus.c | 3 ++-
include/hw/acpi/tpm.h | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
index bacc4447b5..d00d49994d 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -98,7 +98,7 @@ static void tpm_tis_isa_reset(DeviceState *dev)
}
static Property tpm_tis_isa_properties[] = {
- DEFINE_PROP_UINT32("irq", TPMStateISA, state.irq_num, TPM_TIS_IRQ),
+ DEFINE_PROP_UINT32("irq", TPMStateISA, state.irq_num, TPM_TIS_ISA_IRQ),
DEFINE_PROP_TPMBE("tpmdev", TPMStateISA, state.be_driver),
DEFINE_PROP_BOOL("ppi", TPMStateISA, state.ppi_enabled, true),
DEFINE_PROP_END_OF_LIST(),
diff --git a/hw/tpm/tpm_tis_sysbus.c b/hw/tpm/tpm_tis_sysbus.c
index 879a5788de..268eec9195 100644
--- a/hw/tpm/tpm_tis_sysbus.c
+++ b/hw/tpm/tpm_tis_sysbus.c
@@ -98,7 +98,8 @@ static void tpm_tis_sysbus_reset(DeviceState *dev)
}
static Property tpm_tis_sysbus_properties[] = {
- DEFINE_PROP_UINT32("irq", TPMStateSysBus, state.irq_num, TPM_TIS_IRQ),
+ DEFINE_PROP_UINT32("irq", TPMStateSysBus, state.irq_num,
+ TPM_TIS_SYSBUS_IRQ),
DEFINE_PROP_TPMBE("tpmdev", TPMStateSysBus, state.be_driver),
DEFINE_PROP_BOOL("ppi", TPMStateSysBus, state.ppi_enabled, false),
DEFINE_PROP_END_OF_LIST(),
diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h
index 1a2a57a21f..d5caee9771 100644
--- a/include/hw/acpi/tpm.h
+++ b/include/hw/acpi/tpm.h
@@ -24,7 +24,8 @@
#define TPM_TIS_ADDR_BASE 0xFED40000
#define TPM_TIS_ADDR_SIZE 0x5000
-#define TPM_TIS_IRQ 5
+#define TPM_TIS_ISA_IRQ 5
+#define TPM_TIS_SYSBUS_IRQ 5
#define TPM_TIS_NUM_LOCALITIES 5 /* per spec */
#define TPM_TIS_LOCALITY_SHIFT 12
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 5/8] acpi: Enable TPM IRQ
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (3 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 6/8] tests: Add updated DSDT Stefan Berger
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Michael S . Tsirkin, Eric Auger,
Marc-André Lureau, Igor Mammedov, Stefan Berger
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>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-6-stefanb@linux.vnet.ibm.com
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 6/8] tests: Add updated DSDT
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (4 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 5/8] acpi: Enable TPM IRQ Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Stefan Berger, Michael S . Tsirkin, Eric Auger,
Marc-André Lureau, Igor Mammedov, Stefan Berger
Add the updated DSDT following the interrupt enablement.
@@ -5,13 +5,13 @@
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of tests/data/acpi/q35/DSDT.tis, Mon Jun 15 09:57:05 2020
+ * Disassembly of /tmp/aml-Y77YL0, Mon Jun 15 09:57:05 2020
*
* Original Table Header:
* Signature "DSDT"
- * Length 0x000020A5 (8357)
+ * Length 0x000020A8 (8360)
* Revision 0x01 **** 32-bit table (V1), no 64-bit math support
- * Checksum 0xAD
+ * Checksum 0x77
* OEM ID "BOCHS "
* OEM Table ID "BXPCDSDT"
* OEM Revision 0x00000001 (1)
@@ -3162,6 +3162,8 @@
0xFED40000, // Address Base
0x00005000, // Address Length
)
+ IRQNoFlags ()
+ {13}
})
OperationRegion (TPP2, SystemMemory, 0xFED45100, 0x5A)
Field (TPP2, AnyAcc, NoLock, Preserve)
**
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-7-stefanb@linux.vnet.ibm.com
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---
tests/data/acpi/q35/DSDT.tis | Bin 8357 -> 8360 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 1 -
2 files changed, 1 deletion(-)
diff --git a/tests/data/acpi/q35/DSDT.tis b/tests/data/acpi/q35/DSDT.tis
index 56b6fb0c3298517d080e38fea05a748b9f1dba54..3f9db960aa05d399fa7f8449e6db688788211832 100644
GIT binary patch
delta 64
zcmZ4LxWbXkCD<iog#rTuWBEp|KeC)oS~2m#PVoX>llkS`nVeK7N60A%iEs(FaWXJ6
UFkJb^5Wv8o#GtUbT~3Y(068!Z;Q#;t
delta 61
zcmZ4CxYUu$CD<iosR9E7<Jyf}e`GoRHDls~o#F-DC-cj>Gx@7bj*wH}7v$n=<78lD
RV7T&+A%KBlbC;YP695=#58(g+
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index bb4ce8967b..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,2 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT.tis",
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 7/8] tpm: Guard irq related ops in case interrupts are disabled
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (5 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 6/8] tests: Add updated DSDT Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:23 ` [PULL v1 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
2020-06-25 13:56 ` [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Stefan Berger, Eric Auger, Stefan Berger
Check for irq_num having the value of TPM_IRQ_DISABLED before calling any
IRQ related functions or allowing the user to try to enable interrupts.
Explicitly allow the value of TPM_IRQ_DISABLED in irq_num.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-8-stefanb@linux.vnet.ibm.com
---
hw/tpm/tpm_tis_common.c | 12 +++++++++++-
hw/tpm/tpm_tis_isa.c | 6 ++++--
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c
index 93667e7788..8ecd11a38c 100644
--- a/hw/tpm/tpm_tis_common.c
+++ b/hw/tpm/tpm_tis_common.c
@@ -354,7 +354,11 @@ static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
val = s->loc[locty].inte;
break;
case TPM_TIS_REG_INT_VECTOR:
- val = s->irq_num;
+ if (s->irq_num != TPM_IRQ_DISABLED) {
+ val = s->irq_num;
+ } else {
+ val = 0;
+ }
break;
case TPM_TIS_REG_INT_STATUS:
val = s->loc[locty].ints;
@@ -586,6 +590,9 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr,
if (s->active_locty != locty) {
break;
}
+ if (s->irq_num == TPM_IRQ_DISABLED) {
+ val &= ~TPM_TIS_INT_ENABLED;
+ }
s->loc[locty].inte &= mask;
s->loc[locty].inte |= (val & (TPM_TIS_INT_ENABLED |
@@ -596,6 +603,9 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr,
/* hard wired -- ignore */
break;
case TPM_TIS_REG_INT_STATUS:
+ if (s->irq_num == TPM_IRQ_DISABLED) {
+ break;
+ }
/* clearing of interrupt flags */
if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) &&
(s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) {
diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
index d00d49994d..11fec805d0 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -128,13 +128,15 @@ static void tpm_tis_isa_realizefn(DeviceState *dev, Error **errp)
error_setg(errp, "'tpmdev' property is required");
return;
}
- if (s->irq_num > 15) {
+ if (s->irq_num > 15 && s->irq_num != TPM_IRQ_DISABLED) {
error_setg(errp, "IRQ %d is outside valid range of 0 to 15",
s->irq_num);
return;
}
- isa_init_irq(ISA_DEVICE(dev), &s->irq, s->irq_num);
+ if (s->irq_num != TPM_IRQ_DISABLED) {
+ isa_init_irq(ISA_DEVICE(dev), &s->irq, s->irq_num);
+ }
memory_region_add_subregion(isa_address_space(ISA_DEVICE(dev)),
TPM_TIS_ADDR_BASE, &s->mmio);
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL v1 8/8] tpm: Disable interrupt support for TIS on sysbus
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (6 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
@ 2020-06-25 13:23 ` Stefan Berger
2020-06-25 13:56 ` [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:23 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, Stefan Berger, Eric Auger, Marc-André Lureau,
Stefan Berger
Disable interrupt support for the TIS on sysbus.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-9-stefanb@linux.vnet.ibm.com
---
include/hw/acpi/tpm.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h
index d356f2e06e..21f81690a5 100644
--- a/include/hw/acpi/tpm.h
+++ b/include/hw/acpi/tpm.h
@@ -25,7 +25,7 @@
#define TPM_TIS_ADDR_SIZE 0x5000
#define TPM_TIS_ISA_IRQ 13 /* only one possible */
-#define TPM_TIS_SYSBUS_IRQ 5
+#define TPM_TIS_SYSBUS_IRQ TPM_IRQ_DISABLED
#define TPM_TIS_NUM_LOCALITIES 5 /* per spec */
#define TPM_TIS_LOCALITY_SHIFT 12
--
2.24.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PULL v1 0/8] Merge tpm 2020/06/25 v1
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
` (7 preceding siblings ...)
2020-06-25 13:23 ` [PULL v1 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
@ 2020-06-25 13:56 ` Stefan Berger
8 siblings, 0 replies; 10+ messages in thread
From: Stefan Berger @ 2020-06-25 13:56 UTC (permalink / raw)
To: Stefan Berger, qemu-devel; +Cc: peter.maydell
On 6/25/20 9:23 AM, Stefan Berger wrote:
Peter,
please do not apply. Something is not working well.
Stefan
> This series of patches enables TPM TIS interrupts on PCs via IRQ 13 and disables
> it for ARM.
>
> Stefan
>
> The following changes since commit 0250c595c9dd61221515221e92737422c75dd38b:
>
> Merge remote-tracking branch 'remotes/armbru/tags/pull-qdev-2020-06-23' into staging (2020-06-25 09:34:52 +0100)
>
> are available in the Git repository at:
>
> git://github.com/stefanberger/qemu-tpm.git tags/pull-tpm-2020-06-25-1
>
> for you to fetch changes up to dcee2d2f6111a3a7b3ec2c5e6ff8ad1f679e907b:
>
> tpm: Disable interrupt support for TIS on sysbus (2020-06-25 08:45:53 -0400)
>
> ----------------------------------------------------------------
> Stefan Berger (8):
> tpm_tis: Allow lowering of IRQ also when locality is not active
> tpm: Extend TPMIfClass with get_irqnum() function
> tests: Temporarily ignore DSDT table differences
> tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
> acpi: Enable TPM IRQ
> tests: Add updated DSDT
> tpm: Guard irq related ops in case interrupts are disabled
> tpm: Disable interrupt support for TIS on sysbus
>
> hw/i386/acpi-build.c | 11 +++++------
> hw/tpm/tpm_tis_common.c | 12 +++++++++---
> hw/tpm/tpm_tis_isa.c | 17 ++++++++++++++---
> hw/tpm/tpm_tis_sysbus.c | 12 +++++++++++-
> include/hw/acpi/tpm.h | 3 ++-
> include/sysemu/tpm.h | 12 ++++++++++++
> tests/data/acpi/q35/DSDT.tis | Bin 8357 -> 8360 bytes
> 7 files changed, 53 insertions(+), 14 deletions(-)
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-06-25 13:57 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-25 13:23 [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
2020-06-25 13:23 ` [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
2020-06-25 13:23 ` [PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
2020-06-25 13:23 ` [PULL v1 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
2020-06-25 13:23 ` [PULL v1 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
2020-06-25 13:23 ` [PULL v1 5/8] acpi: Enable TPM IRQ Stefan Berger
2020-06-25 13:23 ` [PULL v1 6/8] tests: Add updated DSDT Stefan Berger
2020-06-25 13:23 ` [PULL v1 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
2020-06-25 13:23 ` [PULL v1 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
2020-06-25 13:56 ` [PULL v1 0/8] Merge tpm 2020/06/25 v1 Stefan Berger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).