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

Re: [openxt-dev] VirtIO-Argo initial development proposal


  • To: Julien Grall <julien@xxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Thu, 31 Dec 2020 09:45:56 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4fUtm5oHVl9pVLu6B6OLdeRXtRiaWfgxkme+DWGgI54=; b=nAtOVonR4FrQYtCHgZHwpcJOumCQyPB4/AQiqtxW6Mmz6gkP416UkNNfs8r61bmmjjCvtyZU4J3Qrg21hyoJLB1w3u5JR8XCAkceQnMs7oTH/8v1rYacCsfzF7kDhuzGcgyyEnHussqoef6XZ6jMORZzslvI9SUPbuXIeS/SortW2e3OhD6+TRSuuPc47u68NWukyqlJ5AvW/LI5LrELyCop0bncHFTeC4X1I/AO0KhRBDHMrsAWVlzHiVmXF5tUEM+ITdEFKjfThJITXjxHkOh5D4W4PHSS49aLcYtrV2kZFle3ZjJ9+x2gaj3fL9oYzD9JdQ57oxNIWW8MMPd/Hg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XNfXFBU5xj2ccMb+lO7iM9JZbEyAar2lPoYb2lhh2klM5JuSWH3jghryOp5dCgYdIlIEiymJQWWwul9nVT5XolpJ/Tqm6cQ/ApknESD8uqfLjx2nH+bzjkEbHJB2kheoouxJW0yK8QG00l74h5c6YOh8ASVPOvVjlZZV9nxmI9+foVjA14XnfNFoPfcNthMg/khaClAhH87cf2yt0lxPSvNnJajzve8RbIJ1pNoEbV0qu8Q6r3j3igUq8PZQJ3DjrlagPwZZ8JFr9bddZa8WchMtkss6TRiWMDJLMolUr60cvrg0Zlfq0ojDWZZ+z94wYYmBkKL7J2YTT5X/XgLG2Q==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Rich Persaud <persaur@xxxxxxxxx>, Jean-Philippe Ouellet <jpo@xxxxxx>, Christopher Clark <christopher.w.clark@xxxxxxxxx>, openxt <openxt@xxxxxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Oleksandr Tyshchenko <olekstysh@xxxxxxxxx>, Julien Grall <jgrall@xxxxxxxxxx>, James McKenzie <james@xxxxxxxxxxx>, Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>, Paul Durrant <pdurrant@xxxxxxxxxxxx>
  • Delivery-date: Thu, 31 Dec 2020 08:46:29 +0000
  • Ironport-sdr: sGoeYkk4ypAAPSwWpVlb4YuwXYl13dpXSWNzPGw5Azv9QW2YY5hGNugNqDm5qV8lWyXq3V6z8i bNBwM7955uRmigA5aKZdSvxI3KikTC55dUhIkp8JfbqGYWE4s1fXdSYNjtiDVVUd6YdqBAWJNv egJCaAkN4AGOJSynNGwTf7z3EZ4JCnu4e5NWqggf9S2UHglFIgdrIPUOAXbiTHdSZXRq6GG5yJ cWXR8IsQzm4pbeQPIy5+Zycf9mZJfkt9GZe6narOFxFrDWfCUKNwGGQUQ6daQiHt4Sww+rFvo0 WX4=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Wed, Dec 30, 2020 at 11:30:03AM +0000, Julien Grall wrote:
> Hi Roger,
> 
> On 29/12/2020 09:17, Roger Pau Monné wrote:
> > On Wed, Dec 23, 2020 at 04:32:01PM -0500, Rich Persaud wrote:
> > > On Dec 17, 2020, at 07:13, Jean-Philippe Ouellet <jpo@xxxxxx> wrote:
> > > > On Wed, Dec 16, 2020 at 2:37 PM Christopher Clark
> > > > <christopher.w.clark@xxxxxxxxx> wrote:
> > > > > Hi all,
> > > > > 
> > > > > I have written a page for the OpenXT wiki describing a proposal for
> > > > > initial development towards the VirtIO-Argo transport driver, and the
> > > > > related system components to support it, destined for OpenXT and
> > > > > upstream projects:
> > > > > 
> > > > > https://openxt.atlassian.net/wiki/spaces/~cclark/pages/1696169985/VirtIO-Argo+Development+Phase+1
> > 
> > Thanks for the detailed document, I've taken a look and there's indeed
> > a lot of work to do listed there :). I have some suggestion and
> > questions.
> > 
> > Overall I think it would be easier for VirtIO to take a new transport
> > if it's not tied to a specific hypervisor. The way Argo is implemented
> > right now is using hypercalls, which is a mechanism specific to Xen.
> The concept of hypervisor call is not Xen specific. Any other hypervisor can
> easily implement them. At least this is the case on Arm because we have an
> instruction 'hvc' that acts the same way as a syscall but for the
> hypervisor.
> 
> What we would need to do is reserving a range for Argos. It should be
> possible to do it on Arm thanks to the SMCCC (see [1]).
> 
> I am not sure whether you have something similar on x86.

On x86 Intel has vmcall and AMD vmmcall, but those are only available
to HVM guests.

> > IMO it might be easier to start by having an Argo interface using
> > MSRs, that all hypervisors can implement, and then base the VirtIO
> > implementation on top of that interface.
> My concern is the interface would need to be arch-specific. Would you mind
> to explain what's the problem to implement something based on vmcall?

More of a recommendation than a concern, but I think it would be more
attractive for upstream if we could provide an interface to Argo (or
hypervisor mediated data exchange) that's no too tied into Xen
specifics. Using a defined vmcall/vmmcall interface (and leaving PV out
of the picture?) could be one option.

My suggestion for using MSRs was because I think every x86 hypervisor
must have the logic to trap and handle some of those, and also every
OS has the helpers to read/write MSRs, and those instructions are not
vendor specific.

Roger.



 


Rackspace

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