[Rust-VMM] Including a virtio-bindings crate in rust-vmm

Sergio Lopez slp at redhat.com
Thu May 9 18:45:01 UTC 2019


Boeuf, Sebastien <sebastien.boeuf at intel.com> writes:

> On Wed, 2019-05-08 at 22:38 +0800, Liu Jiang wrote:
>
>  On May 8, 2019, at 10:17 PM, Sergio Lopez <slp at redhat.com> wrote:
>
>  Paolo Bonzini <pbonzini at redhat.com> writes:
>
>  On 08/05/19 07:18, Sergio Lopez wrote:
>
>  Hi,
>
>  I think it'd be useful having a crate providing virtio bindgen-generated
>  bindings, similar to Firecracker's virtio_gen. I wrote one that provides
>  the same functionality, but with multiple versions mapped as features,
>  as kvm-bindings does:
>
>  https://git.sinrega.org/slp/virtio-bindings
>
>  Do you think we could make this a project under rust-vmm's umbrella?
>
>  Thanks,
>
>  Yes, I think so!  However, what is the reason to have anything but the
>  last version?  Headers from a newer kernel should be
>  backwards-compatible with code written for an older kernel.
>
>  The main reason is for that is allowing crate users to be able to do
>  strict size checks on structs.
>
>  As an example, virtio_blk_config was extended from 4.14 to 5.0 with new
>  fields. This structure may come as the payload a VhostUserConfig
>  message, and while you are able to just use the latest version and
>  accept any payload the same size or smaller, I think some users may want
>  to be more strict and just allow the expected size.
>
>  Given that the cost of maintaining the bindings is very small, I think
>  that's a use case we can afford supporting (and I volunteer for doing so
>  :-).
>
>  A hypervisor may support multiple kernel versions. So how about defining multiple data structure for different kernel versions? 
>  BTW, the auto-generated code has some useless code with poor readability.
>  It would be appreciated to manually maintain a beatified version:)
>
> The only concern with "beautified" version is that it needs more human maintenance. I'm not against it, but we need to find a real benefit to this.

I share the same opinion. The purpose of these bindings is getting
access to well-known and documented interfaces. The original sources can
be used as a reference.

Thanks,
Sergio.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.opendev.org/pipermail/rust-vmm/attachments/20190509/2d64baf6/attachment.sig>


More information about the Rust-vmm mailing list