From: Stefan Berger <stefanb@linux.ibm.com>
To: Eric Auger <eric.auger@redhat.com>,
eric.auger.pro@gmail.com, qemu-devel@nongnu.org,
qemu-arm@nongnu.org, peter.maydell@linaro.org
Cc: marcandre.lureau@redhat.com, lersek@redhat.com, ardb@kernel.org,
philmd@redhat.com
Subject: Re: [PATCH v3 10/10] test: tpm-tis: Add Sysbus TPM-TIS device test
Date: Wed, 26 Feb 2020 08:44:35 -0500 [thread overview]
Message-ID: <626417fa-8cf3-5e0e-78ec-7f5b77fc0a9f@linux.ibm.com> (raw)
In-Reply-To: <20200226102549.12158-11-eric.auger@redhat.com>
On 2/26/20 5:25 AM, Eric Auger wrote:
> The tests themselves are the same as the ISA device ones.
> Only the main() changes as the "tpm-tis-device" device gets
> instantiated. Also the base address of the device is not
> 0xFED40000 anymore but matches the base address of the
> ARM virt platform bus.
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
> ---
> tests/qtest/Makefile.include | 5 ++
> tests/qtest/tpm-tis-device-swtpm-test.c | 76 +++++++++++++++++++++
> tests/qtest/tpm-tis-device-test.c | 87 +++++++++++++++++++++++++
> 3 files changed, 168 insertions(+)
> create mode 100644 tests/qtest/tpm-tis-device-swtpm-test.c
> create mode 100644 tests/qtest/tpm-tis-device-test.c
>
> diff --git a/tests/qtest/Makefile.include b/tests/qtest/Makefile.include
> index 44aac68b25..383b0ab217 100644
> --- a/tests/qtest/Makefile.include
> +++ b/tests/qtest/Makefile.include
> @@ -130,6 +130,8 @@ check-qtest-arm-y += hexloader-test
> check-qtest-arm-$(CONFIG_PFLASH_CFI02) += pflash-cfi02-test
>
> check-qtest-aarch64-y += arm-cpu-features
> +check-qtest-aarch64-$(CONFIG_TPM_TIS_SYSBUS) += tpm-tis-device-test
> +check-qtest-aarch64-$(CONFIG_TPM_TIS_SYSBUS) += tpm-tis-device-swtpm-test
> check-qtest-aarch64-y += numa-test
> check-qtest-aarch64-y += boot-serial-test
> check-qtest-aarch64-y += migration-test
> @@ -302,7 +304,10 @@ tests/qtest/tpm-crb-swtpm-test$(EXESUF): tests/qtest/tpm-crb-swtpm-test.o tests/
> tests/qtest/tpm-crb-test$(EXESUF): tests/qtest/tpm-crb-test.o tests/qtest/tpm-emu.o $(test-io-obj-y)
> tests/qtest/tpm-tis-swtpm-test$(EXESUF): tests/qtest/tpm-tis-swtpm-test.o tests/qtest/tpm-emu.o \
> tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
> +tests/qtest/tpm-tis-device-swtpm-test$(EXESUF): tests/qtest/tpm-tis-device-swtpm-test.o tests/qtest/tpm-emu.o \
> + tests/qtest/tpm-util.o tests/qtest/tpm-tests.o $(test-io-obj-y)
> tests/qtest/tpm-tis-test$(EXESUF): tests/qtest/tpm-tis-test.o tests/qtest/tpm-tis-util.o tests/qtest/tpm-emu.o $(test-io-obj-y)
> +tests/qtest/tpm-tis-device-test$(EXESUF): tests/qtest/tpm-tis-device-test.o tests/qtest/tpm-tis-util.o tests/qtest/tpm-emu.o $(test-io-obj-y)
>
> # QTest rules
>
> diff --git a/tests/qtest/tpm-tis-device-swtpm-test.c b/tests/qtest/tpm-tis-device-swtpm-test.c
> new file mode 100644
> index 0000000000..7b20035142
> --- /dev/null
> +++ b/tests/qtest/tpm-tis-device-swtpm-test.c
> @@ -0,0 +1,76 @@
> +/*
> + * QTest testcase for Sysbus TPM TIS talking to external swtpm and swtpm
> + * migration
> + *
> + * Copyright (c) 2018 IBM Corporation
> + * with parts borrowed from migration-test.c that is:
> + * Copyright (c) 2016-2018 Red Hat, Inc. and/or its affiliates
> + *
> + * Authors:
> + * Stefan Berger <stefanb@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include <glib/gstdio.h>
> +
> +#include "libqtest.h"
> +#include "qemu/module.h"
> +#include "tpm-tests.h"
> +#include "hw/acpi/tpm.h"
> +
> +uint64_t tpm_tis_base_addr = 0xc000000;
> +#define MACHINE_OPTIONS "-machine virt,gic-version=max -accel tcg"
> +
> +typedef struct TestState {
> + char *src_tpm_path;
> + char *dst_tpm_path;
> + char *uri;
> +} TestState;
> +
> +static void tpm_tis_swtpm_test(const void *data)
> +{
> + const TestState *ts = data;
> +
> + tpm_test_swtpm_test(ts->src_tpm_path, tpm_util_tis_transfer,
> + "tpm-tis-device", MACHINE_OPTIONS);
> +}
> +
> +static void tpm_tis_swtpm_migration_test(const void *data)
> +{
> + const TestState *ts = data;
> +
> + tpm_test_swtpm_migration_test(ts->src_tpm_path, ts->dst_tpm_path, ts->uri,
> + tpm_util_tis_transfer, "tpm-tis-device",
> + MACHINE_OPTIONS);
> +}
> +
> +int main(int argc, char **argv)
> +{
> + int ret;
> + TestState ts = { 0 };
> +
> + ts.src_tpm_path = g_dir_make_tmp("qemu-tpm-tis-device-swtpm-test.XXXXXX",
> + NULL);
> + ts.dst_tpm_path = g_dir_make_tmp("qemu-tpm-tis-device-swtpm-test.XXXXXX",
> + NULL);
> + ts.uri = g_strdup_printf("unix:%s/migsocket", ts.src_tpm_path);
> +
> + module_call_init(MODULE_INIT_QOM);
> + g_test_init(&argc, &argv, NULL);
> +
> + qtest_add_data_func("/tpm/tis-swtpm/test", &ts, tpm_tis_swtpm_test);
> + qtest_add_data_func("/tpm/tis-swtpm-migration/test", &ts,
> + tpm_tis_swtpm_migration_test);
> + ret = g_test_run();
> +
> + g_rmdir(ts.dst_tpm_path);
> + g_free(ts.dst_tpm_path);
> + g_rmdir(ts.src_tpm_path);
> + g_free(ts.src_tpm_path);
> + g_free(ts.uri);
> +
> + return ret;
> +}
> diff --git a/tests/qtest/tpm-tis-device-test.c b/tests/qtest/tpm-tis-device-test.c
> new file mode 100644
> index 0000000000..63ed36440f
> --- /dev/null
> +++ b/tests/qtest/tpm-tis-device-test.c
> @@ -0,0 +1,87 @@
> +/*
> + * QTest testcase for SYSBUS TPM TIS
> + *
> + * Copyright (c) 2018 Red Hat, Inc.
> + * Copyright (c) 2018 IBM Corporation
> + *
> + * Authors:
> + * Marc-André Lureau <marcandre.lureau@redhat.com>
> + * Stefan Berger <stefanb@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include <glib/gstdio.h>
> +
> +#include "io/channel-socket.h"
> +#include "libqtest-single.h"
> +#include "qemu/module.h"
> +#include "tpm-emu.h"
> +#include "tpm-util.h"
> +#include "tpm-tis-util.h"
> +
> +/*
> + * As the Sysbus tpm-tis-device is instantiated on the ARM virt
> + * platform bus and it is the only sysbus device dynamically
> + * instantiated, it gets plugged at its base address
> + */
> +uint64_t tpm_tis_base_addr = 0xc000000;
> +
> +int main(int argc, char **argv)
> +{
> + char *tmp_path = g_dir_make_tmp("qemu-tpm-tis-device-test.XXXXXX", NULL);
> + GThread *thread;
> + TestState test;
> + char *args;
> + int ret;
> +
> + module_call_init(MODULE_INIT_QOM);
> + g_test_init(&argc, &argv, NULL);
> +
> + test.addr = g_new0(SocketAddress, 1);
> + test.addr->type = SOCKET_ADDRESS_TYPE_UNIX;
> + test.addr->u.q_unix.path = g_build_filename(tmp_path, "sock", NULL);
> + g_mutex_init(&test.data_mutex);
> + g_cond_init(&test.data_cond);
> + test.data_cond_signal = false;
> +
> + thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
> + tpm_emu_test_wait_cond(&test);
> +
> + args = g_strdup_printf(
> + "-machine virt,gic-version=max -accel tcg "
> + "-chardev socket,id=chr,path=%s "
> + "-tpmdev emulator,id=dev,chardev=chr "
> + "-device tpm-tis-device,tpmdev=dev",
> + test.addr->u.q_unix.path);
> + qtest_start(args);
> +
> + qtest_add_data_func("/tpm-tis/test_check_localities", &test,
> + tpm_tis_test_check_localities);
> +
> + qtest_add_data_func("/tpm-tis/test_check_access_reg", &test,
> + tpm_tis_test_check_access_reg);
> +
> + qtest_add_data_func("/tpm-tis/test_check_access_reg_seize", &test,
> + tpm_tis_test_check_access_reg_seize);
> +
> + qtest_add_data_func("/tpm-tis/test_check_access_reg_release", &test,
> + tpm_tis_test_check_access_reg_release);
> +
> + qtest_add_data_func("/tpm-tis/test_check_transmit", &test,
> + tpm_tis_test_check_transmit);
> +
> + ret = g_test_run();
> +
> + qtest_end();
> +
> + g_thread_join(thread);
> + g_unlink(test.addr->u.q_unix.path);
> + qapi_free_SocketAddress(test.addr);
> + g_rmdir(tmp_path);
> + g_free(tmp_path);
> + g_free(args);
> + return ret;
> +}
next prev parent reply other threads:[~2020-02-26 13:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-26 10:25 [PATCH v3 00/10] vTPM for aarch64 Eric Auger
2020-02-26 10:25 ` [PATCH v3 01/10] tpm: rename TPM_TIS into TPM_TIS_ISA Eric Auger
2020-02-26 10:25 ` [PATCH v3 02/10] tpm: Use TPMState as a common struct Eric Auger
2020-02-26 10:25 ` [PATCH v3 03/10] tpm: Separate tpm_tis common functions from isa code Eric Auger
2020-02-26 10:25 ` [PATCH v3 04/10] tpm: Separate TPM_TIS and TPM_TIS_ISA configs Eric Auger
2020-02-26 10:25 ` [PATCH v3 05/10] tpm: Add the SysBus TPM TIS device Eric Auger
2020-02-26 10:25 ` [PATCH v3 06/10] hw/arm/virt: vTPM support Eric Auger
2020-02-26 13:19 ` Stefan Berger
2020-02-26 10:25 ` [PATCH v3 07/10] docs/specs/tpm: Document TPM_TIS sysbus device for ARM Eric Auger
2020-02-26 13:17 ` Stefan Berger
2020-02-26 10:25 ` [PATCH v3 08/10] test: tpm: pass optional machine options to swtpm test functions Eric Auger
2020-02-26 12:28 ` Stefan Berger
2020-02-26 10:25 ` [PATCH v3 09/10] test: tpm-tis: Get prepared to share tests between ISA and sysbus devices Eric Auger
2020-02-26 13:39 ` Stefan Berger
2020-02-26 10:25 ` [PATCH v3 10/10] test: tpm-tis: Add Sysbus TPM-TIS device test Eric Auger
2020-02-26 13:44 ` Stefan Berger [this message]
2020-02-26 13:32 ` [PATCH v3 00/10] vTPM for aarch64 Stefan Berger
2020-02-26 17:47 ` Auger Eric
2020-02-26 17:53 ` Stefan Berger
2020-02-26 18:18 ` Auger Eric
2020-02-26 20:01 ` Stefan Berger
2020-02-26 20:17 ` Auger Eric
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=626417fa-8cf3-5e0e-78ec-7f5b77fc0a9f@linux.ibm.com \
--to=stefanb@linux.ibm.com \
--cc=ardb@kernel.org \
--cc=eric.auger.pro@gmail.com \
--cc=eric.auger@redhat.com \
--cc=lersek@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).