On 9/15/22 15:14, Michael Labiuk wrote:
Configure pci bridge setting to test ivshmem on 'q35'.
< empty line here is needed
Signed-off-by: Michael Labiuk <[email protected]> --- tests/qtest/ivshmem-test.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)diff --git a/tests/qtest/ivshmem-test.c b/tests/qtest/ivshmem-test.c index 9611d05eb5..0f9755abc6 100644 --- a/tests/qtest/ivshmem-test.c +++ b/tests/qtest/ivshmem-test.c @@ -378,6 +378,32 @@ static void test_ivshmem_server(void) close(thread.pipe[0]); }+static void device_del(QTestState *qtest, const char *id)+{ + QDict *resp; + + resp = qtest_qmp(qtest, + "{'execute': 'device_del'," + " 'arguments': { 'id': %s } }", id); + + g_assert(qdict_haskey(resp, "return")); + qobject_unref(resp); +}
hmmm, why do we need this helper if it is not used anywhere in next and this patches? it is also unclear to me why don't we do 'device_del' for other archs. May be this is to be clarified in the patch description or worth additional patch.
+ +static void test_ivshmem_hotplug_q35(void) +{ + QTestState *qts = qtest_init("-object memory-backend-ram,size=1M,id=mb1 " + "-device pcie-root-port,id=p1 " + "-device pcie-pci-bridge,bus=p1,id=b1 " + "-machine q35"); + + qtest_qmp_device_add(qts, "ivshmem-plain", "iv1", + "{'memdev': 'mb1', 'bus': 'b1'}"); + device_del(qts, "iv1"); + + qtest_quit(qts); +} + #define PCI_SLOT_HP 0x06static void test_ivshmem_hotplug(void)@@ -469,6 +495,7 @@ int main(int argc, char **argv) { int ret, fd; gchar dir[] = "/tmp/ivshmem-test.XXXXXX"; + const char *arch = qtest_get_arch();g_test_init(&argc, &argv, NULL); @@ -494,6 +521,9 @@ int main(int argc, char **argv)qtest_add_func("/ivshmem/pair", test_ivshmem_pair); qtest_add_func("/ivshmem/server", test_ivshmem_server); } + if (!strcmp(arch, "x86_64")) { + qtest_add_func("/ivshmem/hotplug-q35", test_ivshmem_hotplug_q35); + }out:ret = g_test_run();
