[libvirt] [PATCH v2 RESEND 07/12] conf: Introduce parser, formatter for uid and fid
Andrea Bolognani
abologna at redhat.com
Tue Jul 24 14:25:37 UTC 2018
On Tue, 2018-07-10 at 16:02 +0800, Yi Min Zhao wrote:
> + <define name="uint32">
> + <choice>
> + <data type="string">
> + <param name="pattern">(0x)?[0-9a-fA-F]{1,8}</param>
> + </data>
> + <data type="int">
This should probably be unignedInt instead of int, but other uint*
types defined in the file also use int so if anything changing all
of them would be the job for a follow-up patch.
[...]
> + <define name="zpciaddress">
> + <optional>
> + <attribute name="uid">
> + <choice>
> + <data type="string">
> + <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
> + </data>
> + <data type="unsignedInt">
> + <param name="minInclusive">1</param>
> + <param name="maxInclusive">65535</param>
> + </data>
> + </choice>
> + </attribute>
I don't see why you wouldn't just use the existing uint16 type
here. Is that because uid can't be zero? Making sure that's
actually the case is a job for the PostParse() or Validate()
callback anyway, because schema validation is entirely opt-in
and thus can't be relied upon.
[...]
> +static int
> +virZPCIDeviceAddressIsValid(virZPCIDeviceAddressPtr zpci)
> +{
> + if (!zpci->uid_assigned)
> + return 1;
> +
> + if (zpci->zpci_uid > VIR_DOMAIN_DEVICE_ZPCI_MAX_UID ||
> + zpci->zpci_uid == 0) {
> + virReportError(VIR_ERR_XML_ERROR,
> + _("Invalid PCI address uid='0x%x', "
> + "must be > 0x0 and <= 0x%x"),
> + zpci->zpci_uid,
> + VIR_DOMAIN_DEVICE_ZPCI_MAX_UID);
> + return 0;
> + }
fid should be validated as well.
[...]
> +<domain type='qemu'>
> + <name>QEMUGuest1</name>
> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> + <memory>219136</memory>
> + <vcpu>1</vcpu>
> + <os>
> + <type arch='s390x' machine='s390-ccw'>hvm</type>
The correct machine type would be s390-ccw-virtio.
There are a bunch of existing test files that incorrectly use
s390-ccw, feel free to clean that up as well ;)
[...]
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index bbb995656e..e3282e2b98 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -397,6 +397,8 @@ mymain(void)
> QEMU_CAPS_VIRTIO_SCSI);
> DO_TEST("disk-virtio-scsi-ioeventfd",
> QEMU_CAPS_VIRTIO_SCSI);
> + DO_TEST("disk-virtio-s390-zpci",
> + QEMU_CAPS_DEVICE_ZPCI, QEMU_CAPS_CCW);
> DO_TEST("disk-scsi-megasas",
> QEMU_CAPS_SCSI_MEGASAS);
> DO_TEST("disk-scsi-mptsas1068",
> @@ -476,6 +478,7 @@ mymain(void)
> DO_TEST("hostdev-usb-address", NONE);
> DO_TEST("hostdev-pci-address", NONE);
> DO_TEST("hostdev-vfio", NONE);
> + DO_TEST("hostdev-vfio-zpci", QEMU_CAPS_DEVICE_ZPCI, QEMU_CAPS_CCW);
I haven't actually tried that, but you should be able to add the
test cases to qemuxml2argvtest at the same time as you add them
here, for consistency's sake.
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list