qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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;
> +}




  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).