[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] questions regarding interdomain communication and xen-guest communication



>>> On 28.10.13 at 16:21, Aastha Mehta <aasthakm@xxxxxxxxx> wrote:
> On 25 October 2013 14:18, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>> That callback will need to be registered in any case - the (general)
>> event upcall.
>>
> Could you please clarify which general event upcall are you referring to 
> here?

The one you would e.g. register with CALLBACKTYPE_event.

> Let me clarify my question a bit more. My requirement is that I need
> to perform some computations on an application data, but I cannot
> allow the application to do so directly. I would like to provide the
> computation as a service from, say dom0. Here are two approaches that
> come to my mind -
> Approach 1
> 1. Application makes a syscall into DomU kernel requesting for the 
> computation.
> 2. DomU copies the application data into a kernel buffer and makes a
> hypercall into Xen forwarding application's request.
> 3. Xen upcalls into dom0 kernel for the service (a new vIRQ?).

Definitely not. This would be a normal event channel.

> 4. Dom0 performs the computation and sends the results back to Xen via
> a hypercall.
> 5. Xen returns the results to DomU kernel through another upcall (another 
> vIRQ).

Again an event channel.

> 6. DomU kernel forwards the result to the application and returns the 
> syscall.
> 
> Approach 2
> Replace steps 2-5 in the above approach with interdomain event channel

Ah, okay - so just forget about #1 then.

> notification between dom0 and domU and sharing the data pages through
> grant table mechanism. So domU will notify dom0 that it has sent a
> request for the computation, after placing the data to be used in the
> shared memory. dom0's handler will get the request and the shared
> data, compute the result, place it in another shared memory region and
> notify domU of the completion of the request.
> 
> Do the two approaches even make sense?
> I looked at the blkfront-blkback drivers, and how they use event
> channels, grant tables and xenbus. If I understand correctly, the
> event channels have to be associated with the xenbus, but it seems
> that xenbus can only be used by drivers. I do not understand how the
> event channels can be setup ad hoc between two domains. How do I know
> what xenbus_device to connect to?

There's examples of how to use the event channel device to use
them from user space. But as pointed out in someone else's
response - perhaps all you need to do is use an already existing
library.

> Another question I have is, if a domU makes a hypercall into Xen and
> if the hypercall is long running, does it block the entire domU until
> the hypercall returns? What if there are multiple vcpus?

No, just the particular vCPU would be blocked.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.