Version three of this patch series:

* Teardown of rings and pending notifications is implemented for
  domain destroy, removing need to avoid state for defunct domains.
  Data structures added to track rings that a domain is the single
  partner for and pending notifications about wildcard-sender rings.

* Register and unregister ops take dedicated argument structs
  rather than a handle to the ring struct in ring memory as
  a simpler interface for this upstreaming effort.
  Ring data structure now has fewer member fields.
  Interface may need revision later with development of support
  for communication in L0/L1 nested hypervisor configuration.

* Added constraints to the notify op: limits number of pending
  notifications on a ring to a simple threshold value.
  Validates the space query to ensure within achievable bounds.

* Disallows resize of existing rings via re-registration.
  Could be added later; needs work to handle pending notifications
  where resized ring would make space availability unachievable.

* Reordered series: XSM patches after main implementation.

* Improved hypercall arg validation; using faster __copy ops where ok.

* Guest memory region validation via fixed constant value fields removed.

Christopher Clark (15):
  argo: Introduce the Kconfig option to govern inclusion of Argo
  argo: introduce the argo_op hypercall boilerplate
  argo: define argo_dprintk for subsystem debugging
  argo: init, destroy and soft-reset, with enable command line opt
  errno: add POSIX error codes EMSGSIZE, ECONNREFUSED to the ABI
  xen/arm: introduce guest_handle_for_field()
  argo: implement the register op
  argo: implement the unregister op
  argo: implement the sendv op; evtchn: expose send_guest_global_virq
  argo: implement the notify op
  xsm, argo: XSM control for argo register
  xsm, argo: XSM control for argo message send operation
  xsm, argo: XSM control for any access to argo by a domain
  xsm, argo: notify: don't describe rings that cannot be sent to
  argo: validate hypercall arg structures via compat machinery

 docs/misc/xen-command-line.pandoc     |   26 +
 xen/arch/x86/guest/hypercall_page.S   |    2 +-
 xen/arch/x86/hvm/hypercall.c          |    3 +
 xen/arch/x86/hypercall.c              |    3 +
 xen/arch/x86/pv/hypercall.c           |    3 +
 xen/common/Kconfig                    |   19 +
 xen/common/Makefile                   |    3 +-
 xen/common/argo.c                     | 2214 +++++++++++++++++++++++++++++++++
 xen/common/compat/argo.c              |   61 +
 xen/common/domain.c                   |   20 +
 xen/common/event_channel.c            |    2 +-
 xen/include/Makefile                  |    1 +
 xen/include/asm-arm/guest_access.h    |    5 +
 xen/include/asm-x86/guest_access.h    |    2 +
 xen/include/public/argo.h             |  277 +++++
 xen/include/public/errno.h            |    2 +
 xen/include/public/xen.h              |    4 +-
 xen/include/xen/argo.h                |   23 +
 xen/include/xen/event.h               |    7 +
 xen/include/xen/hypercall.h           |    9 +
 xen/include/xen/sched.h               |    6 +
 xen/include/xlat.lst                  |    8 +
 xen/include/xsm/dummy.h               |   26 +
 xen/include/xsm/xsm.h                 |   31 +
 xen/xsm/dummy.c                       |    6 +
 xen/xsm/flask/hooks.c                 |   41 +-
 xen/xsm/flask/policy/access_vectors   |   16 +
 xen/xsm/flask/policy/security_classes |    1 +
 28 files changed, 2813 insertions(+), 8 deletions(-)
 create mode 100644 xen/common/argo.c
 create mode 100644 xen/common/compat/argo.c
 create mode 100644 xen/include/public/argo.h
 create mode 100644 xen/include/xen/argo.h

-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to