[libvirt] [PATCH v3 8/9] tests: Add RISC-V architectures
Andrea Bolognani
abologna at redhat.com
Thu Aug 23 17:18:11 UTC 2018
On Wed, 2018-08-22 at 11:15 +0200, Lubomir Rintel wrote:
> Signed-off-by: Lubomir Rintel <lkundrak at v3.sk>
> ---
> tests/capabilityschemadata/caps-qemu-kvm.xml | 36 +
> .../caps_3.0.0.riscv32.replies | 14819 ++++++++++++++++
> .../caps_3.0.0.riscv32.xml | 118 +
> .../caps_3.0.0.riscv64.replies | 14819 ++++++++++++++++
> .../caps_3.0.0.riscv64.xml | 118 +
> tests/qemucapabilitiestest.c | 2 +
> tests/qemuxml2argvdata/riscv64-virt.args | 30 +
> tests/qemuxml2argvdata/riscv64-virt.xml | 32 +
> tests/qemuxml2argvtest.c | 3 +
> .../riscv64-virt.xml | 42 +
> tests/qemuxml2xmloutdata/riscv64-virt.xml | 36 +
> tests/qemuxml2xmltest.c | 2 +
> tests/testutilsqemu.c | 72 +
> tests/vircapstest.c | 6 +
> 14 files changed, 30135 insertions(+)
> create mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
> create mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
> create mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
> create mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
> create mode 100644 tests/qemuxml2argvdata/riscv64-virt.args
> create mode 100644 tests/qemuxml2argvdata/riscv64-virt.xml
> create mode 100644 tests/qemuxml2startupxmloutdata/riscv64-virt.xml
> create mode 100644 tests/qemuxml2xmloutdata/riscv64-virt.xml
I think I didn't explain myself clearly enough while reviewing
v2: I expected patches 07-09 and 11 to be squashed together, but
patch 10 to remain standalone. No big deal, I'll take care of
splitting it up again myself.
[...]
> +++ b/tests/qemuxml2argvdata/riscv64-virt.xml
> @@ -0,0 +1,32 @@
> +<domain type='qemu'>
> + <name>riscv64</name>
> + <uuid>fd65fc03-8838-4c4d-9d8d-395802488790</uuid>
> + <memory unit='KiB'>2097152</memory>
> + <currentMemory unit='KiB'>2097152</currentMemory>
> + <vcpu placement='static'>1</vcpu>
> + <os>
> + <type arch='riscv64' machine='virt'>hvm</type>
> + <kernel>/var/lib/libvirt/images/bbl</kernel>
> + <cmdline>console=ttyS0 ro root=/dev/vda</cmdline>
> + <boot dev='hd'/>
> + </os>
> + <clock offset='utc'/>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>restart</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <emulator>/usr/bin/qemu-system-riscv64</emulator>
> + <disk type='file' device='disk'>
> + <driver name='qemu' type='raw'/>
> + <source file='/var/lib/libvirt/images/stage4-disk.img'/>
> + <target dev='vda' bus='virtio'/>
> + <address type='virtio-mmio'/>
> + </disk>
> + <serial type='pty'>
> + <target port='0'/>
> + </serial>
> + <console type='pty'>
> + <target type='serial' port='0'/>
> + </console>
> + </devices>
> +</domain>
You didn't minimize the input file like I requested during
review :( Oh well, I'll take care of it.
Reviewed-by: Andrea Bolognani <abologna at redhat.com>
[...]
> +static int testQemuAddRISCV32Guest(virCapsPtr caps)
> +{
> + static const char *names[] = { "spike_v1.10",
> + "spike_v1.9.1",
> + "sifive_e",
> + "virt",
> + "sifive_u" };
> + static const int nmachines = ARRAY_CARDINALITY(names);
> + virCapsGuestMachinePtr *machines = NULL;
> + virCapsGuestPtr guest;
> +
> + machines = virCapabilitiesAllocMachines(names, nmachines);
> + if (!machines)
> + goto error;
> +
> + guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_RISCV32,
> + QEMUBinList[TEST_UTILS_QEMU_BIN_RISCV32],
> + NULL, nmachines, machines);
> + if (!guest)
> + goto error;
> +
> + if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_QEMU, NULL, NULL, 0, NULL))
> + goto error;
> +
> + return 0;
> +
> + error:
> + virCapabilitiesFreeMachines(machines, nmachines);
> + return -1;
> +}
> +
> +static int testQemuAddRISCV64Guest(virCapsPtr caps)
> +{
> + static const char *names[] = { "spike_v1.10",
> + "spike_v1.9.1",
> + "sifive_e",
> + "virt",
> + "sifive_u" };
> + static const int nmachines = ARRAY_CARDINALITY(names);
> + virCapsGuestMachinePtr *machines = NULL;
> + virCapsGuestPtr guest;
> +
> + machines = virCapabilitiesAllocMachines(names, nmachines);
> + if (!machines)
> + goto error;
> +
> + guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_RISCV64,
> + QEMUBinList[TEST_UTILS_QEMU_BIN_RISCV64],
> + NULL, nmachines, machines);
> + if (!guest)
> + goto error;
> +
> + if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_QEMU, NULL, NULL, 0, NULL))
> + goto error;
> +
> + return 0;
> +
> + error:
> + virCapabilitiesFreeMachines(machines, nmachines);
> + return -1;
> +}
> +
> static int testQemuAddS390Guest(virCapsPtr caps)
> {
> static const char *s390_machines[] = { "s390-virtio",
> @@ -440,6 +506,12 @@ virCapsPtr testQemuCapsInit(void)
> if (testQemuAddPPCGuest(caps))
> goto cleanup;
>
> + if (testQemuAddRISCV32Guest(caps) < 0)
> + goto cleanup;
> +
> + if (testQemuAddRISCV64Guest(caps) < 0)
> + goto cleanup;
> +
> if (testQemuAddS390Guest(caps))
> goto cleanup;
>
And of course I didn't clean up the surrounding code even though I
said I would... This is a good reminder I guess :)
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list