All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables
@ 2021-07-12 20:47 Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 01/10] tests: Rename TestState to TPMTestState Stefan Berger
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: philmd, Stefan Berger

This series of patches adds test case for TPM 1.2 ACPI tables.

  Stefan

v4:
  - Added patch 10 that checks for availability of a TPM device model
    using QMP and if not available skips the ACPI table test

v3:
  - Define enum TPMVersion for when CONFIG_TPM is not defined
    affected patches 2 and 6

v2:
  - Proper handling of renaming of files holding expected ACPI data


Stefan Berger (10):
  tests: Rename TestState to TPMTestState
  tests: Add tpm_version field to TPMTestState and fill it
  tests: acpi: Prepare for renaming of TPM2 related ACPI files
  tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files
  tests: acpi: tpm2: Add the renamed ACPI files and drop old ones
  tests: tpm: Create TPM 1.2 response in TPM emulator
  tests: acpi: prepare for new TPM 1.2 related tables
  tests: acpi: Add test cases for TPM 1.2 with TCPA table
  tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs
  tests: Use QMP to check whether a TPM device model is available

 tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 0 -> 8465 bytes
 .../data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} | Bin
 tests/data/acpi/q35/TCPA.tis.tpm12            | Bin 0 -> 50 bytes
 .../data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} | Bin
 tests/qtest/bios-tables-test.c                |  30 ++++++---
 tests/qtest/tpm-crb-test.c                    |   5 +-
 tests/qtest/tpm-emu.c                         |  61 ++++++++++++++++--
 tests/qtest/tpm-emu.h                         |  20 +++++-
 tests/qtest/tpm-tis-device-test.c             |   3 +-
 tests/qtest/tpm-tis-test.c                    |   3 +-
 tests/qtest/tpm-tis-util.c                    |   2 +-
 11 files changed, 100 insertions(+), 24 deletions(-)
 create mode 100644 tests/data/acpi/q35/DSDT.tis.tpm12
 rename tests/data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} (100%)
 create mode 100644 tests/data/acpi/q35/TCPA.tis.tpm12
 rename tests/data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} (100%)

-- 
2.31.1



^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v4 01/10] tests: Rename TestState to TPMTestState
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 02/10] tests: Add tpm_version field to TPMTestState and fill it Stefan Berger
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, philmd, Stefan Berger

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test.c    | 2 +-
 tests/qtest/tpm-crb-test.c        | 4 ++--
 tests/qtest/tpm-emu.c             | 6 +++---
 tests/qtest/tpm-emu.h             | 6 +++---
 tests/qtest/tpm-tis-device-test.c | 2 +-
 tests/qtest/tpm-tis-test.c        | 2 +-
 tests/qtest/tpm-tis-util.c        | 2 +-
 7 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 51d3a4e239..a622f91a37 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1098,7 +1098,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
     gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
                                           machine, tpm_if);
     char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
-    TestState test;
+    TPMTestState test;
     test_data data;
     GThread *thread;
     char *args, *variant = g_strdup_printf(".%s", tpm_if);
diff --git a/tests/qtest/tpm-crb-test.c b/tests/qtest/tpm-crb-test.c
index ed533900d1..50936f1482 100644
--- a/tests/qtest/tpm-crb-test.c
+++ b/tests/qtest/tpm-crb-test.c
@@ -26,7 +26,7 @@ uint64_t tpm_tis_base_addr = TPM_TIS_ADDR_BASE;
 
 static void tpm_crb_test(const void *data)
 {
-    const TestState *s = data;
+    const TPMTestState *s = data;
     uint32_t intfid = readl(TPM_CRB_ADDR_BASE + A_CRB_INTF_ID);
     uint32_t csize = readl(TPM_CRB_ADDR_BASE + A_CRB_CTRL_CMD_SIZE);
     uint64_t caddr = readq(TPM_CRB_ADDR_BASE + A_CRB_CTRL_CMD_LADDR);
@@ -145,7 +145,7 @@ int main(int argc, char **argv)
     int ret;
     char *args, *tmp_path = g_dir_make_tmp("qemu-tpm-crb-test.XXXXXX", NULL);
     GThread *thread;
-    TestState test;
+    TPMTestState test;
 
     module_call_init(MODULE_INIT_QOM);
     g_test_init(&argc, &argv, NULL);
diff --git a/tests/qtest/tpm-emu.c b/tests/qtest/tpm-emu.c
index 2e8eb7b94f..b9cddcc240 100644
--- a/tests/qtest/tpm-emu.c
+++ b/tests/qtest/tpm-emu.c
@@ -18,7 +18,7 @@
 #include "qapi/error.h"
 #include "tpm-emu.h"
 
-void tpm_emu_test_wait_cond(TestState *s)
+void tpm_emu_test_wait_cond(TPMTestState *s)
 {
     gint64 end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND;
 
@@ -36,7 +36,7 @@ void tpm_emu_test_wait_cond(TestState *s)
 
 static void *tpm_emu_tpm_thread(void *data)
 {
-    TestState *s = data;
+    TPMTestState *s = data;
     QIOChannel *ioc = s->tpm_ioc;
 
     s->tpm_msg = g_new(struct tpm_hdr, 1);
@@ -71,7 +71,7 @@ static void *tpm_emu_tpm_thread(void *data)
 
 void *tpm_emu_ctrl_thread(void *data)
 {
-    TestState *s = data;
+    TPMTestState *s = data;
     QIOChannelSocket *lioc = qio_channel_socket_new();
     QIOChannel *ioc;
 
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index 73f3bed0c4..b066ad63fb 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -26,7 +26,7 @@ struct tpm_hdr {
     char buffer[];
 } QEMU_PACKED;
 
-typedef struct TestState {
+typedef struct TPMTestState {
     GMutex data_mutex;
     GCond data_cond;
     bool data_cond_signal;
@@ -34,9 +34,9 @@ typedef struct TestState {
     QIOChannel *tpm_ioc;
     GThread *emu_tpm_thread;
     struct tpm_hdr *tpm_msg;
-} TestState;
+} TPMTestState;
 
-void tpm_emu_test_wait_cond(TestState *s);
+void tpm_emu_test_wait_cond(TPMTestState *s);
 void *tpm_emu_ctrl_thread(void *data);
 
 #endif /* TESTS_TPM_EMU_H */
diff --git a/tests/qtest/tpm-tis-device-test.c b/tests/qtest/tpm-tis-device-test.c
index 63ed36440f..d36ae20243 100644
--- a/tests/qtest/tpm-tis-device-test.c
+++ b/tests/qtest/tpm-tis-device-test.c
@@ -33,7 +33,7 @@ int main(int argc, char **argv)
 {
     char *tmp_path = g_dir_make_tmp("qemu-tpm-tis-device-test.XXXXXX", NULL);
     GThread *thread;
-    TestState test;
+    TPMTestState test;
     char *args;
     int ret;
 
diff --git a/tests/qtest/tpm-tis-test.c b/tests/qtest/tpm-tis-test.c
index 79ffbc943e..6fee4779ea 100644
--- a/tests/qtest/tpm-tis-test.c
+++ b/tests/qtest/tpm-tis-test.c
@@ -29,7 +29,7 @@ int main(int argc, char **argv)
     int ret;
     char *args, *tmp_path = g_dir_make_tmp("qemu-tpm-tis-test.XXXXXX", NULL);
     GThread *thread;
-    TestState test;
+    TPMTestState test;
 
     module_call_init(MODULE_INIT_QOM);
     g_test_init(&argc, &argv, NULL);
diff --git a/tests/qtest/tpm-tis-util.c b/tests/qtest/tpm-tis-util.c
index 9aff503fd8..939893bf01 100644
--- a/tests/qtest/tpm-tis-util.c
+++ b/tests/qtest/tpm-tis-util.c
@@ -373,7 +373,7 @@ void tpm_tis_test_check_access_reg_release(const void *data)
  */
 void tpm_tis_test_check_transmit(const void *data)
 {
-    const TestState *s = data;
+    const TPMTestState *s = data;
     uint8_t access;
     uint32_t sts;
     uint16_t bcount;
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 02/10] tests: Add tpm_version field to TPMTestState and fill it
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 01/10] tests: Rename TestState to TPMTestState Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 03/10] tests: acpi: Prepare for renaming of TPM2 related ACPI files Stefan Berger
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: Stefan Berger, philmd, Stefan Berger

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

---
v3:
 - Added enum TPMVersion for when CONFIG_TPM is not defined
---
 tests/qtest/bios-tables-test.c    |  5 +++--
 tests/qtest/tpm-crb-test.c        |  1 +
 tests/qtest/tpm-emu.c             | 13 ++++++++++---
 tests/qtest/tpm-emu.h             |  8 ++++++++
 tests/qtest/tpm-tis-device-test.c |  1 +
 tests/qtest/tpm-tis-test.c        |  1 +
 6 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index a622f91a37..93c9d306b5 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1092,7 +1092,7 @@ static void test_acpi_piix4_tcg_numamem(void)
 uint64_t tpm_tis_base_addr;
 
 static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
-                              uint64_t base)
+                              uint64_t base, enum TPMVersion tpm_version)
 {
 #ifdef CONFIG_TPM
     gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
@@ -1113,6 +1113,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
     g_mutex_init(&test.data_mutex);
     g_cond_init(&test.data_cond);
     test.data_cond_signal = false;
+    test.tpm_version = tpm_version;
 
     thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
     tpm_emu_test_wait_cond(&test);
@@ -1145,7 +1146,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
 
 static void test_acpi_q35_tcg_tpm_tis(void)
 {
-    test_acpi_tcg_tpm("q35", "tis", 0xFED40000);
+    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
 }
 
 static void test_acpi_tcg_dimm_pxm(const char *machine)
diff --git a/tests/qtest/tpm-crb-test.c b/tests/qtest/tpm-crb-test.c
index 50936f1482..7b94453390 100644
--- a/tests/qtest/tpm-crb-test.c
+++ b/tests/qtest/tpm-crb-test.c
@@ -156,6 +156,7 @@ int main(int argc, char **argv)
     g_mutex_init(&test.data_mutex);
     g_cond_init(&test.data_cond);
     test.data_cond_signal = false;
+    test.tpm_version = TPM_VERSION_2_0;
 
     thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
     tpm_emu_test_wait_cond(&test);
diff --git a/tests/qtest/tpm-emu.c b/tests/qtest/tpm-emu.c
index b9cddcc240..8baf49eafd 100644
--- a/tests/qtest/tpm-emu.c
+++ b/tests/qtest/tpm-emu.c
@@ -56,9 +56,16 @@ static void *tpm_emu_tpm_thread(void *data)
         s->tpm_msg->code = be32_to_cpu(s->tpm_msg->code);
 
         /* reply error */
-        s->tpm_msg->tag = cpu_to_be16(TPM2_ST_NO_SESSIONS);
-        s->tpm_msg->len = cpu_to_be32(sizeof(struct tpm_hdr));
-        s->tpm_msg->code = cpu_to_be32(TPM_RC_FAILURE);
+        switch (s->tpm_version) {
+        case TPM_VERSION_2_0:
+            s->tpm_msg->tag = cpu_to_be16(TPM2_ST_NO_SESSIONS);
+            s->tpm_msg->len = cpu_to_be32(sizeof(struct tpm_hdr));
+            s->tpm_msg->code = cpu_to_be32(TPM_RC_FAILURE);
+            break;
+        default:
+            g_debug("unsupport TPM version %u", s->tpm_version);
+            g_assert_not_reached();
+        }
         qio_channel_write(ioc, (char *)s->tpm_msg, be32_to_cpu(s->tpm_msg->len),
                           &error_abort);
     }
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index b066ad63fb..610519883a 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -18,6 +18,7 @@
 
 #include "qemu/sockets.h"
 #include "io/channel.h"
+#include "sysemu/tpm.h"
 
 struct tpm_hdr {
     uint16_t tag;
@@ -26,6 +27,12 @@ struct tpm_hdr {
     char buffer[];
 } QEMU_PACKED;
 
+#ifndef CONFIG_TPM
+enum TPMVersion {
+    TPM_VERSION_2_0 = 2,
+};
+#endif
+
 typedef struct TPMTestState {
     GMutex data_mutex;
     GCond data_cond;
@@ -34,6 +41,7 @@ typedef struct TPMTestState {
     QIOChannel *tpm_ioc;
     GThread *emu_tpm_thread;
     struct tpm_hdr *tpm_msg;
+    enum TPMVersion tpm_version;
 } TPMTestState;
 
 void tpm_emu_test_wait_cond(TPMTestState *s);
diff --git a/tests/qtest/tpm-tis-device-test.c b/tests/qtest/tpm-tis-device-test.c
index d36ae20243..3ddefb51ec 100644
--- a/tests/qtest/tpm-tis-device-test.c
+++ b/tests/qtest/tpm-tis-device-test.c
@@ -46,6 +46,7 @@ int main(int argc, char **argv)
     g_mutex_init(&test.data_mutex);
     g_cond_init(&test.data_cond);
     test.data_cond_signal = false;
+    test.tpm_version = TPM_VERSION_2_0;
 
     thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
     tpm_emu_test_wait_cond(&test);
diff --git a/tests/qtest/tpm-tis-test.c b/tests/qtest/tpm-tis-test.c
index 6fee4779ea..a4a25ba745 100644
--- a/tests/qtest/tpm-tis-test.c
+++ b/tests/qtest/tpm-tis-test.c
@@ -40,6 +40,7 @@ int main(int argc, char **argv)
     g_mutex_init(&test.data_mutex);
     g_cond_init(&test.data_cond);
     test.data_cond_signal = false;
+    test.tpm_version = TPM_VERSION_2_0;
 
     thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
     tpm_emu_test_wait_cond(&test);
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 03/10] tests: acpi: Prepare for renaming of TPM2 related ACPI files
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 01/10] tests: Rename TestState to TPMTestState Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 02/10] tests: Add tpm_version field to TPMTestState and fill it Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 04/10] tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files Stefan Berger
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/data/acpi/q35/DSDT.tis.tpm2           | 0
 tests/data/acpi/q35/TPM2.tis.tpm2           | 0
 tests/qtest/bios-tables-test-allowed-diff.h | 2 ++
 3 files changed, 2 insertions(+)
 create mode 100644 tests/data/acpi/q35/DSDT.tis.tpm2
 create mode 100644 tests/data/acpi/q35/TPM2.tis.tpm2

diff --git a/tests/data/acpi/q35/DSDT.tis.tpm2 b/tests/data/acpi/q35/DSDT.tis.tpm2
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/data/acpi/q35/TPM2.tis.tpm2 b/tests/data/acpi/q35/TPM2.tis.tpm2
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..b301b8fa06 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,3 @@
 /* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT.tis.tpm2",
+"tests/data/acpi/q35/TPM2.tis.tpm2",
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 04/10] tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (2 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 03/10] tests: acpi: Prepare for renaming of TPM2 related ACPI files Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 05/10] tests: acpi: tpm2: Add the renamed ACPI files and drop old ones Stefan Berger
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 93c9d306b5..4ccbe56158 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1101,7 +1101,8 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
     TPMTestState test;
     test_data data;
     GThread *thread;
-    char *args, *variant = g_strdup_printf(".%s", tpm_if);
+    const char *suffix = tpm_version == TPM_VERSION_2_0 ? "tpm2" : "tpm12";
+    char *args, *variant = g_strdup_printf(".%s.%s", tpm_if, suffix);
 
     tpm_tis_base_addr = base;
 
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 05/10] tests: acpi: tpm2: Add the renamed ACPI files and drop old ones
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (3 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 04/10] tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 06/10] tests: tpm: Create TPM 1.2 response in TPM emulator Stefan Berger
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/data/acpi/q35/DSDT.tis                | Bin 8465 -> 0 bytes
 tests/data/acpi/q35/DSDT.tis.tpm2           | Bin 0 -> 8465 bytes
 tests/data/acpi/q35/TPM2.tis                | Bin 76 -> 0 bytes
 tests/data/acpi/q35/TPM2.tis.tpm2           | Bin 0 -> 76 bytes
 tests/qtest/bios-tables-test-allowed-diff.h |   2 --
 5 files changed, 2 deletions(-)
 delete mode 100644 tests/data/acpi/q35/DSDT.tis
 delete mode 100644 tests/data/acpi/q35/TPM2.tis

diff --git a/tests/data/acpi/q35/DSDT.tis b/tests/data/acpi/q35/DSDT.tis
deleted file mode 100644
index 15a26a14e4be5280c0f1cc09f66428311100b7ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8465
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
Mh>{=D$sDl%17maSY5)KL

diff --git a/tests/data/acpi/q35/DSDT.tis.tpm2 b/tests/data/acpi/q35/DSDT.tis.tpm2
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..15a26a14e4be5280c0f1cc09f66428311100b7ab 100644
GIT binary patch
literal 8465
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
Mh>{=D$sDl%17maSY5)KL

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/TPM2.tis b/tests/data/acpi/q35/TPM2.tis
deleted file mode 100644
index fe0f05987be40f1c1742ae189df7821adc522fc0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 76
wcmWFu@HO&bU|?Vob@F%i2v%^42yj*a0!E-1hz+8V0UI(0%m%6W&kkY&0CHRh0RR91

diff --git a/tests/data/acpi/q35/TPM2.tis.tpm2 b/tests/data/acpi/q35/TPM2.tis.tpm2
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe0f05987be40f1c1742ae189df7821adc522fc0 100644
GIT binary patch
literal 76
wcmWFu@HO&bU|?Vob@F%i2v%^42yj*a0!E-1hz+8V0UI(0%m%6W&kkY&0CHRh0RR91

literal 0
HcmV?d00001

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index b301b8fa06..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,3 +1 @@
 /* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT.tis.tpm2",
-"tests/data/acpi/q35/TPM2.tis.tpm2",
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 06/10] tests: tpm: Create TPM 1.2 response in TPM emulator
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (4 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 05/10] tests: acpi: tpm2: Add the renamed ACPI files and drop old ones Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 07/10] tests: acpi: prepare for new TPM 1.2 related tables Stefan Berger
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: Stefan Berger, philmd, Stefan Berger

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

---
v3:
  - Added TPM_VERSION_1_2 enum for when CONFIG_TPM is not defined
---
 tests/qtest/tpm-emu.c | 5 +++++
 tests/qtest/tpm-emu.h | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/tests/qtest/tpm-emu.c b/tests/qtest/tpm-emu.c
index 8baf49eafd..32c704194b 100644
--- a/tests/qtest/tpm-emu.c
+++ b/tests/qtest/tpm-emu.c
@@ -62,6 +62,11 @@ static void *tpm_emu_tpm_thread(void *data)
             s->tpm_msg->len = cpu_to_be32(sizeof(struct tpm_hdr));
             s->tpm_msg->code = cpu_to_be32(TPM_RC_FAILURE);
             break;
+        case TPM_VERSION_1_2:
+            s->tpm_msg->tag = cpu_to_be16(TPM_TAG_RSP_COMMAND);
+            s->tpm_msg->len = cpu_to_be32(sizeof(struct tpm_hdr));
+            s->tpm_msg->code = cpu_to_be32(TPM_FAIL);
+            break;
         default:
             g_debug("unsupport TPM version %u", s->tpm_version);
             g_assert_not_reached();
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index 610519883a..fcb5d7a1d6 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -16,6 +16,9 @@
 #define TPM_RC_FAILURE 0x101
 #define TPM2_ST_NO_SESSIONS 0x8001
 
+#define TPM_FAIL 9
+#define TPM_TAG_RSP_COMMAND 0xc4
+
 #include "qemu/sockets.h"
 #include "io/channel.h"
 #include "sysemu/tpm.h"
@@ -29,6 +32,7 @@ struct tpm_hdr {
 
 #ifndef CONFIG_TPM
 enum TPMVersion {
+    TPM_VERSION_1_2 = 1,
     TPM_VERSION_2_0 = 2,
 };
 #endif
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 07/10] tests: acpi: prepare for new TPM 1.2 related tables
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (5 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 06/10] tests: tpm: Create TPM 1.2 response in TPM emulator Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 08/10] tests: acpi: Add test cases for TPM 1.2 with TCPA table Stefan Berger
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/data/acpi/q35/DSDT.tis.tpm12          | 0
 tests/data/acpi/q35/TCPA.tis.tpm12          | 0
 tests/qtest/bios-tables-test-allowed-diff.h | 2 ++
 3 files changed, 2 insertions(+)
 create mode 100644 tests/data/acpi/q35/DSDT.tis.tpm12
 create mode 100644 tests/data/acpi/q35/TCPA.tis.tpm12

diff --git a/tests/data/acpi/q35/DSDT.tis.tpm12 b/tests/data/acpi/q35/DSDT.tis.tpm12
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/data/acpi/q35/TCPA.tis.tpm12 b/tests/data/acpi/q35/TCPA.tis.tpm12
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..fb093b32b9 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,3 @@
 /* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT.tis.tpm12",
+"tests/data/acpi/q35/TCPA.tis.tpm12",
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 08/10] tests: acpi: Add test cases for TPM 1.2 with TCPA table
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (6 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 07/10] tests: acpi: prepare for new TPM 1.2 related tables Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 09/10] tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs Stefan Berger
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 4ccbe56158..ddfd2d2b2a 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1145,11 +1145,16 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
 #endif
 }
 
-static void test_acpi_q35_tcg_tpm_tis(void)
+static void test_acpi_q35_tcg_tpm2_tis(void)
 {
     test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
 }
 
+static void test_acpi_q35_tcg_tpm12_tis(void)
+{
+    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);
+}
+
 static void test_acpi_tcg_dimm_pxm(const char *machine)
 {
     test_data data;
@@ -1518,7 +1523,8 @@ int main(int argc, char *argv[])
             return ret;
         }
         qtest_add_func("acpi/q35/oem-fields", test_acpi_oem_fields_q35);
-        qtest_add_func("acpi/q35/tpm-tis", test_acpi_q35_tcg_tpm_tis);
+        qtest_add_func("acpi/q35/tpm2-tis", test_acpi_q35_tcg_tpm2_tis);
+        qtest_add_func("acpi/q35/tpm12-tis", test_acpi_q35_tcg_tpm12_tis);
         qtest_add_func("acpi/piix4", test_acpi_piix4_tcg);
         qtest_add_func("acpi/oem-fields", test_acpi_oem_fields_pc);
         qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge);
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 09/10] tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (7 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 08/10] tests: acpi: Add test cases for TPM 1.2 with TCPA table Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-12 20:47 ` [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available Stefan Berger
  2021-07-13 15:19 ` [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Michael S. Tsirkin
  10 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau
  Cc: Igor Mammedov, Stefan Berger, Michael S . Tsirkin, philmd, Stefan Berger

The TCPA.tis.tpm12 file contains the following:

[000h 0000   4]                    Signature : "TCPA"    [Trusted Computing Platform Alliance table]
[004h 0004   4]                 Table Length : 00000032
[008h 0008   1]                     Revision : 02
[009h 0009   1]                     Checksum : 32
[00Ah 0010   6]                       Oem ID : "BOCHS "
[010h 0016   8]                 Oem Table ID : "BXPC    "
[018h 0024   4]                 Oem Revision : 00000001
[01Ch 0028   4]              Asl Compiler ID : "BXPC"
[020h 0032   4]        Asl Compiler Revision : 00000001

[024h 0036   2]               Platform Class : 0000
[026h 0038   4]         Min Event Log Length : 00010000
[02Ah 0042   8]            Event Log Address : 0000000007FF0000

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/data/acpi/q35/DSDT.tis.tpm12          | Bin 0 -> 8465 bytes
 tests/data/acpi/q35/TCPA.tis.tpm12          | Bin 0 -> 50 bytes
 tests/qtest/bios-tables-test-allowed-diff.h |   2 --
 3 files changed, 2 deletions(-)

diff --git a/tests/data/acpi/q35/DSDT.tis.tpm12 b/tests/data/acpi/q35/DSDT.tis.tpm12
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4178162b0b20b2a4a391daa73264963c28a99a3a 100644
GIT binary patch
literal 8465
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
HnFIEJ<TmVT

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/TCPA.tis.tpm12 b/tests/data/acpi/q35/TCPA.tis.tpm12
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a56961b413e7715b3d60f9836d1c8f2f4c7347cb 100644
GIT binary patch
literal 50
qcmWG>4sbMLU|?V}a`Jcf2v%^42yj*a0!E-1hz+7a07U<12eAOxRtEt9

literal 0
HcmV?d00001

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index fb093b32b9..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,3 +1 @@
 /* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT.tis.tpm12",
-"tests/data/acpi/q35/TCPA.tis.tpm12",
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (8 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 09/10] tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs Stefan Berger
@ 2021-07-12 20:47 ` Stefan Berger
  2021-07-13 12:12   ` Stefan Berger
  2021-07-13 16:36   ` Philippe Mathieu-Daudé
  2021-07-13 15:19 ` [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Michael S. Tsirkin
  10 siblings, 2 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-12 20:47 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: Stefan Berger, philmd, Stefan Berger

Use QMP to check whether a given TPM device model is available
and if it is not the case then skip a test that requires it.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
 tests/qtest/bios-tables-test.c | 14 +++++++------
 tests/qtest/tpm-emu.c          | 37 ++++++++++++++++++++++++++++++++++
 tests/qtest/tpm-emu.h          |  2 ++
 3 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index ddfd2d2b2a..64add7da72 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1094,7 +1094,6 @@ uint64_t tpm_tis_base_addr;
 static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
                               uint64_t base, enum TPMVersion tpm_version)
 {
-#ifdef CONFIG_TPM
     gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
                                           machine, tpm_if);
     char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
@@ -1140,19 +1139,22 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
     g_free(tmp_dir_name);
     g_free(args);
     free_test_data(&data);
-#else
-    g_test_skip("TPM disabled");
-#endif
 }
 
 static void test_acpi_q35_tcg_tpm2_tis(void)
 {
-    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
+    if (!tpm_model_is_available("-machine q35", "tpm-tis"))
+        g_test_skip("TPM disabled");
+    else
+        test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
 }
 
 static void test_acpi_q35_tcg_tpm12_tis(void)
 {
-    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);
+    if (!tpm_model_is_available("-machine q35", "tpm-tis"))
+        g_test_skip("TPM disabled");
+    else
+        test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);
 }
 
 static void test_acpi_tcg_dimm_pxm(const char *machine)
diff --git a/tests/qtest/tpm-emu.c b/tests/qtest/tpm-emu.c
index 32c704194b..553f1ad4ee 100644
--- a/tests/qtest/tpm-emu.c
+++ b/tests/qtest/tpm-emu.c
@@ -16,6 +16,8 @@
 #include "backends/tpm/tpm_ioctl.h"
 #include "io/channel-socket.h"
 #include "qapi/error.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qstring.h"
 #include "tpm-emu.h"
 
 void tpm_emu_test_wait_cond(TPMTestState *s)
@@ -192,3 +194,38 @@ void *tpm_emu_ctrl_thread(void *data)
     object_unref(OBJECT(lioc));
     return NULL;
 }
+
+bool tpm_model_is_available(const char *args, const char *tpm_if)
+{
+    QTestState *qts;
+    QDict *rsp_tpm;
+    bool ret = false;
+
+    qts = qtest_init(args);
+    if (!qts)
+        return false;
+
+    rsp_tpm = qtest_qmp(qts, "{ 'execute': 'query-tpm'}");
+    if (!qdict_haskey(rsp_tpm, "error")) {
+        QDict *rsp_models = qtest_qmp(qts,
+                                      "{ 'execute': 'query-tpm-models'}");
+        if (qdict_haskey(rsp_models, "return")) {
+            QList *models = qdict_get_qlist(rsp_models, "return");
+            QListEntry *e;
+
+            QLIST_FOREACH_ENTRY(models, e) {
+                QString *s = qobject_to(QString, qlist_entry_obj(e));
+                const char *ename = qstring_get_str(s);
+                if (!strcmp(ename, tpm_if)) {
+                    ret = true;
+                }
+            }
+            qobject_unref(models);
+        }
+        qobject_unref(rsp_models);
+    }
+    qobject_unref(rsp_tpm);
+    qtest_quit(qts);
+
+    return ret;
+}
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index fcb5d7a1d6..c33d99af37 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -22,6 +22,7 @@
 #include "qemu/sockets.h"
 #include "io/channel.h"
 #include "sysemu/tpm.h"
+#include "libqos/libqtest.h"
 
 struct tpm_hdr {
     uint16_t tag;
@@ -50,5 +51,6 @@ typedef struct TPMTestState {
 
 void tpm_emu_test_wait_cond(TPMTestState *s);
 void *tpm_emu_ctrl_thread(void *data);
+bool tpm_model_is_available(const char *args, const char *tpm_if);
 
 #endif /* TESTS_TPM_EMU_H */
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available
  2021-07-12 20:47 ` [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available Stefan Berger
@ 2021-07-13 12:12   ` Stefan Berger
  2021-07-13 16:36   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-13 12:12 UTC (permalink / raw)
  To: Stefan Berger, qemu-devel, marcandre.lureau; +Cc: philmd


On 7/12/21 4:47 PM, Stefan Berger wrote:
> Use QMP to check whether a given TPM device model is available
> and if it is not the case then skip a test that requires it.
>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>
> +    rsp_tpm = qtest_qmp(qts, "{ 'execute': 'query-tpm'}");
> +    if (!qdict_haskey(rsp_tpm, "error")) {
> +        QDict *rsp_models = qtest_qmp(qts,
> +                                      "{ 'execute': 'query-tpm-models'}");
> +        if (qdict_haskey(rsp_models, "return")) {
> +            QList *models = qdict_get_qlist(rsp_models, "return");
> +            QListEntry *e;
> +
> +            QLIST_FOREACH_ENTRY(models, e) {
> +                QString *s = qobject_to(QString, qlist_entry_obj(e));
> +                const char *ename = qstring_get_str(s);
> +                if (!strcmp(ename, tpm_if)) {
> +                    ret = true;
> +                }
> +            }
> +            qobject_unref(models);

I think this unref was too much. It tipped off s390x but none other (?).

https://travis-ci.com/github/stefanberger/qemu-tpm/builds/232529861


I fixed this in v5 (https://travis-ci.com/github/stefanberger/qemu-tpm)


I think this is generally the right approach for this test case, isn't it?


> +        }
> +        qobject_unref(rsp_models);
> +    }
> +    qobject_unref(rsp_tpm);
> +    qtest_quit(qts);
> +
> +    return ret;
> +}
> diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
> index fcb5d7a1d6..c33d99af37 100644
> --- a/tests/qtest/tpm-emu.h
> +++ b/tests/qtest/tpm-emu.h
> @@ -22,6 +22,7 @@
>   #include "qemu/sockets.h"
>   #include "io/channel.h"
>   #include "sysemu/tpm.h"
> +#include "libqos/libqtest.h"
>   
>   struct tpm_hdr {
>       uint16_t tag;
> @@ -50,5 +51,6 @@ typedef struct TPMTestState {
>   
>   void tpm_emu_test_wait_cond(TPMTestState *s);
>   void *tpm_emu_ctrl_thread(void *data);
> +bool tpm_model_is_available(const char *args, const char *tpm_if);
>   
>   #endif /* TESTS_TPM_EMU_H */


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables
  2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
                   ` (9 preceding siblings ...)
  2021-07-12 20:47 ` [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available Stefan Berger
@ 2021-07-13 15:19 ` Michael S. Tsirkin
  2021-07-13 15:42   ` Stefan Berger
  10 siblings, 1 reply; 15+ messages in thread
From: Michael S. Tsirkin @ 2021-07-13 15:19 UTC (permalink / raw)
  To: Stefan Berger; +Cc: marcandre.lureau, philmd, qemu-devel

On Mon, Jul 12, 2021 at 04:47:26PM -0400, Stefan Berger wrote:
> This series of patches adds test case for TPM 1.2 ACPI tables.


Acked-by: Michael S. Tsirkin <mst@redhat.com>

Pls feel free to merge through tpm tree.

>   Stefan
> 
> v4:
>   - Added patch 10 that checks for availability of a TPM device model
>     using QMP and if not available skips the ACPI table test
> 
> v3:
>   - Define enum TPMVersion for when CONFIG_TPM is not defined
>     affected patches 2 and 6
> 
> v2:
>   - Proper handling of renaming of files holding expected ACPI data
> 
> 
> Stefan Berger (10):
>   tests: Rename TestState to TPMTestState
>   tests: Add tpm_version field to TPMTestState and fill it
>   tests: acpi: Prepare for renaming of TPM2 related ACPI files
>   tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files
>   tests: acpi: tpm2: Add the renamed ACPI files and drop old ones
>   tests: tpm: Create TPM 1.2 response in TPM emulator
>   tests: acpi: prepare for new TPM 1.2 related tables
>   tests: acpi: Add test cases for TPM 1.2 with TCPA table
>   tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs
>   tests: Use QMP to check whether a TPM device model is available
> 
>  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 0 -> 8465 bytes
>  .../data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} | Bin
>  tests/data/acpi/q35/TCPA.tis.tpm12            | Bin 0 -> 50 bytes
>  .../data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} | Bin
>  tests/qtest/bios-tables-test.c                |  30 ++++++---
>  tests/qtest/tpm-crb-test.c                    |   5 +-
>  tests/qtest/tpm-emu.c                         |  61 ++++++++++++++++--
>  tests/qtest/tpm-emu.h                         |  20 +++++-
>  tests/qtest/tpm-tis-device-test.c             |   3 +-
>  tests/qtest/tpm-tis-test.c                    |   3 +-
>  tests/qtest/tpm-tis-util.c                    |   2 +-
>  11 files changed, 100 insertions(+), 24 deletions(-)
>  create mode 100644 tests/data/acpi/q35/DSDT.tis.tpm12
>  rename tests/data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} (100%)
>  create mode 100644 tests/data/acpi/q35/TCPA.tis.tpm12
>  rename tests/data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} (100%)
> 
> -- 
> 2.31.1
> 
> 



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables
  2021-07-13 15:19 ` [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Michael S. Tsirkin
@ 2021-07-13 15:42   ` Stefan Berger
  0 siblings, 0 replies; 15+ messages in thread
From: Stefan Berger @ 2021-07-13 15:42 UTC (permalink / raw)
  To: Michael S. Tsirkin, Stefan Berger; +Cc: marcandre.lureau, philmd, qemu-devel


On 7/13/21 11:19 AM, Michael S. Tsirkin wrote:
> On Mon, Jul 12, 2021 at 04:47:26PM -0400, Stefan Berger wrote:
>> This series of patches adds test case for TPM 1.2 ACPI tables.
>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
>
> Pls feel free to merge through tpm tree.

Thanks. I will have to post a v5 since this one had issues on s390x.

   Stefan


>
>>    Stefan
>>
>> v4:
>>    - Added patch 10 that checks for availability of a TPM device model
>>      using QMP and if not available skips the ACPI table test
>>
>> v3:
>>    - Define enum TPMVersion for when CONFIG_TPM is not defined
>>      affected patches 2 and 6
>>
>> v2:
>>    - Proper handling of renaming of files holding expected ACPI data
>>
>>
>> Stefan Berger (10):
>>    tests: Rename TestState to TPMTestState
>>    tests: Add tpm_version field to TPMTestState and fill it
>>    tests: acpi: Prepare for renaming of TPM2 related ACPI files
>>    tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files
>>    tests: acpi: tpm2: Add the renamed ACPI files and drop old ones
>>    tests: tpm: Create TPM 1.2 response in TPM emulator
>>    tests: acpi: prepare for new TPM 1.2 related tables
>>    tests: acpi: Add test cases for TPM 1.2 with TCPA table
>>    tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs
>>    tests: Use QMP to check whether a TPM device model is available
>>
>>   tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 0 -> 8465 bytes
>>   .../data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} | Bin
>>   tests/data/acpi/q35/TCPA.tis.tpm12            | Bin 0 -> 50 bytes
>>   .../data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} | Bin
>>   tests/qtest/bios-tables-test.c                |  30 ++++++---
>>   tests/qtest/tpm-crb-test.c                    |   5 +-
>>   tests/qtest/tpm-emu.c                         |  61 ++++++++++++++++--
>>   tests/qtest/tpm-emu.h                         |  20 +++++-
>>   tests/qtest/tpm-tis-device-test.c             |   3 +-
>>   tests/qtest/tpm-tis-test.c                    |   3 +-
>>   tests/qtest/tpm-tis-util.c                    |   2 +-
>>   11 files changed, 100 insertions(+), 24 deletions(-)
>>   create mode 100644 tests/data/acpi/q35/DSDT.tis.tpm12
>>   rename tests/data/acpi/q35/{DSDT.tis => DSDT.tis.tpm2} (100%)
>>   create mode 100644 tests/data/acpi/q35/TCPA.tis.tpm12
>>   rename tests/data/acpi/q35/{TPM2.tis => TPM2.tis.tpm2} (100%)
>>
>> -- 
>> 2.31.1
>>
>>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available
  2021-07-12 20:47 ` [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available Stefan Berger
  2021-07-13 12:12   ` Stefan Berger
@ 2021-07-13 16:36   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-13 16:36 UTC (permalink / raw)
  To: Stefan Berger, qemu-devel, marcandre.lureau; +Cc: Stefan Berger

Hi Stefan,

On 7/12/21 10:47 PM, Stefan Berger wrote:
> Use QMP to check whether a given TPM device model is available
> and if it is not the case then skip a test that requires it.
> 
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
> ---
>  tests/qtest/bios-tables-test.c | 14 +++++++------
>  tests/qtest/tpm-emu.c          | 37 ++++++++++++++++++++++++++++++++++
>  tests/qtest/tpm-emu.h          |  2 ++
>  3 files changed, 47 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index ddfd2d2b2a..64add7da72 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -1094,7 +1094,6 @@ uint64_t tpm_tis_base_addr;
>  static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
>                                uint64_t base, enum TPMVersion tpm_version)
>  {
> -#ifdef CONFIG_TPM
>      gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
>                                            machine, tpm_if);
>      char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
> @@ -1140,19 +1139,22 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
>      g_free(tmp_dir_name);
>      g_free(args);
>      free_test_data(&data);
> -#else
> -    g_test_skip("TPM disabled");
> -#endif
>  }
>  
>  static void test_acpi_q35_tcg_tpm2_tis(void)
>  {
> -    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
> +    if (!tpm_model_is_available("-machine q35", "tpm-tis"))

Style requires { }

> +        g_test_skip("TPM disabled");
> +    else
> +        test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
>  }
>  
>  static void test_acpi_q35_tcg_tpm12_tis(void)
>  {
> -    test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);

Can you call this once in main() (before registering the tests)
and place this patch before patch #8 "tests: acpi: Add test cases
for TPM 1.2 with TCPA table" of this series? Otherwise looks good
(beside the unref you already mentioned).

> +    if (!tpm_model_is_available("-machine q35", "tpm-tis"))
> +        g_test_skip("TPM disabled");
> +    else
> +        test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);
>  }
>  
>  static void test_acpi_tcg_dimm_pxm(const char *machine)
> diff --git a/tests/qtest/tpm-emu.c b/tests/qtest/tpm-emu.c
> index 32c704194b..553f1ad4ee 100644
> --- a/tests/qtest/tpm-emu.c
> +++ b/tests/qtest/tpm-emu.c
> @@ -16,6 +16,8 @@
>  #include "backends/tpm/tpm_ioctl.h"
>  #include "io/channel-socket.h"
>  #include "qapi/error.h"
> +#include "qapi/qmp/qlist.h"
> +#include "qapi/qmp/qstring.h"
>  #include "tpm-emu.h"
>  
>  void tpm_emu_test_wait_cond(TPMTestState *s)
> @@ -192,3 +194,38 @@ void *tpm_emu_ctrl_thread(void *data)
>      object_unref(OBJECT(lioc));
>      return NULL;
>  }
> +
> +bool tpm_model_is_available(const char *args, const char *tpm_if)
> +{
> +    QTestState *qts;
> +    QDict *rsp_tpm;
> +    bool ret = false;
> +
> +    qts = qtest_init(args);
> +    if (!qts)
> +        return false;
> +
> +    rsp_tpm = qtest_qmp(qts, "{ 'execute': 'query-tpm'}");
> +    if (!qdict_haskey(rsp_tpm, "error")) {
> +        QDict *rsp_models = qtest_qmp(qts,
> +                                      "{ 'execute': 'query-tpm-models'}");
> +        if (qdict_haskey(rsp_models, "return")) {
> +            QList *models = qdict_get_qlist(rsp_models, "return");
> +            QListEntry *e;
> +
> +            QLIST_FOREACH_ENTRY(models, e) {
> +                QString *s = qobject_to(QString, qlist_entry_obj(e));
> +                const char *ename = qstring_get_str(s);
> +                if (!strcmp(ename, tpm_if)) {
> +                    ret = true;
> +                }
> +            }
> +            qobject_unref(models);
> +        }
> +        qobject_unref(rsp_models);
> +    }
> +    qobject_unref(rsp_tpm);
> +    qtest_quit(qts);
> +
> +    return ret;
> +}



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-07-13 16:37 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-12 20:47 [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Stefan Berger
2021-07-12 20:47 ` [PATCH v4 01/10] tests: Rename TestState to TPMTestState Stefan Berger
2021-07-12 20:47 ` [PATCH v4 02/10] tests: Add tpm_version field to TPMTestState and fill it Stefan Berger
2021-07-12 20:47 ` [PATCH v4 03/10] tests: acpi: Prepare for renaming of TPM2 related ACPI files Stefan Berger
2021-07-12 20:47 ` [PATCH v4 04/10] tests: Add suffix 'tpm2' or 'tpm12' to ACPI table files Stefan Berger
2021-07-12 20:47 ` [PATCH v4 05/10] tests: acpi: tpm2: Add the renamed ACPI files and drop old ones Stefan Berger
2021-07-12 20:47 ` [PATCH v4 06/10] tests: tpm: Create TPM 1.2 response in TPM emulator Stefan Berger
2021-07-12 20:47 ` [PATCH v4 07/10] tests: acpi: prepare for new TPM 1.2 related tables Stefan Berger
2021-07-12 20:47 ` [PATCH v4 08/10] tests: acpi: Add test cases for TPM 1.2 with TCPA table Stefan Berger
2021-07-12 20:47 ` [PATCH v4 09/10] tests: acpi: tpm1.2: Add expected TPM 1.2 ACPI blobs Stefan Berger
2021-07-12 20:47 ` [PATCH v4 10/10] tests: Use QMP to check whether a TPM device model is available Stefan Berger
2021-07-13 12:12   ` Stefan Berger
2021-07-13 16:36   ` Philippe Mathieu-Daudé
2021-07-13 15:19 ` [PATCH v4 00/10] tests: Add test cases for TPM 1.2 ACPI tables Michael S. Tsirkin
2021-07-13 15:42   ` 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.