From: marcandre.lureau@redhat.com
To: qemu-devel@nongnu.org
Cc: claudio.fontana@huawei.com, armbru@redhat.com,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [Qemu-devel] [PULL 5/8] ivshmem-test: test both msi & irq cases
Date: Tue, 2 Feb 2016 13:43:33 +0100 [thread overview]
Message-ID: <1454417016-3913-6-git-send-email-marcandre.lureau@redhat.com> (raw)
In-Reply-To: <1454417016-3913-1-git-send-email-marcandre.lureau@redhat.com>
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Recent commit 660c97ee introduced a regression in irq case, make
sure this code path is also tested.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
---
tests/ivshmem-test.c | 53 ++++++++++++++++++++++++++++++++++++----------------
1 file changed, 37 insertions(+), 16 deletions(-)
diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
index d544d5e..705fece 100644
--- a/tests/ivshmem-test.c
+++ b/tests/ivshmem-test.c
@@ -277,18 +277,18 @@ static void *server_thread(void *data)
return NULL;
}
-static void setup_vm_with_server(IVState *s, int nvectors)
+static void setup_vm_with_server(IVState *s, int nvectors, bool msi)
{
char *cmd = g_strdup_printf("-chardev socket,id=chr0,path=%s,nowait "
- "-device ivshmem,size=1M,chardev=chr0,vectors=%d",
- tmpserver, nvectors);
+ "-device ivshmem,size=1M,chardev=chr0,vectors=%d,msi=%s",
+ tmpserver, nvectors, msi ? "true" : "false");
- setup_vm_cmd(s, cmd, true);
+ setup_vm_cmd(s, cmd, msi);
g_free(cmd);
}
-static void test_ivshmem_server(void)
+static void test_ivshmem_server(bool msi)
{
IVState state1, state2, *s1, *s2;
ServerThread thread;
@@ -306,9 +306,9 @@ static void test_ivshmem_server(void)
ret = ivshmem_server_start(&server);
g_assert_cmpint(ret, ==, 0);
- setup_vm_with_server(&state1, nvectors);
+ setup_vm_with_server(&state1, nvectors, msi);
s1 = &state1;
- setup_vm_with_server(&state2, nvectors);
+ setup_vm_with_server(&state2, nvectors, msi);
s2 = &state2;
g_assert_cmpuint(in_reg(s1, IVPOSITION), ==, 0xffffffff);
@@ -338,27 +338,37 @@ static void test_ivshmem_server(void)
g_assert_cmpuint(vm1, !=, vm2);
global_qtest = s1->qtest;
- ret = qpci_msix_table_size(s1->dev);
- g_assert_cmpuint(ret, ==, nvectors);
+ if (msi) {
+ ret = qpci_msix_table_size(s1->dev);
+ g_assert_cmpuint(ret, ==, nvectors);
+ }
/* ping vm2 -> vm1 */
- ret = qpci_msix_pending(s1->dev, 0);
- g_assert_cmpuint(ret, ==, 0);
+ if (msi) {
+ ret = qpci_msix_pending(s1->dev, 0);
+ g_assert_cmpuint(ret, ==, 0);
+ } else {
+ out_reg(s1, INTRSTATUS, 0);
+ }
out_reg(s2, DOORBELL, vm1 << 16);
do {
g_usleep(10000);
- ret = qpci_msix_pending(s1->dev, 0);
+ ret = msi ? qpci_msix_pending(s1->dev, 0) : in_reg(s1, INTRSTATUS);
} while (ret == 0 && g_get_monotonic_time() < end_time);
g_assert_cmpuint(ret, !=, 0);
/* ping vm1 -> vm2 */
global_qtest = s2->qtest;
- ret = qpci_msix_pending(s2->dev, 0);
- g_assert_cmpuint(ret, ==, 0);
+ if (msi) {
+ ret = qpci_msix_pending(s2->dev, 0);
+ g_assert_cmpuint(ret, ==, 0);
+ } else {
+ out_reg(s2, INTRSTATUS, 0);
+ }
out_reg(s1, DOORBELL, vm2 << 16);
do {
g_usleep(10000);
- ret = qpci_msix_pending(s2->dev, 0);
+ ret = msi ? qpci_msix_pending(s2->dev, 0) : in_reg(s2, INTRSTATUS);
} while (ret == 0 && g_get_monotonic_time() < end_time);
g_assert_cmpuint(ret, !=, 0);
@@ -376,6 +386,16 @@ static void test_ivshmem_server(void)
close(thread.pipe[0]);
}
+static void test_ivshmem_server_msi(void)
+{
+ test_ivshmem_server(true);
+}
+
+static void test_ivshmem_server_irq(void)
+{
+ test_ivshmem_server(false);
+}
+
#define PCI_SLOT_HP 0x06
static void test_ivshmem_hotplug(void)
@@ -489,7 +509,8 @@ int main(int argc, char **argv)
qtest_add_func("/ivshmem/memdev", test_ivshmem_memdev);
if (g_test_slow()) {
qtest_add_func("/ivshmem/pair", test_ivshmem_pair);
- qtest_add_func("/ivshmem/server", test_ivshmem_server);
+ qtest_add_func("/ivshmem/server-msi", test_ivshmem_server_msi);
+ qtest_add_func("/ivshmem/server-irq", test_ivshmem_server_irq);
}
ret = g_test_run();
--
2.5.0
next prev parent reply other threads:[~2016-02-02 12:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-02 12:43 [Qemu-devel] [PULL 0/8] Ivshmem patches marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 1/8] ivshmem: no need for opaque argument marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 2/8] ivshmem: remove redundant assignment, fix crash with msi=off marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 3/8] ivshmem-test: leak fixes marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 4/8] libqos: remove some leaks marcandre.lureau
2016-02-02 12:43 ` marcandre.lureau [this message]
2016-02-02 12:43 ` [Qemu-devel] [PULL 6/8] ivshmem: generalize ivshmem_setup_interrupts marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 7/8] ivshmem: use a single eventfd callback, get rid of CharDriver marcandre.lureau
2016-02-02 12:43 ` [Qemu-devel] [PULL 8/8] char: remove qemu_chr_open_eventfd marcandre.lureau
2016-02-02 14:25 ` [Qemu-devel] [PULL 0/8] Ivshmem patches Peter Maydell
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=1454417016-3913-6-git-send-email-marcandre.lureau@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=armbru@redhat.com \
--cc=claudio.fontana@huawei.com \
--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).