[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/single |
Date: |
Tue, 1 Mar 2016 12:06:33 +0100 |
On Mon, Feb 29, 2016 at 7:40 PM, Markus Armbruster <address@hidden> wrote:
> Test state of registers after reset.
>
> Test reading Interrupt Status clears it.
>
> Test (invalid) read of Doorbell.
>
> Add more comments.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> tests/ivshmem-test.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
> index e118377..ba4d9f1 100644
> --- a/tests/ivshmem-test.c
> +++ b/tests/ivshmem-test.c
> @@ -143,32 +143,41 @@ static void test_ivshmem_single(void)
> setup_vm(&state);
> s = &state;
>
> - /* valid io */
> - out_reg(s, INTRMASK, 0);
> - in_reg(s, INTRSTATUS);
> - in_reg(s, IVPOSITION);
> + /* initial state of readable registers */
> + g_assert_cmpuint(in_reg(s, INTRMASK), ==, 0);
> + g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 0);
> + g_assert_cmpuint(in_reg(s, IVPOSITION), ==, 0);
>
> + /* trigger interrupt via registers */
> out_reg(s, INTRMASK, 0xffffffff);
> g_assert_cmpuint(in_reg(s, INTRMASK), ==, 0xffffffff);
> out_reg(s, INTRSTATUS, 1);
> - /* XXX: intercept IRQ, not seen in resp */
> + /* check interrupt status */
> g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 1);
> + /* reading clears */
> + g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 0);
> + /* TODO intercept actual interrupt (needs qtest work) */
>
> - /* invalid io */
> + /* invalid register access */
> out_reg(s, IVPOSITION, 1);
> + in_reg(s, DOORBELL);
> +
> + /* ring the (non-functional) doorbell */
> out_reg(s, DOORBELL, 8 << 16);
>
> + /* write shared memory */
> for (i = 0; i < G_N_ELEMENTS(data); i++) {
> data[i] = i;
> }
> qtest_memwrite(s->qtest, (uintptr_t)s->mem_base, data, sizeof(data));
>
> + /* verify write */
> for (i = 0; i < G_N_ELEMENTS(data); i++) {
> g_assert_cmpuint(((uint32_t *)tmpshmem)[i], ==, i);
> }
>
> + /* read it back and verify read */
> memset(data, 0, sizeof(data));
> -
> qtest_memread(s->qtest, (uintptr_t)s->mem_base, data, sizeof(data));
> for (i = 0; i < G_N_ELEMENTS(data); i++) {
> g_assert_cmpuint(data[i], ==, i);
> --
> 2.4.3
>
>
--
Marc-André Lureau
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/single,
Marc-André Lureau <=