[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/38] ivshmem-test: Clean up wait for devices t
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 06/38] ivshmem-test: Clean up wait for devices to become operational |
Date: |
Tue, 1 Mar 2016 12:10:58 +0100 |
On Mon, Feb 29, 2016 at 7:40 PM, Markus Armbruster <address@hidden> wrote:
> test_ivshmem_server() waits until the first byte in BAR 2 contains the
> 0x42 we put into shared memory. Works because the byte reads zero
> until the device maps the shared memory gotten from the server.
>
> Check the IVPosition register instead: it's initially -1, and becomes
> non-negative right when the device maps the share memory, so no
> change, just cleaner, because it's what guest software is supposed to
> do.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> tests/ivshmem-test.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
> index ba4d9f1..f40c3497 100644
> --- a/tests/ivshmem-test.c
> +++ b/tests/ivshmem-test.c
> @@ -301,7 +301,6 @@ static void test_ivshmem_server(bool msi)
> int nvectors = 2;
> guint64 end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND;
>
> - memset(tmpshmem, 0x42, TMPSHMSIZE);
> ret = ivshmem_server_init(&server, tmpserver, tmpshm,
> TMPSHMSIZE, nvectors,
> g_test_verbose());
> @@ -315,9 +314,9 @@ static void test_ivshmem_server(bool msi)
> setup_vm_with_server(&state2, nvectors, msi);
> s2 = &state2;
>
> + /* check state before server sends stuff */
> g_assert_cmpuint(in_reg(s1, IVPOSITION), ==, 0xffffffff);
> g_assert_cmpuint(in_reg(s2, IVPOSITION), ==, 0xffffffff);
> -
> g_assert_cmpuint(qtest_readb(s1->qtest, (uintptr_t)s1->mem_base), ==,
> 0x00);
>
> thread.server = &server;
> @@ -326,12 +325,11 @@ static void test_ivshmem_server(bool msi)
> thread.thread = g_thread_new("ivshmem-server", server_thread, &thread);
> g_assert(thread.thread != NULL);
>
> - /* waiting until mapping is done */
> + /* waiting for devices to become operational */
> while (g_get_monotonic_time() < end_time) {
> g_usleep(1000);
> -
> - if (qtest_readb(s1->qtest, (uintptr_t)s1->mem_base) == 0x42 &&
> - qtest_readb(s2->qtest, (uintptr_t)s2->mem_base) == 0x42) {
> + if ((int)in_reg(s1, IVPOSITION) >= 0 &&
> + (int)in_reg(s2, IVPOSITION) >= 0) {
> break;
> }
> }
> --
> 2.4.3
>
>
--
Marc-André Lureau
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 06/38] ivshmem-test: Clean up wait for devices to become operational,
Marc-André Lureau <=