OXT-1473

There are multiple reference code bases for a Linux driver for Argo.

  1. OpenXT's current Linux Argo driver took the OpenXT v4v driver as a starting point, updated to use Argo interfaces.
    The code for this driver, "argo-linux", is in this OpenXT repository: https://github.com/OpenXT/linux-xen-argo
    It presents a character device that has a socket-like interface implemented with ioctls.

  2. Eric implemented a new vsock driver with datagram support, "vsock-argo", merged from PR#1 to the same OpenXT linux-xen-argo repository:
    https://github.com/OpenXT/linux-xen-argo/tree/master/vsock-argo

  3. HP/Bromium’s latest Open Source uXen VM support software for Linux guests is available here:
    https://www.bromium.com/wp-content/uploads/2019/06/uxen-vmsupport-linux-4.1.7.zip
    It includes two modern v4v drivers that work together:
    1. a v4v library driver, uxenv4vlib, which:
      1. registers for the interrupt line
      2. performs basic ring operations
      3. provides an interface to kernel drivers for querying for the space available in a remote ring ("uxen_v4v_notify_space").
    2. a simple v4v vsock driver, v4vvsock, which:
      1. registers a vsock driver (AF_vsock)
      2. provides a datagram interface only. It is simple - eg. provides no ioctls.

  4. Previous attempts at cleaning up v4v:

Consolidated Design Notes

( please see the comments on OXT-1473 where individual inputs have been given )

On the driver:


Summary: the driver will need to provide:

  1. The standard vsock interface

  2. A character device interface

  3. Either vsock or chardev extended interface

On userspace:

Testing



Copyright 2019 by BAE Systems. This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/.