[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] xen/evtchn: Add design for static event channel signaling for domUs..
in dom0less system. This patch introduce the new feature to support the signaling between two domUs in dom0less system. Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx> --- docs/designs/dom0less-evtchn.md | 96 +++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 docs/designs/dom0less-evtchn.md diff --git a/docs/designs/dom0less-evtchn.md b/docs/designs/dom0less-evtchn.md new file mode 100644 index 0000000000..6a1b7e8c22 --- /dev/null +++ b/docs/designs/dom0less-evtchn.md @@ -0,0 +1,96 @@ +# Signaling support between two domUs on dom0less system + +## Current state: Draft version + +## Proposer(s): Rahul Singh, Bertrand Marquis + +## Problem Statement: + +The goal of this work is to define a simple signaling system between Xen guests +in dom0less systems. + +In dom0less system, we cannot make use of xenbus and xenstore that are used in +normal systems with dynamic VMs to communicate between domains by providing a +bus abstraction for paravirtualized drivers. + +One possible solution to implement the signaling system between domUs is based +on event channels. + +## Proposal: + +Event channels are the basic primitive provided by Xen for event notifications. +An event channel is a logical connection between 2 domains (more specifically +between dom1,port1 and dom2,port2). They essentially store one bit of +information, the event of interest is signalled by transitioning this bit from +0 to 1. An event is an equivalent of a hardware interrupt. + +Notifications are received by a guest via an interrupt from Xen to the guest, +indicating when an event arrives (setting the bit). Further notifications are +masked until the bit is cleared again. When a domain wants to wait for data it +will block until an event arrives, and then send an event to signal that data +has been consumed. Events are delivered asynchronously to guests and are +enqueued when the guest is not running. + +Event channel communication will be established statically between two domU +guests before unpausing the domains after domain creation. Event channel +connection information between domUs will be passed to XEN via device tree +node. + +Under the /chosen node, there needs to be sub nodes with compatible +"xen,evtchn" that descibes the event channel connection between two domUs. + +The event channel sub-node has the following properties: + +- compatible + + "xen,evtchn" + +- xen,evtchn + + The property is four numbers of tuples of + (local-port-domU1,domU1-phandle,local-port-domU2,domU2-phandle) where: + + local-port-domU1 is an integer value that will be used to allocte local + port for domU1 to send an event notification to the remote domain. + + domU1-phandle is a single phandle to an domain to which local-port-domU1 + will be allocated. + + local-port-domU2 is an integer value that will be used to allocte local + port for domU2 to send an event notification to the remote domain. + + domU2-phandle is a single phandle to an domain to which local-port-domU2 + will be allocated. + +Example: + + chosen { + .... + + domU1: domU1 { + ...... + }; + + domU2: domU2 { + ...... + }; + + evtchn@1 { + compatible = "xen,evtchn"; + xen,evtchn = <0xa &domU1 0xb &domU2>; + }; + + evtchn@2 { + compatible = "xen,evtchn"; + xen,evtchn = <0xc &domU1 0xd &domU2>; + }; + }; + +In above example two event channel comunication will be established between +domU1 and domU2. + + domU1 (port 0xa) <-----------------> domU2 (port 0xb) + domU1 (port 0xc) <-----------------> domU2 (port 0xd) + +domU1 and domU2 can send the signal to remote domain via hypercall +EVTCHNOP_send(.) on local port. -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |