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