diff options
Diffstat (limited to 'tests')
32 files changed, 318 insertions, 50 deletions
diff --git a/tests/acpi-test-data/pc/DSDT b/tests/acpi-test-data/pc/DSDT Binary files differindex 99f05a5027..c6adfe32d5 100644 --- a/tests/acpi-test-data/pc/DSDT +++ b/tests/acpi-test-data/pc/DSDT diff --git a/tests/acpi-test-data/pc/DSDT.bridge b/tests/acpi-test-data/pc/DSDT.bridge Binary files differindex cf23343e64..f01fa3ad4e 100644 --- a/tests/acpi-test-data/pc/DSDT.bridge +++ b/tests/acpi-test-data/pc/DSDT.bridge diff --git a/tests/acpi-test-data/pc/DSDT.cphp b/tests/acpi-test-data/pc/DSDT.cphp Binary files differindex c99c49f437..3295d81c7f 100644 --- a/tests/acpi-test-data/pc/DSDT.cphp +++ b/tests/acpi-test-data/pc/DSDT.cphp diff --git a/tests/acpi-test-data/pc/DSDT.dimmpxm b/tests/acpi-test-data/pc/DSDT.dimmpxm Binary files differindex 38661cb13e..f6ec911b11 100644 --- a/tests/acpi-test-data/pc/DSDT.dimmpxm +++ b/tests/acpi-test-data/pc/DSDT.dimmpxm diff --git a/tests/acpi-test-data/pc/DSDT.ipmikcs b/tests/acpi-test-data/pc/DSDT.ipmikcs Binary files differindex 5e970fda72..2633a8cecf 100644 --- a/tests/acpi-test-data/pc/DSDT.ipmikcs +++ b/tests/acpi-test-data/pc/DSDT.ipmikcs diff --git a/tests/acpi-test-data/pc/DSDT.memhp b/tests/acpi-test-data/pc/DSDT.memhp Binary files differindex 1fe6871aa2..e31ef50296 100644 --- a/tests/acpi-test-data/pc/DSDT.memhp +++ b/tests/acpi-test-data/pc/DSDT.memhp diff --git a/tests/acpi-test-data/pc/DSDT.numamem b/tests/acpi-test-data/pc/DSDT.numamem Binary files differindex 224cfdd9e9..71a975b3e2 100644 --- a/tests/acpi-test-data/pc/DSDT.numamem +++ b/tests/acpi-test-data/pc/DSDT.numamem diff --git a/tests/acpi-test-data/pc/SRAT.dimmpxm b/tests/acpi-test-data/pc/SRAT.dimmpxm Binary files differindex 5aa6f693ef..f5c0267ea2 100644 --- a/tests/acpi-test-data/pc/SRAT.dimmpxm +++ b/tests/acpi-test-data/pc/SRAT.dimmpxm diff --git a/tests/acpi-test-data/pc/SRAT.memhp b/tests/acpi-test-data/pc/SRAT.memhp Binary files differindex 5de8a100a4..e508b4ae3c 100644 --- a/tests/acpi-test-data/pc/SRAT.memhp +++ b/tests/acpi-test-data/pc/SRAT.memhp diff --git a/tests/acpi-test-data/q35/DSDT b/tests/acpi-test-data/q35/DSDT Binary files differindex aa402cca66..7576ffcd05 100644 --- a/tests/acpi-test-data/q35/DSDT +++ b/tests/acpi-test-data/q35/DSDT diff --git a/tests/acpi-test-data/q35/DSDT.bridge b/tests/acpi-test-data/q35/DSDT.bridge Binary files differindex fc3e79c583..c623cc5d72 100644 --- a/tests/acpi-test-data/q35/DSDT.bridge +++ b/tests/acpi-test-data/q35/DSDT.bridge diff --git a/tests/acpi-test-data/q35/DSDT.cphp b/tests/acpi-test-data/q35/DSDT.cphp Binary files differindex fd3cb34218..7ac526e466 100644 --- a/tests/acpi-test-data/q35/DSDT.cphp +++ b/tests/acpi-test-data/q35/DSDT.cphp diff --git a/tests/acpi-test-data/q35/DSDT.dimmpxm b/tests/acpi-test-data/q35/DSDT.dimmpxm Binary files differindex 14904e8ea2..3837792dec 100644 --- a/tests/acpi-test-data/q35/DSDT.dimmpxm +++ b/tests/acpi-test-data/q35/DSDT.dimmpxm diff --git a/tests/acpi-test-data/q35/DSDT.ipmibt b/tests/acpi-test-data/q35/DSDT.ipmibt Binary files differindex 332237529e..c7f431f058 100644 --- a/tests/acpi-test-data/q35/DSDT.ipmibt +++ b/tests/acpi-test-data/q35/DSDT.ipmibt diff --git a/tests/acpi-test-data/q35/DSDT.memhp b/tests/acpi-test-data/q35/DSDT.memhp Binary files differindex f0a27e1a30..8fba0baf79 100644 --- a/tests/acpi-test-data/q35/DSDT.memhp +++ b/tests/acpi-test-data/q35/DSDT.memhp diff --git a/tests/acpi-test-data/q35/DSDT.numamem b/tests/acpi-test-data/q35/DSDT.numamem Binary files differindex 8c9fa445b0..6c0d4f2bcb 100644 --- a/tests/acpi-test-data/q35/DSDT.numamem +++ b/tests/acpi-test-data/q35/DSDT.numamem diff --git a/tests/acpi-test-data/q35/SRAT.dimmpxm b/tests/acpi-test-data/q35/SRAT.dimmpxm Binary files differindex 5aa6f693ef..f5c0267ea2 100644 --- a/tests/acpi-test-data/q35/SRAT.dimmpxm +++ b/tests/acpi-test-data/q35/SRAT.dimmpxm diff --git a/tests/acpi-test-data/q35/SRAT.memhp b/tests/acpi-test-data/q35/SRAT.memhp Binary files differindex 5de8a100a4..e508b4ae3c 100644 --- a/tests/acpi-test-data/q35/SRAT.memhp +++ b/tests/acpi-test-data/q35/SRAT.memhp diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index d3101afecd..6e03235ab9 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -25,6 +25,7 @@ IMAGES ?= % CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$) DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME) +.DELETE_ON_ERROR: $(DOCKER_SRC_COPY) $(DOCKER_SRC_COPY): @mkdir $@ $(if $(SRC_ARCHIVE), \ diff --git a/tests/docker/dockerfiles/centos7.docker b/tests/docker/dockerfiles/centos7.docker index 83462b7205..0a04bfbed8 100644 --- a/tests/docker/dockerfiles/centos7.docker +++ b/tests/docker/dockerfiles/centos7.docker @@ -18,10 +18,10 @@ ENV PACKAGES \ libfdt-devel \ librdmacm-devel \ lzo-devel \ - nettle-devel \ make \ mesa-libEGL-devel \ mesa-libgbm-devel \ + nettle-devel \ pixman-devel \ SDL-devel \ spice-glib-devel \ diff --git a/tests/docker/dockerfiles/fedora-i386-cross.docker b/tests/docker/dockerfiles/fedora-i386-cross.docker index 8fbef2fa53..a4fd895b07 100644 --- a/tests/docker/dockerfiles/fedora-i386-cross.docker +++ b/tests/docker/dockerfiles/fedora-i386-cross.docker @@ -1,14 +1,13 @@ FROM fedora:latest ENV PACKAGES \ gcc \ - glibc-static.i686 \ - glibc-devel.i686 \ - glib2-devel.i686 \ - zlib-devel.i686 \ glib2-devel.i686 \ + glibc-devel.i686 \ + glibc-static.i686 \ + gnutls-devel.i686 \ nettle-devel.i686 \ pixman-devel.i686 \ - gnutls-devel.i686 + zlib-devel.i686 RUN dnf install -y $PACKAGES RUN rpm -q $PACKAGES | sort > /packages.txt diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 7d1d008002..0c4eb9e49c 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -1,24 +1,90 @@ FROM fedora:28 ENV PACKAGES \ - ccache gettext git tar PyYAML sparse flex bison python3 bzip2 hostname \ - gcc gcc-c++ llvm clang make perl which bc findutils glib2-devel \ - libaio-devel pixman-devel zlib-devel libfdt-devel libasan libubsan \ - bluez-libs-devel brlapi-devel bzip2-devel \ - device-mapper-multipath-devel glusterfs-api-devel gnutls-devel \ - gtk3-devel libattr-devel libcap-devel libcap-ng-devel libcurl-devel \ - libjpeg-devel libpng-devel librbd-devel libssh2-devel libusbx-devel \ - libxml2-devel lzo-devel ncurses-devel nettle-devel nss-devel \ - numactl-devel SDL2-devel snappy-devel spice-server-devel \ - systemtap-sdt-devel usbredir-devel virglrenderer-devel vte3-devel \ - xen-devel \ - mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL2 mingw32-pkg-config \ - mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 \ - mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 \ + bc \ + bison \ + bluez-libs-devel \ + brlapi-devel \ + bzip2 \ + bzip2-devel \ + ccache \ + clang \ + device-mapper-multipath-devel \ + findutils \ + flex \ + gcc \ + gcc-c++ \ + gettext \ + git \ + glib2-devel \ + glusterfs-api-devel \ + gnutls-devel \ + gtk3-devel \ + hostname \ + libaio-devel \ + libasan \ + libattr-devel \ + libcap-devel \ + libcap-ng-devel \ + libcurl-devel \ + libfdt-devel \ + libjpeg-devel \ + libpng-devel \ + librbd-devel \ + libssh2-devel \ + libubsan \ + libusbx-devel \ + libxml2-devel \ + llvm \ + lzo-devel \ + make \ mingw32-bzip2 \ - mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL2 mingw64-pkg-config \ - mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 \ - mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 \ - mingw64-bzip2 + mingw32-curl \ + mingw32-glib2 \ + mingw32-gmp \ + mingw32-gnutls \ + mingw32-gtk3 \ + mingw32-libjpeg-turbo \ + mingw32-libpng \ + mingw32-libssh2 \ + mingw32-libtasn1 \ + mingw32-nettle \ + mingw32-pixman \ + mingw32-pkg-config \ + mingw32-SDL2 \ + mingw64-bzip2 \ + mingw64-curl \ + mingw64-glib2 \ + mingw64-gmp \ + mingw64-gnutls \ + mingw64-gtk3 \ + mingw64-libjpeg-turbo \ + mingw64-libpng \ + mingw64-libssh2 \ + mingw64-libtasn1 \ + mingw64-nettle \ + mingw64-pixman \ + mingw64-pkg-config \ + mingw64-SDL2 \ + ncurses-devel \ + nettle-devel \ + nss-devel \ + numactl-devel \ + perl \ + pixman-devel \ + python3 \ + PyYAML \ + SDL2-devel \ + snappy-devel \ + sparse \ + spice-server-devel \ + systemtap-sdt-devel \ + tar \ + usbredir-devel \ + virglrenderer-devel \ + vte3-devel \ + which \ + xen-devel \ + zlib-devel ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3 RUN dnf install -y $PACKAGES diff --git a/tests/docker/dockerfiles/ubuntu.docker b/tests/docker/dockerfiles/ubuntu.docker index 7d724e7f53..36e2b17de5 100644 --- a/tests/docker/dockerfiles/ubuntu.docker +++ b/tests/docker/dockerfiles/ubuntu.docker @@ -2,16 +2,59 @@ FROM ubuntu:16.04 RUN echo "deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse" >> \ /etc/apt/sources.list ENV PACKAGES flex bison \ - libusb-1.0-0-dev libiscsi-dev librados-dev libncurses5-dev libncursesw5-dev \ - libseccomp-dev libgnutls-dev libssh2-1-dev libspice-server-dev \ - libspice-protocol-dev libnss3-dev libfdt-dev \ - libgtk-3-dev libvte-2.91-dev libsdl2-dev libpng12-dev libpixman-1-dev \ - libvdeplug-dev liblzo2-dev libsnappy-dev libbz2-dev libxen-dev librdmacm-dev libibverbs-dev \ - libsasl2-dev libjpeg-turbo8-dev xfslibs-dev libcap-ng-dev libbrlapi-dev libcurl4-gnutls-dev \ - libbluetooth-dev librbd-dev libaio-dev glusterfs-common libnuma-dev libepoxy-dev libdrm-dev libgbm-dev \ - libjemalloc-dev libcacard-dev libusbredirhost-dev libnfs-dev libcap-dev libattr1-dev \ + ccache \ + clang \ + gcc \ + gettext \ + git \ + glusterfs-common \ + libaio-dev \ + libattr1-dev \ + libbluetooth-dev \ + libbrlapi-dev \ + libbz2-dev \ + libcacard-dev \ + libcap-dev \ + libcap-ng-dev \ + libcurl4-gnutls-dev \ + libdrm-dev \ + libepoxy-dev \ + libfdt-dev \ + libgbm-dev \ + libgnutls-dev \ + libgtk-3-dev \ + libibverbs-dev \ + libiscsi-dev \ + libjemalloc-dev \ + libjpeg-turbo8-dev \ + liblzo2-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libnfs-dev \ + libnss3-dev \ + libnuma-dev \ + libpixman-1-dev \ + libpng12-dev \ + librados-dev \ + librbd-dev \ + librdmacm-dev \ + libsasl2-dev \ + libsdl2-dev \ + libseccomp-dev \ + libsnappy-dev \ + libspice-protocol-dev \ + libspice-server-dev \ + libssh2-1-dev \ + libusb-1.0-0-dev \ + libusbredirhost-dev \ + libvdeplug-dev \ + libvte-2.91-dev \ + libxen-dev \ + make \ + python-yaml \ + sparse \ texinfo \ - gettext git make ccache python-yaml gcc clang sparse + xfslibs-dev RUN apt-get update && \ apt-get -y install $PACKAGES RUN dpkg -l $PACKAGES | sort > /packages.txt diff --git a/tests/machine-none-test.c b/tests/machine-none-test.c index 7e72466354..2b3b750500 100644 --- a/tests/machine-none-test.c +++ b/tests/machine-none-test.c @@ -44,7 +44,6 @@ static struct arch2cpu cpus_map[] = { { "or1k", "or1200" }, { "ppc", "604" }, { "ppc64", "power8e_v2.1" }, - { "ppcemb", "440epb" }, { "s390x", "qemu" }, { "sh4", "sh7750r" }, { "sh4eb", "sh7751r" }, diff --git a/tests/tcg/xtensa/Makefile b/tests/tcg/xtensa/Makefile index 091518c055..2f5691f75b 100644 --- a/tests/tcg/xtensa/Makefile +++ b/tests/tcg/xtensa/Makefile @@ -44,6 +44,7 @@ TESTCASES += test_mmu.tst TESTCASES += test_mul16.tst TESTCASES += test_mul32.tst TESTCASES += test_nsa.tst +TESTCASES += test_phys_mem.tst ifdef XT TESTCASES += test_pipeline.tst endif diff --git a/tests/tcg/xtensa/linker.ld.S b/tests/tcg/xtensa/linker.ld.S index 5902302cf8..d0f33157ca 100644 --- a/tests/tcg/xtensa/linker.ld.S +++ b/tests/tcg/xtensa/linker.ld.S @@ -24,64 +24,71 @@ SECTIONS .vector : { +#if XCHAL_HAVE_WINDOWED . = XCHAL_WINDOW_OF4_VECOFS; *(.vector.window_overflow_4) - *(.vector.window_overflow_4.*) . = XCHAL_WINDOW_UF4_VECOFS; *(.vector.window_underflow_4) - *(.vector.window_underflow_4.*) . = XCHAL_WINDOW_OF8_VECOFS; *(.vector.window_overflow_8) - *(.vector.window_overflow_8.*) . = XCHAL_WINDOW_UF8_VECOFS; *(.vector.window_underflow_8) - *(.vector.window_underflow_8.*) . = XCHAL_WINDOW_OF12_VECOFS; *(.vector.window_overflow_12) - *(.vector.window_overflow_12.*) . = XCHAL_WINDOW_UF12_VECOFS; *(.vector.window_underflow_12) - *(.vector.window_underflow_12.*) - +#endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2 . = XCHAL_INTLEVEL2_VECOFS; *(.vector.level2) - *(.vector.level2.*) #endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3 . = XCHAL_INTLEVEL3_VECOFS; *(.vector.level3) - *(.vector.level3.*) #endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4 . = XCHAL_INTLEVEL4_VECOFS; *(.vector.level4) - *(.vector.level4.*) #endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5 . = XCHAL_INTLEVEL5_VECOFS; *(.vector.level5) - *(.vector.level5.*) #endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6 . = XCHAL_INTLEVEL6_VECOFS; *(.vector.level6) - *(.vector.level6.*) #endif #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7 . = XCHAL_INTLEVEL7_VECOFS; *(.vector.level7) - *(.vector.level7.*) #endif . = XCHAL_KERNEL_VECOFS; *(.vector.kernel) - *(.vector.kernel.*) . = XCHAL_USER_VECOFS; *(.vector.user) - *(.vector.user.*) . = XCHAL_DOUBLEEXC_VECOFS; *(.vector.double) + } > ram + + .vector.text : + { + *(.vector.window_overflow_4.*) + *(.vector.window_underflow_4.*) + *(.vector.window_overflow_8.*) + *(.vector.window_underflow_8.*) + *(.vector.window_overflow_12.*) + *(.vector.window_underflow_12.*) + + *(.vector.level2.*) + *(.vector.level3.*) + *(.vector.level4.*) + *(.vector.level5.*) + *(.vector.level6.*) + *(.vector.level7.*) + + *(.vector.kernel.*) + *(.vector.user.*) *(.vector.double.*) } > ram diff --git a/tests/tcg/xtensa/test_phys_mem.S b/tests/tcg/xtensa/test_phys_mem.S new file mode 100644 index 0000000000..aae0a793a7 --- /dev/null +++ b/tests/tcg/xtensa/test_phys_mem.S @@ -0,0 +1,124 @@ +#include "macros.inc" + +test_suite phys_mem + +.purgem test_init + +.macro test_init + movi a2, 0xc0000003 /* PPN */ + movi a3, 0xc0000004 /* VPN */ + wdtlb a2, a3 + witlb a2, a3 + movi a2, 0xc0000000 + wsr a2, ptevaddr +.endm + +test inst_fetch_get_pte_no_phys + set_vector kernel, 2f + + movi a2, 0x20000000 + jx a2 +2: + movi a2, 0x20000000 + rsr a3, excvaddr + assert eq, a2, a3 + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 16 + assert eq, a2, a3 +test_end + +test read_get_pte_no_phys + set_vector kernel, 2f + + movi a2, 0x20000000 +1: + l32i a3, a2, 0 + test_fail +2: + movi a2, 0x20000000 + rsr a3, excvaddr + assert eq, a2, a3 + movi a2, 1b + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 24 + assert eq, a2, a3 +test_end + +test write_get_pte_no_phys + set_vector kernel, 2f + + movi a2, 0x20000000 +1: + s32i a3, a2, 0 + test_fail +2: + movi a2, 0x20000000 + rsr a3, excvaddr + assert eq, a2, a3 + movi a2, 1b + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 24 + assert eq, a2, a3 +test_end + +test inst_fetch_no_phys + set_vector kernel, 2f + + movi a2, 0xc0000000 + jx a2 +2: + movi a2, 0xc0000000 + rsr a3, excvaddr + assert eq, a2, a3 + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 14 + assert eq, a2, a3 +test_end + +test read_no_phys + set_vector kernel, 2f + + movi a2, 0xc0000000 +1: + l32i a3, a2, 0 + test_fail +2: + movi a2, 0xc0000000 + rsr a3, excvaddr + assert eq, a2, a3 + movi a2, 1b + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 15 + assert eq, a2, a3 +test_end + +test write_no_phys + set_vector kernel, 2f + + movi a2, 0xc0000000 +1: + s32i a3, a2, 0 + test_fail +2: + movi a2, 0xc0000000 + rsr a3, excvaddr + assert eq, a2, a3 + movi a2, 1b + rsr a3, epc1 + assert eq, a2, a3 + rsr a3, exccause + movi a2, 15 + assert eq, a2, a3 +test_end + +test_suite_end diff --git a/tests/tcg/xtensa/vectors.S b/tests/tcg/xtensa/vectors.S index 265a181239..6a9cb3cde4 100644 --- a/tests/tcg/xtensa/vectors.S +++ b/tests/tcg/xtensa/vectors.S @@ -1,3 +1,5 @@ +#include "core-isa.h" + .macro vector name .section .vector.\name @@ -20,19 +22,33 @@ handler_\name\(): .word 0 .endm +#if XCHAL_HAVE_WINDOWED vector window_overflow_4 vector window_overflow_8 vector window_overflow_12 vector window_underflow_4 vector window_underflow_8 vector window_underflow_12 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2 vector level2 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3 vector level3 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4 vector level4 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5 vector level5 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6 vector level6 +#endif +#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7 vector level7 +#endif vector kernel vector user diff --git a/tests/tpm-crb-test.c b/tests/tpm-crb-test.c index d8f9569203..6fde579bab 100644 --- a/tests/tpm-crb-test.c +++ b/tests/tpm-crb-test.c @@ -151,6 +151,7 @@ int main(int argc, char **argv) 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); diff --git a/tests/tpm-emu.c b/tests/tpm-emu.c index 8c2bd53cad..125e697181 100644 --- a/tests/tpm-emu.c +++ b/tests/tpm-emu.c @@ -23,9 +23,14 @@ void tpm_emu_test_wait_cond(TestState *s) gint64 end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; g_mutex_lock(&s->data_mutex); - if (!g_cond_wait_until(&s->data_cond, &s->data_mutex, end_time)) { + + if (!s->data_cond_signal && + !g_cond_wait_until(&s->data_cond, &s->data_mutex, end_time)) { g_assert_not_reached(); } + + s->data_cond_signal = false; + g_mutex_unlock(&s->data_mutex); } @@ -72,6 +77,10 @@ void *tpm_emu_ctrl_thread(void *data) QIOChannel *ioc; qio_channel_socket_listen_sync(lioc, s->addr, &error_abort); + + g_mutex_lock(&s->data_mutex); + s->data_cond_signal = true; + g_mutex_unlock(&s->data_mutex); g_cond_signal(&s->data_cond); qio_channel_wait(QIO_CHANNEL(lioc), G_IO_IN); diff --git a/tests/tpm-emu.h b/tests/tpm-emu.h index 08f902485e..8eb802a79e 100644 --- a/tests/tpm-emu.h +++ b/tests/tpm-emu.h @@ -26,6 +26,7 @@ struct tpm_hdr { typedef struct TestState { GMutex data_mutex; GCond data_cond; + bool data_cond_signal; SocketAddress *addr; QIOChannel *tpm_ioc; GThread *emu_tpm_thread; diff --git a/tests/tpm-tis-test.c b/tests/tpm-tis-test.c index 14754d9706..c8ec14888f 100644 --- a/tests/tpm-tis-test.c +++ b/tests/tpm-tis-test.c @@ -446,6 +446,7 @@ int main(int argc, char **argv) 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); |