* [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
@ 2020-06-17 14:22 Stefan Berger
2020-06-17 14:22 ` [PATCH v4 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
` (11 more replies)
0 siblings, 12 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:22 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, eric.auger, pbonzini, marcandre.lureau, philmd, mkedzier
This series of patches enables the usage of the TPM TIS with interrupts.
We use the unused IRQ 13, which is the only one accepted by Windows.
Stefan
v3->v4:
- Changed TPM_IRQ_DISABLED from -1 to ~0
v2->v3:
- Extended series to disable IRQ for TIS on sysbus
v1->v2:
- Added updated DSDT
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] 23+ messages in thread
* [PATCH v4 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
@ 2020-06-17 14:22 ` Stefan Berger
2020-06-17 14:22 ` [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
` (10 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:22 UTC (permalink / raw)
To: qemu-devel
Cc: eric.auger, pbonzini, marcandre.lureau, philmd, mkedzier, 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>
Message-id: 20200616205721.1191408-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 1af4bce139..0f42696f1f 100644
--- a/hw/tpm/tpm_tis_common.c
+++ b/hw/tpm/tpm_tis_common.c
@@ -601,10 +601,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] 23+ messages in thread
* [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
2020-06-17 14:22 ` [PATCH v4 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
@ 2020-06-17 14:22 ` Stefan Berger
2020-06-18 7:10 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
` (9 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:22 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, eric.auger, pbonzini, marcandre.lureau, philmd,
mkedzier, Stefan Berger
From: Stefan Berger <stefanb@sbct-2.pok.ibm.com>
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>
Message-id: 20200616205721.1191408-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 30ba37079d..ed6d422f05 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -80,6 +80,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);
@@ -148,6 +156,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 eced1fc843..86b3988be5 100644
--- a/hw/tpm/tpm_tis_sysbus.c
+++ b/hw/tpm/tpm_tis_sysbus.c
@@ -80,6 +80,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);
@@ -137,6 +145,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..7ebe9f7ef0 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] 23+ messages in thread
* [PATCH v4 3/8] tests: Temporarily ignore DSDT table differences
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
2020-06-17 14:22 ` [PATCH v4 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
2020-06-17 14:22 ` [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-17 14:23 ` [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
` (8 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, Michael S . Tsirkin, eric.auger, pbonzini,
marcandre.lureau, philmd, mkedzier, 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>
Message-id: 20200616205721.1191408-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] 23+ messages in thread
* [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (2 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-18 7:10 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 5/8] acpi: Enable TPM IRQ Stefan Berger
` (7 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, eric.auger, pbonzini, marcandre.lureau, philmd,
mkedzier, 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>
Message-id: 20200616205721.1191408-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 ed6d422f05..27222a9a49 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -97,7 +97,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 86b3988be5..bf4583c3f6 100644
--- a/hw/tpm/tpm_tis_sysbus.c
+++ b/hw/tpm/tpm_tis_sysbus.c
@@ -97,7 +97,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] 23+ messages in thread
* [PATCH v4 5/8] acpi: Enable TPM IRQ
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (3 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-18 7:12 ` Auger Eric
2020-06-23 13:01 ` Igor Mammedov
2020-06-17 14:23 ` [PATCH v4 6/8] tests: Add updated DSDT Stefan Berger
` (6 subsequent siblings)
11 siblings, 2 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Michael S . Tsirkin, eric.auger, pbonzini, marcandre.lureau,
philmd, mkedzier, 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>
Message-id: 20200616205721.1191408-6-stefanb@linux.vnet.ibm.com
CC: 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] 23+ messages in thread
* [PATCH v4 6/8] tests: Add updated DSDT
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (4 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 5/8] acpi: Enable TPM IRQ Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-18 7:13 ` Auger Eric
2020-06-23 13:06 ` Igor Mammedov
2020-06-17 14:23 ` [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
` (5 subsequent siblings)
11 siblings, 2 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, Michael S . Tsirkin, eric.auger, pbonzini,
marcandre.lureau, philmd, mkedzier, 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>
Message-id: 20200616205721.1191408-7-stefanb@linux.vnet.ibm.com
CC: 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] 23+ messages in thread
* [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (5 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 6/8] tests: Add updated DSDT Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-18 7:22 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
` (4 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, eric.auger, pbonzini, marcandre.lureau, philmd,
mkedzier, 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>
Message-id: 20200616205721.1191408-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 0f42696f1f..13b233309e 100644
--- a/hw/tpm/tpm_tis_common.c
+++ b/hw/tpm/tpm_tis_common.c
@@ -359,7 +359,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;
@@ -591,6 +595,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 |
@@ -601,6 +608,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 27222a9a49..d72f733ead 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -127,13 +127,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] 23+ messages in thread
* [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (6 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
@ 2020-06-17 14:23 ` Stefan Berger
2020-06-18 7:22 ` Auger Eric
2020-06-17 14:33 ` [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts no-reply
` (3 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Stefan Berger @ 2020-06-17 14:23 UTC (permalink / raw)
To: qemu-devel
Cc: Stefan Berger, eric.auger, pbonzini, marcandre.lureau, philmd,
mkedzier, 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>
Message-id: 20200616205721.1191408-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] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (7 preceding siblings ...)
2020-06-17 14:23 ` [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
@ 2020-06-17 14:33 ` no-reply
2020-06-17 14:50 ` no-reply
` (2 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: no-reply @ 2020-06-17 14:33 UTC (permalink / raw)
To: stefanb
Cc: stefanb, qemu-devel, eric.auger, marcandre.lureau, pbonzini,
philmd, mkedzier
Patchew URL: https://patchew.org/QEMU/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com/
Hi,
This series seems to have some coding style problems. See output below for
more information:
Subject: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
Type: series
Message-id: 20200617142305.1198672-1-stefanb@linux.vnet.ibm.com
=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
* [new tag] patchew/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com -> patchew/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com
Switched to a new branch 'test'
527f6a6 tpm: Disable interrupt support for TIS on sysbus
2409660 tpm: Guard irq related ops in case interrupts are disabled
727db5a tests: Add updated DSDT
9ae0b0d acpi: Enable TPM IRQ
62a659a tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
4e3994a tests: Temporarily ignore DSDT table differences
651ddf0 tpm: Extend TPMIfClass with get_irqnum() function
9fe25b1 tpm_tis: Allow lowering of IRQ also when locality is not active
=== OUTPUT BEGIN ===
1/8 Checking commit 9fe25b11a231 (tpm_tis: Allow lowering of IRQ also when locality is not active)
2/8 Checking commit 651ddf03a413 (tpm: Extend TPMIfClass with get_irqnum() function)
ERROR: Macros with complex values should be enclosed in parenthesis
#77: FILE: include/sysemu/tpm.h:28:
+#define TPM_IRQ_DISABLED ~0
total: 1 errors, 0 warnings, 70 lines checked
Patch 2/8 has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
3/8 Checking commit 4e3994ae9e45 (tests: Temporarily ignore DSDT table differences)
4/8 Checking commit 62a659ab5c12 (tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ)
5/8 Checking commit 9ae0b0d6f724 (acpi: Enable TPM IRQ)
6/8 Checking commit 727db5ac78ac (tests: Add updated DSDT)
7/8 Checking commit 240966001b86 (tpm: Guard irq related ops in case interrupts are disabled)
8/8 Checking commit 527f6a6fdb16 (tpm: Disable interrupt support for TIS on sysbus)
=== OUTPUT END ===
Test command exited with code: 1
The full log is available at
http://patchew.org/logs/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (8 preceding siblings ...)
2020-06-17 14:33 ` [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts no-reply
@ 2020-06-17 14:50 ` no-reply
2020-06-18 7:27 ` Auger Eric
2020-06-23 13:09 ` Michael S. Tsirkin
11 siblings, 0 replies; 23+ messages in thread
From: no-reply @ 2020-06-17 14:50 UTC (permalink / raw)
To: stefanb
Cc: stefanb, qemu-devel, eric.auger, marcandre.lureau, pbonzini,
philmd, mkedzier
Patchew URL: https://patchew.org/QEMU/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com/
Hi,
This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.
=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===
GEN docs/interop/qemu-qmp-ref.html
GEN docs/interop/qemu-qmp-ref.txt
GEN docs/interop/qemu-qmp-ref.7
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
---
AR libvhost-user.a
GEN docs/interop/qemu-ga-ref.txt
GEN docs/interop/qemu-ga-ref.7
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK qemu-keymap
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK ivshmem-client
LINK ivshmem-server
AS pc-bios/optionrom/multiboot.o
AS pc-bios/optionrom/linuxboot.o
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
CC pc-bios/optionrom/linuxboot_dma.o
AS pc-bios/optionrom/pvh.o
AS pc-bios/optionrom/kvmvapic.o
---
BUILD pc-bios/optionrom/linuxboot_dma.raw
BUILD pc-bios/optionrom/kvmvapic.raw
SIGN pc-bios/optionrom/multiboot.bin
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
SIGN pc-bios/optionrom/linuxboot.bin
SIGN pc-bios/optionrom/linuxboot_dma.bin
LINK qemu-storage-daemon
---
BUILD pc-bios/optionrom/pvh.img
BUILD pc-bios/optionrom/pvh.raw
LINK qemu-img
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
SIGN pc-bios/optionrom/pvh.bin
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK qemu-io
LINK qemu-edid
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK fsdev/virtfs-proxy-helper
LINK scsi/qemu-pr-helper
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK qemu-bridge-helper
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK virtiofsd
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK vhost-user-input
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
LINK qemu-ga
/usr/bin/ld: /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o): warning: common of `__interception::real_vfork' overridden by definition from /usr/lib64/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-devices.h
---
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC x86_64-softmmu/hw/tpm/tpm_ppi.o
/tmp/qemu-test/src/fpu/softfloat.c:3365:13: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
absZ &= ~ ( ( ( roundBits ^ 0x40 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:3423:18: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
absZ0 &= ~ ( ( (uint64_t) ( absZ1<<1 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:3483:18: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
absZ0 &= ~(((uint64_t)(absZ1<<1) == 0) & roundNearestEven);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:3606:13: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
zSig &= ~ ( ( ( roundBits ^ 0x40 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:3760:13: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
zSig &= ~ ( ( ( roundBits ^ 0x200 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:3987:21: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
~ ( ( (uint64_t) ( zSig1<<1 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:4003:22: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
zSig0 &= ~ ( ( (uint64_t) ( zSig1<<1 ) == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
/tmp/qemu-test/src/fpu/softfloat.c:4273:18: error: bitwise negation of a boolean expression; did you mean logical negation? [-Werror,-Wbool-operation]
zSig1 &= ~ ( ( zSig2 + zSig2 == 0 ) & roundNearestEven );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
8 errors generated.
make[1]: *** [/tmp/qemu-test/src/rules.mak:69: fpu/softfloat.o] Error 1
make[1]: *** Waiting for unfinished jobs....
/tmp/qemu-test/src/migration/ram.c:919:45: error: implicit conversion from 'unsigned long' to 'double' changes value from 18446744073709551615 to 18446744073709551616 [-Werror,-Wimplicit-int-float-conversion]
xbzrle_counters.encoding_rate = UINT64_MAX;
~ ^~~~~~~~~~
/usr/include/stdint.h:130:23: note: expanded from macro 'UINT64_MAX'
---
18446744073709551615UL
^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [/tmp/qemu-test/src/rules.mak:69: migration/ram.o] Error 1
make: *** [Makefile:527: x86_64-softmmu/all] Error 2
Traceback (most recent call last):
File "./tests/docker/docker.py", line 669, in <module>
sys.exit(main())
---
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=1eb82116e25740a68f0f82e83cce66ad', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-42oji2ml/src/docker-src.2020-06-17-10.46.07.12769:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=1eb82116e25740a68f0f82e83cce66ad
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-42oji2ml/src'
make: *** [docker-run-test-debug@fedora] Error 2
real 4m7.834s
user 0m8.164s
The full log is available at
http://patchew.org/logs/20200617142305.1198672-1-stefanb@linux.vnet.ibm.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ
2020-06-17 14:23 ` [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
@ 2020-06-18 7:10 ` Auger Eric
0 siblings, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:10 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: marcandre.lureau, Stefan Berger, philmd, mkedzier, pbonzini
Hi Stefan,
On 6/17/20 4:23 PM, Stefan Berger wrote:
> 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>
> Message-id: 20200616205721.1191408-5-stefanb@linux.vnet.ibm.com
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Thanks
Eric
> ---
> 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 ed6d422f05..27222a9a49 100644
> --- a/hw/tpm/tpm_tis_isa.c
> +++ b/hw/tpm/tpm_tis_isa.c
> @@ -97,7 +97,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 86b3988be5..bf4583c3f6 100644
> --- a/hw/tpm/tpm_tis_sysbus.c
> +++ b/hw/tpm/tpm_tis_sysbus.c
> @@ -97,7 +97,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
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function
2020-06-17 14:22 ` [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
@ 2020-06-18 7:10 ` Auger Eric
0 siblings, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:10 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: marcandre.lureau, Stefan Berger, philmd, mkedzier, pbonzini
Hi Stefan,
On 6/17/20 4:22 PM, Stefan Berger wrote:
> From: Stefan Berger <stefanb@sbct-2.pok.ibm.com>
>
> 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>
> Message-id: 20200616205721.1191408-3-stefanb@linux.vnet.ibm.com
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Thanks
Eric
> ---
> 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 30ba37079d..ed6d422f05 100644
> --- a/hw/tpm/tpm_tis_isa.c
> +++ b/hw/tpm/tpm_tis_isa.c
> @@ -80,6 +80,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);
> @@ -148,6 +156,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 eced1fc843..86b3988be5 100644
> --- a/hw/tpm/tpm_tis_sysbus.c
> +++ b/hw/tpm/tpm_tis_sysbus.c
> @@ -80,6 +80,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);
> @@ -137,6 +145,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..7ebe9f7ef0 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 */
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 5/8] acpi: Enable TPM IRQ
2020-06-17 14:23 ` [PATCH v4 5/8] acpi: Enable TPM IRQ Stefan Berger
@ 2020-06-18 7:12 ` Auger Eric
2020-06-23 13:01 ` Igor Mammedov
1 sibling, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:12 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: Michael S . Tsirkin, pbonzini, marcandre.lureau, philmd,
mkedzier, Stefan Berger
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 */
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 6/8] tests: Add updated DSDT
2020-06-17 14:23 ` [PATCH v4 6/8] tests: Add updated DSDT Stefan Berger
@ 2020-06-18 7:13 ` Auger Eric
2020-06-23 13:06 ` Igor Mammedov
1 sibling, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:13 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: Michael S . Tsirkin, pbonzini, marcandre.lureau, philmd,
mkedzier, Stefan Berger
Hi,
On 6/17/20 4:23 PM, Stefan Berger wrote:
> 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>
> Message-id: 20200616205721.1191408-7-stefanb@linux.vnet.ibm.com
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Eric
> CC: 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",
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus
2020-06-17 14:23 ` [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
@ 2020-06-18 7:22 ` Auger Eric
0 siblings, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:22 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: marcandre.lureau, Stefan Berger, philmd, mkedzier, pbonzini
Hi,
On 6/17/20 4:23 PM, Stefan Berger wrote:
> 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>
> Message-id: 20200616205721.1191408-9-stefanb@linux.vnet.ibm.com
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Eric
> ---
> 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
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled
2020-06-17 14:23 ` [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
@ 2020-06-18 7:22 ` Auger Eric
0 siblings, 0 replies; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:22 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: marcandre.lureau, Stefan Berger, philmd, mkedzier, pbonzini
Hi,
On 6/17/20 4:23 PM, Stefan Berger wrote:
> 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>
> Message-id: 20200616205721.1191408-8-stefanb@linux.vnet.ibm.com
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Eric
> ---
> 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 0f42696f1f..13b233309e 100644
> --- a/hw/tpm/tpm_tis_common.c
> +++ b/hw/tpm/tpm_tis_common.c
> @@ -359,7 +359,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;
> @@ -591,6 +595,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 |
> @@ -601,6 +608,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 27222a9a49..d72f733ead 100644
> --- a/hw/tpm/tpm_tis_isa.c
> +++ b/hw/tpm/tpm_tis_isa.c
> @@ -127,13 +127,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);
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (9 preceding siblings ...)
2020-06-17 14:50 ` no-reply
@ 2020-06-18 7:27 ` Auger Eric
2020-06-25 22:37 ` Stefan Berger
2020-06-23 13:09 ` Michael S. Tsirkin
11 siblings, 1 reply; 23+ messages in thread
From: Auger Eric @ 2020-06-18 7:27 UTC (permalink / raw)
To: Stefan Berger, qemu-devel; +Cc: marcandre.lureau, philmd, mkedzier, pbonzini
Hi Stefan,
On 6/17/20 4:22 PM, Stefan Berger wrote:
> This series of patches enables the usage of the TPM TIS with interrupts.
> We use the unused IRQ 13, which is the only one accepted by Windows.
>
> Stefan
>
> v3->v4:
> - Changed TPM_IRQ_DISABLED from -1 to ~0
>
> v2->v3:
> - Extended series to disable IRQ for TIS on sysbus
>
> v1->v2:
> - Added updated DSDT
>
> 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(-)
>
I checked this series does not bring any regression on ARM TPM-TIS
device. So if useful/relevant, feel free to add my T-b from the ARM pov.
Tested-by: Eric Auger <eric.auger@redhat.com>
Thanks
Eric
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 5/8] acpi: Enable TPM IRQ
2020-06-17 14:23 ` [PATCH v4 5/8] acpi: Enable TPM IRQ Stefan Berger
2020-06-18 7:12 ` Auger Eric
@ 2020-06-23 13:01 ` Igor Mammedov
1 sibling, 0 replies; 23+ messages in thread
From: Igor Mammedov @ 2020-06-23 13:01 UTC (permalink / raw)
To: Stefan Berger
Cc: Michael S . Tsirkin, qemu-devel, eric.auger, marcandre.lureau,
pbonzini, philmd, mkedzier, Stefan Berger
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 */
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 6/8] tests: Add updated DSDT
2020-06-17 14:23 ` [PATCH v4 6/8] tests: Add updated DSDT Stefan Berger
2020-06-18 7:13 ` Auger Eric
@ 2020-06-23 13:06 ` Igor Mammedov
1 sibling, 0 replies; 23+ messages in thread
From: Igor Mammedov @ 2020-06-23 13:06 UTC (permalink / raw)
To: Stefan Berger
Cc: Michael S . Tsirkin, qemu-devel, eric.auger, marcandre.lureau,
pbonzini, philmd, mkedzier, Stefan Berger
On Wed, 17 Jun 2020 10:23:03 -0400
Stefan Berger <stefanb@linux.vnet.ibm.com> wrote:
> 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>
> Message-id: 20200616205721.1191408-7-stefanb@linux.vnet.ibm.com
> CC: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@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",
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
` (10 preceding siblings ...)
2020-06-18 7:27 ` Auger Eric
@ 2020-06-23 13:09 ` Michael S. Tsirkin
2020-06-23 13:23 ` Stefan Berger
11 siblings, 1 reply; 23+ messages in thread
From: Michael S. Tsirkin @ 2020-06-23 13:09 UTC (permalink / raw)
To: Stefan Berger
Cc: qemu-devel, eric.auger, pbonzini, marcandre.lureau, philmd, mkedzier
On Wed, Jun 17, 2020 at 10:22:57AM -0400, Stefan Berger wrote:
> This series of patches enables the usage of the TPM TIS with interrupts.
> We use the unused IRQ 13, which is the only one accepted by Windows.
>
> Stefan
ACPI parts:
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
How do we want this merged? TPM tree or mine?
> v3->v4:
> - Changed TPM_IRQ_DISABLED from -1 to ~0
>
> v2->v3:
> - Extended series to disable IRQ for TIS on sysbus
>
> v1->v2:
> - Added updated DSDT
>
> 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] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-23 13:09 ` Michael S. Tsirkin
@ 2020-06-23 13:23 ` Stefan Berger
0 siblings, 0 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-23 13:23 UTC (permalink / raw)
To: Michael S. Tsirkin, Stefan Berger
Cc: qemu-devel, eric.auger, pbonzini, marcandre.lureau, philmd, mkedzier
On 6/23/20 9:09 AM, Michael S. Tsirkin wrote:
> On Wed, Jun 17, 2020 at 10:22:57AM -0400, Stefan Berger wrote:
>> This series of patches enables the usage of the TPM TIS with interrupts.
>> We use the unused IRQ 13, which is the only one accepted by Windows.
>>
>> Stefan
>
> ACPI parts:
>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
>
> How do we want this merged? TPM tree or mine?
Queued it here: https://github.com/stefanberger/qemu-tpm/commits/tpm-next
Was going to send a PR later this week with this part. Will add your Rb-s.
Stefan
>
>> v3->v4:
>> - Changed TPM_IRQ_DISABLED from -1 to ~0
>>
>> v2->v3:
>> - Extended series to disable IRQ for TIS on sysbus
>>
>> v1->v2:
>> - Added updated DSDT
>>
>> 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] 23+ messages in thread
* Re: [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts
2020-06-18 7:27 ` Auger Eric
@ 2020-06-25 22:37 ` Stefan Berger
0 siblings, 0 replies; 23+ messages in thread
From: Stefan Berger @ 2020-06-25 22:37 UTC (permalink / raw)
To: Auger Eric, Stefan Berger, qemu-devel
Cc: marcandre.lureau, philmd, mkedzier, pbonzini
On 6/18/20 3:27 AM, Auger Eric wrote:
I have to defer this series since there are some things that don't work
on the Linux level with IRQ 13 (edge) while they do work fine on the old
IRQ 5 (festeoi). I know which changes to make to Linux so that it works
on IRQ 13 as well, but I am not sure whether those changes are
acceptable. So now we could upstream this one here:
[PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and
TPM_TIS_SYSBUS_IRQ
Stefan
> Hi Stefan,
>
> On 6/17/20 4:22 PM, Stefan Berger wrote:
>> This series of patches enables the usage of the TPM TIS with interrupts.
>> We use the unused IRQ 13, which is the only one accepted by Windows.
>>
>> Stefan
>>
>> v3->v4:
>> - Changed TPM_IRQ_DISABLED from -1 to ~0
>>
>> v2->v3:
>> - Extended series to disable IRQ for TIS on sysbus
>>
>> v1->v2:
>> - Added updated DSDT
>>
>> 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(-)
>>
> I checked this series does not bring any regression on ARM TPM-TIS
> device. So if useful/relevant, feel free to add my T-b from the ARM pov.
>
> Tested-by: Eric Auger <eric.auger@redhat.com>
>
> Thanks
>
> Eric
>
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2020-06-25 22:38 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-17 14:22 [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts Stefan Berger
2020-06-17 14:22 ` [PATCH v4 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active Stefan Berger
2020-06-17 14:22 ` [PATCH v4 2/8] tpm: Extend TPMIfClass with get_irqnum() function Stefan Berger
2020-06-18 7:10 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 3/8] tests: Temporarily ignore DSDT table differences Stefan Berger
2020-06-17 14:23 ` [PATCH v4 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ Stefan Berger
2020-06-18 7:10 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 5/8] acpi: Enable TPM IRQ Stefan Berger
2020-06-18 7:12 ` Auger Eric
2020-06-23 13:01 ` Igor Mammedov
2020-06-17 14:23 ` [PATCH v4 6/8] tests: Add updated DSDT Stefan Berger
2020-06-18 7:13 ` Auger Eric
2020-06-23 13:06 ` Igor Mammedov
2020-06-17 14:23 ` [PATCH v4 7/8] tpm: Guard irq related ops in case interrupts are disabled Stefan Berger
2020-06-18 7:22 ` Auger Eric
2020-06-17 14:23 ` [PATCH v4 8/8] tpm: Disable interrupt support for TIS on sysbus Stefan Berger
2020-06-18 7:22 ` Auger Eric
2020-06-17 14:33 ` [PATCH v4 0/8] tpm: Enable usage of TPM TIS with interrupts no-reply
2020-06-17 14:50 ` no-reply
2020-06-18 7:27 ` Auger Eric
2020-06-25 22:37 ` Stefan Berger
2020-06-23 13:09 ` Michael S. Tsirkin
2020-06-23 13:23 ` Stefan Berger
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.