On Thu, May 29, 2025 at 11:40 PM Teddy Astie <teddy.as...@vates.tech> wrote:

> Hello Christopher,
>

Hi Teddy, thanks for the review.


>
> Le 28/05/2025 à 23:13, Christopher Clark a écrit :
> > Adds approachable documentation describing system components and
> > introduces the support statement for feature status.
> ...
> > +# Overview
> > +
> > +Argo is a lightweight data transport for communication between virtual
> > +machines, with a simple hypervisor interface that is accessible for
> > +building embedded systems and designed to work with familiar primitives
> > +within guest OS kernels. It supports policy control over communication
> > +and isolation between VMs.
> > +
> > +# User details
> > +
> > +Argo is present in Xen, included since Xen 4.12. A Linux device driver
> > +and userspace library are available and Argo is regularly tested in the
> > +Xen Continuous Integration system.
> > +
>
> Not really related to the documentation itself, but it would be
> preferable to have the Linux driver upstreamed such as this sentence
> sounds more as "it is supported" rather than "it's possible to make it
> work".
>

I agree and I can work on a better description for the next posting.


>
> It would also make Argo easier to integrate in Xen-based projects.
>

Yes (for systems with Linux).


>
> > +To configure a Xen system to enable Argo:
> > +
> > +* ensure that Argo is enabled in the hypervisor with KConfig option
> > +
> > +* enable Argo on the Xen hypervisor command line
> > +
> > +* load the Argo guest kernel device driver
> > +
> > +* ensure that the Argo guest libraries are installed
> > +
> > +The guest userspace libraries support software designed for Argo
> > +interfaces and also enables software designed for networks to
> > +communicate between VMs by Argo.  This allows platform software to be
> > +plumbed easily between virtual machines, without requiring networking
> > +and with system policy controls over this communication.
> > +
> > +# Technical details
> > +
> > +## Argo components
> > +
> > +* Xen: Argo in the hypervisor provides communication between virtual
> > +  machines.
> > +
> > +* Guest kernel: driver provides interfaces for data transport for use
> > +  within the kernel, and implements familiar abstractions for
> > +  networking software.
> > +
> > +* Guest libraries: provide application-level support for interdomain
> > +  communication.
> > +
>
> That sounds a bit confusing to me, the guest kernel provides familiar
> abstractions for networking software (I hear through that something like
> sockets), yet we still have guest libraries for application-level support.
>
> I think the guest libraries provide a shim for some of the argo-specific
> aspects (like ioctls and sockaddr_argo related bits); while the
> interface is more unix-oriented with regular sockets operations
> (sendmsg, ...).
>

OK, I wasn't sure what level of detail would be wanted for this so it's
useful to know, thanks.


>
> > +## Argo implementation within Xen
> > +
> > +See the public Xen headers for the primary interface documentation.
> > +
>
> There is the design document in docs/designs/argo.pandoc that explains
> the inner design inside Xen. I think the public headers are more for
> guest consumption.
>

OK, I'll add reference to the design document.


>
> As this document also targets guest developers, it would be great to
> have some guidance (e.g a docs document) on how a guest should implement
> argo support.
>

Thanks, I appreciate the enthusiasm for it to be written!

best,

Christopher

Reply via email to