mbox series

[0/6] libqos, riscv: libqos fixes, add riscv machine

Message ID 20240213191736.733334-1-dbarboza@ventanamicro.com
Headers show
Series libqos, riscv: libqos fixes, add riscv machine | expand

Message

Daniel Henrique Barboza Feb. 13, 2024, 7:17 p.m. UTC
Hi,

This series adds a RISC-V 'virt' libqos machine. It's copied from the
existing ARM machine in arm-virt-machine.c.

Due to the increase of test coverage I found out 2 bugs in the virtio
layer of libqos. Patch 1 is a bug related to unintialized guest pages
from guest_alloc() being used, patch 2 is an error in an offset of a
struct. My educated guess on why other boards don't fail these tests
is that either their guest pages happens to be zeroed or happens to have
a certain value that doesn't affect the tests. 

Patches 3, 4 and 5 are changes in the RISC-V 'virt' machine required to
make all tests pass.

Patch 6 adds the RISC-V virt machine nodes. As I said, it's a declared
copy of arm-virt-machine.c with extra steps. One of them is to edit the
attributes of the generic-pcihost liqos driver to fit RISC-V needs,
since some of its attributes (ecam, pio_base and so on) are hardcoded to
the values that the ARM 'virt' machine uses. If desired, we can change
generic-pcihost to be more flexible and not hardcode any machine/arch
specific value.
 

Alex: I'm CCing you because I noticed that you reviewed bug fixes in
libqos/virtio in the past, figured you have some expertise to share
here.


Patches based on master.


Daniel Henrique Barboza (6):
  libqos/virtio.c: init all elems in qvring_indirect_desc_setup()
  libqos/virtio.c: fix 'avail_event' offset in qvring_init()
  hw/riscv/virt.c: create '/soc/pci@...' fdt node earlier
  hw/riscv/virt.c: add virtio-iommu-pci hotplug support
  hw/riscv/virt.c: make aclint compatible with 'qtest' accel
  tests/libqos: add riscv/virt machine nodes

 hw/riscv/virt.c                         |  97 ++++++++++++-----
 tests/qtest/libqos/meson.build          |   1 +
 tests/qtest/libqos/riscv-virt-machine.c | 137 ++++++++++++++++++++++++
 tests/qtest/libqos/virtio.c             |  27 +++--
 4 files changed, 228 insertions(+), 34 deletions(-)
 create mode 100644 tests/qtest/libqos/riscv-virt-machine.c