netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Gregory Haskins <gregory.haskins@gmail.com>
Cc: "Ira W. Snyder" <iws@ovro.caltech.edu>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	netdev@vger.kernel.org,
	virtualization@lists.linux-foundation.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, mingo@elte.hu, linux-mm@kvack.org,
	akpm@linux-foundation.org, hpa@zytor.com,
	Rusty Russell <rusty@rustcorp.com.au>,
	s.hetze@linux-ag.com, alacrityvm-devel@lists.sourceforge.net
Subject: Re: [PATCHv5 3/3] vhost_net: a kernel-level virtio server
Date: Wed, 23 Sep 2009 17:37:35 +0300	[thread overview]
Message-ID: <4ABA32AF.50602@redhat.com> (raw)
In-Reply-To: <4ABA3005.60905@gmail.com>

On 09/23/2009 05:26 PM, Gregory Haskins wrote:
>
>    
>>> Yes, I'm having to create my own bus model, a-la lguest, virtio-pci, and
>>> virtio-s390. It isn't especially easy. I can steal lots of code from the
>>> lguest bus model, but sometimes it is good to generalize, especially
>>> after the fourth implemention or so. I think this is what GHaskins tried
>>> to do.
>>>
>>>        
>> Yes.  vbus is more finely layered so there is less code duplication.
>>      
> To clarify, Ira was correct in stating this generalizing some of these
> components was one of the goals for the vbus project: IOW vbus finely
> layers and defines what's below virtio, not replaces it.
>
> You can think of a virtio-stack like this:
>
> --------------------------
> | virtio-net
> --------------------------
> | virtio-ring
> --------------------------
> | virtio-bus
> --------------------------
> | ? undefined ?
> --------------------------
>
> IOW: The way I see it, virtio is a device interface model only.  The
> rest of it is filled in by the virtio-transport and some kind of back-end.
>
> So today, we can complete the "? undefined ?" block like this for KVM:
>
> --------------------------
> | virtio-pci
> --------------------------
>               |
> --------------------------
> | kvm.ko
> --------------------------
> | qemu
> --------------------------
> | tuntap
> --------------------------
>
> In this case, kvm.ko and tuntap are providing plumbing, and qemu is
> providing a backend device model (pci-based, etc).
>
> You can, of course, plug a different stack in (such as virtio-lguest,
> virtio-ira, etc) but you are more or less on your own to recreate many
> of the various facilities contained in that stack (such as things
> provided by QEMU, like discovery/hotswap/addressing), as Ira is discovering.
>
> Vbus tries to commoditize more components in the stack (like the bus
> model and backend-device model) so they don't need to be redesigned each
> time we solve this "virtio-transport" problem.  IOW: stop the
> proliferation of the need for pci-bus, lguest-bus, foo-bus underneath
> virtio.  Instead, we can then focus on the value add on top, like the
> models themselves or the simple glue between them.
>
> So now you might have something like
>
> --------------------------
> | virtio-vbus
> --------------------------
> | vbus-proxy
> --------------------------
> | kvm-guest-connector
> --------------------------
>               |
> --------------------------
> | kvm.ko
> --------------------------
> | kvm-host-connector.ko
> --------------------------
> | vbus.ko
> --------------------------
> | virtio-net-backend.ko
> --------------------------
>
> so now we don't need to worry about the bus-model or the device-model
> framework.  We only need to implement the connector, etc.  This is handy
> when you find yourself in an environment that doesn't support PCI (such
> as Ira's rig, or userspace containers), or when you want to add features
> that PCI doesn't have (such as fluid event channels for things like IPC
> services, or priortizable interrupts, etc).
>    

Well, vbus does more, for example it tunnels interrupts instead of 
exposing them 1:1 on the native interface if it exists.  It also pulls 
parts of the device model into the host kernel.

>> The virtio layering was more or less dictated by Xen which doesn't have
>> shared memory (it uses grant references instead).  As a matter of fact
>> lguest, kvm/pci, and kvm/s390 all have shared memory, as you do, so that
>> part is duplicated.  It's probably possible to add a virtio-shmem.ko
>> library that people who do have shared memory can reuse.
>>      
> Note that I do not believe the Xen folk use virtio, so while I can
> appreciate the foresight that went into that particular aspect of the
> design of the virtio model, I am not sure if its a realistic constraint.
>    

Since a virtio goal was to reduce virtual device driver proliferation, 
it was necessary to accommodate Xen.

-- 
error compiling committee.c: too many arguments to function

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2009-09-23 14:37 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1251388414.git.mst@redhat.com>
2009-08-27 16:06 ` [PATCHv5 1/3] mm: export use_mm/unuse_mm to modules Michael S. Tsirkin
2009-08-28 15:31   ` Gregory Haskins
2009-08-27 16:07 ` [PATCHv5 2/3] mm: reduce atomic use on use_mm fast path Michael S. Tsirkin
2009-08-27 16:07 ` [PATCHv5 3/3] vhost_net: a kernel-level virtio server Michael S. Tsirkin
2009-09-03 18:39   ` Ira W. Snyder
2009-09-07 10:15     ` Michael S. Tsirkin
2009-09-08 17:20       ` Ira W. Snyder
2009-09-08 20:14         ` Michael S. Tsirkin
2009-09-11 15:17           ` Xin, Xiaohui
2009-09-13  5:46             ` Michael S. Tsirkin
2009-09-14  5:57               ` Xin, Xiaohui
2009-09-14  7:05                 ` Michael S. Tsirkin
2009-09-11 16:00         ` Gregory Haskins
2009-09-11 16:14           ` Gregory Haskins
2009-09-13 12:01           ` Michael S. Tsirkin
2009-09-14 16:08             ` Gregory Haskins
2009-09-14 16:47               ` Michael S. Tsirkin
2009-09-14 19:14                 ` Gregory Haskins
2009-09-15 12:35                   ` Avi Kivity
2009-09-15 13:03                     ` Gregory Haskins
2009-09-15 13:25                       ` Avi Kivity
2009-09-15 13:50                         ` Gregory Haskins
2009-09-15 14:28                           ` Michael S. Tsirkin
2009-09-15 15:03                           ` Avi Kivity
2009-09-15 20:08                             ` Gregory Haskins
2009-09-15 20:40                               ` Michael S. Tsirkin
2009-09-15 20:43                                 ` Gregory Haskins
2009-09-15 21:25                                   ` Michael S. Tsirkin
2009-09-15 21:39                                     ` Gregory Haskins
2009-09-15 21:38                                       ` Michael S. Tsirkin
2009-09-15 21:55                                         ` Gregory Haskins
2009-09-16 14:57                                     ` Arnd Bergmann
2009-09-16 15:13                                       ` Michael S. Tsirkin
2009-09-16 15:22                                         ` Arnd Bergmann
2009-09-16 16:08                                           ` Michael S. Tsirkin
2009-09-16  8:23                               ` Avi Kivity
2009-09-16 11:44                                 ` Gregory Haskins
2009-09-16 13:05                                   ` Avi Kivity
2009-09-16 14:10                                     ` Gregory Haskins
2009-09-16 15:59                                       ` Avi Kivity
2009-09-16 19:22                                         ` Gregory Haskins
2009-09-16 21:00                                           ` Avi Kivity
2009-09-17  3:11                                             ` Gregory Haskins
2009-09-17  7:49                                               ` Avi Kivity
2009-09-17 14:16                                               ` Javier Guerra
2009-09-21 21:43                                               ` Ira W. Snyder
2009-09-22  9:43                                                 ` Avi Kivity
2009-09-22 15:25                                                   ` Ira W. Snyder
2009-09-22 15:56                                                     ` Avi Kivity
2009-09-23 14:26                                                   ` Gregory Haskins
2009-09-23 14:37                                                     ` Avi Kivity [this message]
2009-09-23 15:10                                                       ` Gregory Haskins
2009-09-23 17:58                                                         ` Gregory Haskins
2009-09-23 19:37                                                           ` Avi Kivity
2009-09-23 21:15                                                             ` Gregory Haskins
2009-09-24  7:18                                                               ` Avi Kivity
2009-09-24 18:03                                                                 ` Gregory Haskins
2009-09-25  8:22                                                                   ` Avi Kivity
2009-09-25 21:32                                                                     ` Gregory Haskins
2009-09-27  9:43                                                                       ` Avi Kivity
2009-09-30 20:04                                                                         ` Gregory Haskins
2009-10-01  8:34                                                                           ` Avi Kivity
2009-10-01  9:28                                                                             ` Michael S. Tsirkin
2009-10-01 19:24                                                                             ` Gregory Haskins
2009-10-03 10:00                                                                               ` Avi Kivity
2009-09-24 19:27                                                                 ` Ira W. Snyder
2009-09-25  7:43                                                                   ` Avi Kivity
2009-09-24  8:03                                                             ` Avi Kivity
2009-09-24 18:04                                                               ` Gregory Haskins
2009-09-17  3:57                                       ` Michael S. Tsirkin
2009-09-17  4:13                                         ` Gregory Haskins
2009-09-15 12:32                 ` Avi Kivity
2009-09-14 16:53               ` Michael S. Tsirkin
2009-09-14 19:28                 ` Gregory Haskins
2009-09-25 17:01   ` Ira W. Snyder
2009-09-27  7:43     ` Michael S. Tsirkin
     [not found] <E88DD564E9DC5446A76B2B47C3BCCA150219600F9B@pdsmsx503.ccr.corp.intel.com>
2009-08-31 11:42 ` Xin, Xiaohui
2009-08-31 15:23   ` Arnd Bergmann
2009-09-01 14:58     ` Xin, Xiaohui
2009-08-31 17:52   ` Avi Kivity
2009-08-31 21:56     ` Anthony Liguori
2009-09-01 15:37       ` Xin, Xiaohui
2009-09-01  5:04     ` Xin, Xiaohui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ABA32AF.50602@redhat.com \
    --to=avi@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alacrityvm-devel@lists.sourceforge.net \
    --cc=gregory.haskins@gmail.com \
    --cc=hpa@zytor.com \
    --cc=iws@ovro.caltech.edu \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@elte.hu \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=s.hetze@linux-ag.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).