Input from Artem / EPAM. (This page is a little rough and some, or all, of this information might be better organized on other pages. I just wanted to make sure it is published for discussion first of all – Gunnar)
1. PV protocols
PV Sound
Protocol definition: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/xen/interface/io/sndif.h?h=v4.18
Driver: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/xen?h=v4.18
Userspace backend: https://github.com/xen-troops/snd_be – works with GENIVI AudioManager using Pulse pllug-in we would like to contribute (see herehttps://github.com/xen-troops/AudioManagerPlugins)
PV Display
Protocol definition: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/xen/interface/io/displif.h?h=v4.18
Driver: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/xen?h=v4.18
Userspace backend: https://github.com/xen-troops/displ_be – works with our own DisplayManager we would like to contribute (see here https://github.com/xen-troops/DisplayManager)
PV Keyboard, Mouse, Multi-touch
Protocol definition: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/xen/interface/io/kbdif.h?h=v4.18
PV Camera (WIP)
Protocol definition draft: https://github.com/andr2000/xen/blob/cameraif_v1/xen/include/public/io/cameraif.h
All our backends are based on generic PV device userspace backend library: https://github.com/xen-troops/libxenbe
The library can be further extended to “abstract” PV interfaces for hypervisors other than Xen. All protocols are generic enough (if you just throw out "-xen-" prefixes or suffixes).
2. TEE integration
After researching the topic couple years ago, we have decided that (at least on ARM platform with TrustZone support) it is not needed to implement some protocols or extended abstraction levels. Instead, we have decided to implement direct access to TEE from all guests - but controlled by security policies of hypervisor, i.e. some domains are allowed and some are not allowed to access the TEE.
Trusted Execution Environment support for Xen guests (direct access, no protocol needed)
Initial RFC https://lists.xenproject.org/archives/html/xen-devel/2016-11/msg02220.html
Initial set of Xen patches (being reworked now for xen upstream) https://lists.xen.org/archives/html/xen-devel/2017-11/msg01647.html
Discussion with OP-TEE Linaro community https://github.com/OP-TEE/optee_os/issues/1019
OP-TEE implementation final patch series (currently in progress of review/merge) https://github.com/OP-TEE/optee_os/pull/2370
3. PV Sensors protocol
WIP now. I think we just reuse sensors management protocol of ARM's SCMI specification - it is very flexible in available sensors description, see sectoin 4.7 here: http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf
BTW, we use same specification for implementation of sophisticated power management scenarios with DVFS (Dynamic Voltage and Frequency Scaling) in virtualized environment.