From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agxmH-0006Ts-9R for qemu-devel@nongnu.org; Fri, 18 Mar 2016 13:01:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1agxmG-00083K-Cn for qemu-devel@nongnu.org; Fri, 18 Mar 2016 13:01:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55288) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agxmG-00082t-1D for qemu-devel@nongnu.org; Fri, 18 Mar 2016 13:01:32 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id 9AC85C0578F1 for ; Fri, 18 Mar 2016 17:01:31 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-34.ams2.redhat.com [10.36.116.34]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u2IH1TWo009451 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Fri, 18 Mar 2016 13:01:31 -0400 From: Markus Armbruster Date: Fri, 18 Mar 2016 18:00:54 +0100 Message-Id: <1458320487-19603-8-git-send-email-armbru@redhat.com> In-Reply-To: <1458320487-19603-1-git-send-email-armbru@redhat.com> References: <1458320487-19603-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL 07/40] ivshmem-test: Improve test case /ivshmem/single List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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 Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <1458066895-20632-8-git-send-email-armbru@redhat.com> --- 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 da6ca0d..a48dc49 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 =3D &state; =20 - /* 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), =3D=3D, 0); + g_assert_cmpuint(in_reg(s, INTRSTATUS), =3D=3D, 0); + g_assert_cmpuint(in_reg(s, IVPOSITION), =3D=3D, 0); =20 + /* trigger interrupt via registers */ out_reg(s, INTRMASK, 0xffffffff); g_assert_cmpuint(in_reg(s, INTRMASK), =3D=3D, 0xffffffff); out_reg(s, INTRSTATUS, 1); - /* XXX: intercept IRQ, not seen in resp */ + /* check interrupt status */ g_assert_cmpuint(in_reg(s, INTRSTATUS), =3D=3D, 1); + /* reading clears */ + g_assert_cmpuint(in_reg(s, INTRSTATUS), =3D=3D, 0); + /* TODO intercept actual interrupt (needs qtest work) */ =20 - /* 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); =20 + /* write shared memory */ for (i =3D 0; i < G_N_ELEMENTS(data); i++) { data[i] =3D i; } qtest_memwrite(s->qtest, (uintptr_t)s->mem_base, data, sizeof(data))= ; =20 + /* verify write */ for (i =3D 0; i < G_N_ELEMENTS(data); i++) { g_assert_cmpuint(((uint32_t *)tmpshmem)[i], =3D=3D, i); } =20 + /* 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 =3D 0; i < G_N_ELEMENTS(data); i++) { g_assert_cmpuint(data[i], =3D=3D, i); --=20 2.4.3