Message ID | 20220210145254.157790-1-eric.auger@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | qtests/libqos: Allow PCI tests to be run with virt-machine | expand |
On Thu, Feb 10, 2022 at 03:52:49PM +0100, Eric Auger wrote: > Up to now the virt-machine node only contains a virtio-mmio > driver node but no driver that eventually produces any pci-bus > interface. > > Hence, PCI libqos tests cannot be run with aarch64 binary. > > This series brings the pieces needed to be able to run PCI tests > with the aarch64 binary: a generic-pcihost driver node gets > instantiated by the machine. This later contains a pci-bus-generic > driver which produces a pci-bus interface. Then all tests > consuming the pci-bus interface can be run with the libqos arm > virt machine. > > One of the first goal was to be able to run the virtio-iommu-pci > tests as the virtio-iommu was initially targetting ARM and it > was awkard to be run the test with the pc machine. This is now > possible. > > Only the tests doing hotplug cannot be run yet as hotplug is > not possible on the root bus. This will be dealt with separately > by adding a root port to the object tree. > > Also I have some trouble with 2 of the vhost-user-blk-tests. I am > obliged to hack them in "tests/qtest/vhost-user-blk-test: Temporary > hack to get tests passing on aarch64". Looks like a memory > allocation issue, which at first sight seems unrelated to the > aarch64 pci libqos enablement but we are never sure. Calling for > help on this issue, if some vhost-user specialists can dedicate > some cycles on this. Otherwise I will try my best to further debug. > > To reproduce the issue, revert the above hack and run > > QTEST_QEMU_STORAGE_DAEMON_BINARY=build/storage-daemon/qemu-storage-daemon QTEST_QEMU_BINARY=build/aarch64-softmmu/qemu-system-aarch64 build/tests/qtest/qos-test > > you should get: > > ERROR:../tests/qtest/libqos/virtio.c:224:qvirtio_wait_used_elem: > assertion failed (got_desc_idx == desc_idx): (50331648 == 0) > Bail out! ERROR:../tests/qtest/libqos/virtio.c:224: qvirtio_wait_used_elem: > assertion failed (got_desc_idx == desc_idx): (50331648 == 0) > > Best Regards > > Eric > > This series can be found at: > https://github.com/eauger/qemu/tree/libqos-pci-arm-v3 Seems to cause issues when run on a powerpc host (see Peter's response to the pull request). Dropped from pull for now. > History > > v2 -> v3: > - force -cpu=max along with aarch64/virt > - reduced the vhost-user-block-pci issue workaround to a > single guest_alloc() instead of enabling MSIs. Call for > help on this specific issue. The 2 tests which fail otherwise > are: test_basic and indirect. > > v1 -> v2: > - copyright updated to 2022 > - QPCIBusARM renamed into QGenericPCIBus > - QGenericPCIHost declarations and definitions moved in the same > place as the generic pci implementation > - rename pci-arm.c/h in generic-pcihost.c/h and remove any ref to > ARM there > - remove qos_node_produces_opts, qpci_new_arm, qpci_free_arm > - ecam_alloc_ptr now is a field of QGenericPCIBus and not QPCIBus > - new libqos_init to create generic-pcihost driver that contains > pci-bus-generic > - QGenericPCIHost moved in the same place as the generic pci > bindings > - collected Thomas A-b/R-b > > Eric Auger (5): > tests/qtest/vhost-user-test.c: Use vhostforce=on > tests/qtest/libqos/pci: Introduce pio_limit > tests/qtest/libqos: Skip hotplug tests if pci root bus is not > hotpluggable > tests/qtest/vhost-user-blk-test: Temporary hack to get tests passing > on aarch64 > tests/qtest/libqos: Add generic pci host bridge in arm-virt machine > > tests/qtest/e1000e-test.c | 6 + > tests/qtest/libqos/arm-virt-machine.c | 19 ++- > tests/qtest/libqos/generic-pcihost.c | 231 ++++++++++++++++++++++++++ > tests/qtest/libqos/generic-pcihost.h | 54 ++++++ > tests/qtest/libqos/meson.build | 1 + > tests/qtest/libqos/pci-pc.c | 1 + > tests/qtest/libqos/pci-spapr.c | 1 + > tests/qtest/libqos/pci.c | 78 +++++---- > tests/qtest/libqos/pci.h | 6 +- > tests/qtest/vhost-user-blk-test.c | 16 ++ > tests/qtest/vhost-user-test.c | 2 +- > tests/qtest/virtio-blk-test.c | 5 + > tests/qtest/virtio-net-test.c | 5 + > tests/qtest/virtio-rng-test.c | 5 + > 14 files changed, 394 insertions(+), 36 deletions(-) > create mode 100644 tests/qtest/libqos/generic-pcihost.c > create mode 100644 tests/qtest/libqos/generic-pcihost.h > > -- > 2.26.3