
On Thu, Sep 30, 2021 at 09:47:01AM +0100, Daniel P. Berrangé wrote:
On Thu, Sep 30, 2021 at 08:33:48AM +0100, Richard W.M. Jones wrote:
I propose we deprecate the guid parameter in:
-device vmgenid,guid=8987940a-0951-2cc5-e815-10634ff550b9,id=vmgenid0
Instead it will be replaced by bytes= which will simply write the bytes, in the order they appear, into guest memory with no attempt to interpret or byte-swap. Something like:
-device vmgenid,bytes=112233445566778899aabbccddeeff00,id=vmgenid0
(guid although deprecated will need to be kept around for a while, along with its weird byte-swapping behaviour).
We will then have a plain and simple method to emulate the behaviour of other hypervisors. We will look at exactly what bytes they write to guest memory and copy that behaviour when v2v converting from those hypervisors.
From the libvirt POV, I'm not expecting anything in QEMU to change in this respect. If guid is replaced by a new attribute taking data in a different way, then libvirt will have to remap itself, so that existing usage in libvirt keeps working the same way as it did with guid. Essentially from libvirt's POV, it is simply a documentation issue to specify how the libvirt XML representation translates to the guest visible representation, and ensure that all libvirt drivers implement it the same way. The QEMU genid support arrived first so that set the standard for how libvirt will represent it, that all further libvirt hypervisor drivers need to match.
I was going to suggest something like: <genid type="guid">aa-bb-cc..</genid> or <genid type="binary">aabbcc..</genid> with the type defaulting to guid for backwards compatibility. Does libvirt XML have any other fields were you're passing essentially small snippets of binary data? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org