All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.