
On 17.06.21 14:42, Peter Krempa wrote:
On Thu, Jun 17, 2021 at 14:34:21 +0200, David Hildenbrand wrote:
On 17.06.21 14:17, Peter Krempa wrote:
On Thu, Jun 17, 2021 at 14:03:44 +0200, David Hildenbrand wrote:
[...]
4. QEMU does no longer require a "slots" specification when maxmem is set (because virtio-based memory devices don't require ACPI memory module slots).
Specifying "<maxMemory unit='KiB'>20971520</maxMemory>" results in (IMHO confusing) error:
"error: XML document failed to validate against schema: Unable to validate doc against /usr/local/share/libvirt/schemas/domain.rng Extra element maxMemory in interleave Invalid sequence in interleave Element domain failed to validate content"
"Extra element maxMemory in interleave Invalid sequence in interleave Element domain failed to validate content"
This is because the XML schema for maxMemory requires the element. Unfortunately the XML schema validator from libxml2 has extremely user-unfriendly errors.
Specifying "<maxMemory slots='0' unit='KiB'>20971520</maxMemory>" results in "error: XML error: both maximum memory size and memory slot count must be specified"
This is the error from the XML parser which has human-crafter errors.
However, older QEMU version have that requirement. Supported since 3.0 I think:
$ git tag --contains 951f2269af2 ... v3.0.0 ...
Is there a way how to detect that it's not needed? E.g. via the QMP schema or such?
In this instance we could perhaps drop it and let qemu report the error ... well if it's reasonable though.
I guess only implicitly, for example, if virtio-mem-pci or virtio-pmem-pci are possible (I assume supported devices can be queried via QMP). And without these devices, it doesn't make sense to have "slots=0". virtio-pmem-pci was introduced with v4.1.0, virtio-mem-pci was introduced with v5.1.0. -- Thanks, David / dhildenb