From: Anthony Liguori <aliguori-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Jimi Xenidis <jimix-aZOuKsOsJu3MbYB6QlFGEg@public.gmane.org>,
"jmk-zzFmDc4TPjtKvsKVC3L/VUEOCMrvLtNR@public.gmane.org"
<jmk-zzFmDc4TPjtKvsKVC3L/VUEOCMrvLtNR@public.gmane.org>,
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
mschwid2-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
Christian Borntraeger
<CBORNTRA-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
Suzanne McIntosh
<skranjac-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH/RFC 7/9] Virtual network guest device driver
Date: Mon, 21 May 2007 13:45:37 -0500 [thread overview]
Message-ID: <4651E8D1.4010208@us.ibm.com> (raw)
In-Reply-To: <200705211328.04565.arnd-r2nGTMty4D4@public.gmane.org>
Arnd Bergmann wrote:
> On Monday 21 May 2007, Christian Borntraeger wrote:
>
>>> This is quite easy with KVM. I like the approach that vmchannel has
>>> taken. A simple PCI device. That gives you a discovery mechanism for
>>> shared memory and an interrupt and then you can just implement a ring
>>> queue using those mechanisms (along with a PIO port for signaling from
>>> the guest to the host). So given that underlying mechanism, the
>>> question is how to expose that within the guest kernel/userspace and
>>> within the host.
>>>
>> Sorry for answering late, but I dont like PCI as a device bus for all
>> platforms. s390 has no PCI and s390 has no PIO.
Right, I'm not interested in the lowest level implementation (PCI device
+ PIO). I'm more interested in the higher level interface. The goal is
to allow drivers to be able to be written to the higher level interface
so that they work on any platform that implements the lower level
interface. On x86, that would be PCI/PIO. On s390, that could be
hypercall based.
>> I would prefer a new
>> simple hypercall based virtual bus. I dont know much about windows
>> driver programming, but I guess it it is not that hard to add a new bus.
>>
>
> We've had the same discussion about PCI as virtual device abstraction
> recently when hpa made the suggestions to get a set of PCI device
> numbers registered for Linux.
>
> IIRC, the conclusion to which we came was that it is indeed helpful
> for most architecture to have a PCI device as one way to probe for
> the functionality, but not to rely on it. s390 is the obvious
> example where you can't have PCI, but you may also want to build
> a guest kernel without PCI support because of space constraints
> in a many-guests machine.
>
> What I think would be ideal is to have a new bus type in Linux
> that does not have any dependency on PCI itself, but can be
> easily implemented as a child of a PCI device.
>
> If we only need the stuff mentioned by Anthony, the interface could
> look like
>
> struct vmchannel_device {
> struct resource virt_mem;
> struct vm_device_id id;
> int irq;
> int (*signal)(struct vmchannel_device *);
> int (*irq_ack)(struct vmchannel_device *);
> struct device dev;
> };
>
> Such a device can easily be provided as a child of a PCI device,
> or as something that is purely virtual based on an hcall interface.
>
Yes, this is close to what I was thinking. I'm not sure that this
particular interface can encompass the variety of memory sharing
mechanisms though.
When I mentioned shared memory via the PCI device, I was referring to
the memory needed for boot strapping the device. You still need a
mechanism to transfer memory for things like zero-copy disk IO and
network devices. This may involve passing memory addresses directly,
copying data, or page flipping.
This leads me to think that a higher level interface that provided a
data passing interface would be more useful. Something like:
struct vmchannel_device {
struct vm_device_id id;
int (*open)(struct vmchannel_device *, const char *name, const char
*service)
int (*release)(struct vmchannel_device *);
ssize_t (*sendmsg)(struct vmchannel_device *, const void *, size_t);
ssize_t (*recvmsg)(struct vmchannel_device *, void *, size_t);
struct device dev;
};
The consuming interface of this would be a socket (PF_VIRTLINK). The
sockaddr would contain a name identifying a VM and a service description.
This doesn't address the memory issues I raised above but I think it
would be easier to special case the drivers where it mattered. For
instance, on x86 KVM, a PV disk driver front end would consist of
connecting to a virtlink socket, and then transferring struct bio's.
QEMU instances would listen on the virtlink socket in the host, and
service them directly (QEMU can access all of the guests memory directly
in userspace).
A PV graphics device could just be a VNC server that listened on a
virtlink socket.
Regards,
Anthony Liguori
> Arnd <><
>
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
next prev parent reply other threads:[~2007-05-21 18:45 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1178903957.25135.13.camel@cotte.boeblingen.de.ibm.com>
[not found] ` <1178903957.25135.13.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 17:35 ` [PATCH/RFC 2/9] s390 virtualization interface Carsten Otte
2007-05-11 17:35 ` [PATCH/RFC 3/9] s390 guest detection Carsten Otte
2007-05-11 17:35 ` [PATCH/RFC 4/9] Basic guest virtual devices infrastructure Carsten Otte
[not found] ` <1178904958.25135.31.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:06 ` Arnd Bergmann
2007-05-14 11:26 ` Avi Kivity
[not found] ` <46484753.30602-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 11:43 ` Carsten Otte
[not found] ` <46484B5D.6080605-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:00 ` [PATCH/RFC 4/9] Basic guest virtualdevices infrastructure Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BC7483D-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-14 13:32 ` Carsten Otte
2007-05-11 17:36 ` [PATCH/RFC 5/9] s390 virtual console for guests Carsten Otte
[not found] ` <1178904960.25135.32.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:00 ` Anthony Liguori
[not found] ` <4644BD3C.8040901-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-11 19:42 ` Christian Bornträger
2007-05-12 8:07 ` Carsten Otte
2007-05-14 16:23 ` Christian Bornträger
[not found] ` <200705141823.13424.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 16:48 ` Christian Borntraeger
[not found] ` <200705141848.18996.borntrae-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 17:49 ` Anthony Liguori
[not found] ` <4648A11D.3050607-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-15 0:27 ` Arnd Bergmann
2007-05-15 7:54 ` Carsten Otte
2007-05-11 17:36 ` [PATCH/RFC 6/9] virtual block device driver Carsten Otte
[not found] ` <1178904963.25135.33.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-14 11:49 ` Avi Kivity
[not found] ` <46484CDF.505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:23 ` Carsten Otte
[not found] ` <464862E9.7020105-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 14:39 ` Avi Kivity
[not found] ` <46487494.1070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-15 11:47 ` Carsten Otte
[not found] ` <46499DE9.9090202-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-16 10:01 ` Avi Kivity
2007-05-14 11:52 ` Avi Kivity
[not found] ` <46484D84.3060601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:26 ` Carsten Otte
2007-05-11 17:36 ` [PATCH/RFC 7/9] Virtual network guest " Carsten Otte
[not found] ` <1178904965.25135.34.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:44 ` ron minnich
[not found] ` <13426df10705111244w1578ebedy8259bc42ca1f588d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 20:12 ` Anthony Liguori
[not found] ` <4644CE15.6080505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 21:15 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705111415n47e77a15o331b59cf2a03b4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 21:47 ` Anthony Liguori
[not found] ` <4644E456.2060507-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 22:21 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705111521v2d451ddcjecf209e2031c85af-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 17:28 ` Anthony Liguori
[not found] ` <464B3F20.4030904-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 17:38 ` Daniel P. Berrange
[not found] ` <20070516173822.GD16863-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-05-17 9:29 ` Carsten Otte
[not found] ` <464C2069.20909-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-17 14:22 ` Anthony Liguori
[not found] ` <464C651F.5070700-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-21 11:11 ` Christian Borntraeger
2007-05-16 17:41 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705161041s5393c1a6wc455b20ff3fe8106-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 18:47 ` Anthony Liguori
[not found] ` <464B51A8.7050307-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:33 ` Eric Van Hensbergen
2007-05-16 17:45 ` Gregory Haskins
[not found] ` <464B0ADB.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:39 ` Anthony Liguori
[not found] ` <464B4FEB.7070300-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:57 ` Gregory Haskins
[not found] ` <464B1B9C.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:10 ` Anthony Liguori
[not found] ` <464B572C.6090800-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17 4:24 ` Rusty Russell
[not found] ` <1179375881.21871.83.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-05-17 16:13 ` Anthony Liguori
[not found] ` <464C7F45.50908-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17 23:34 ` Rusty Russell
2007-05-21 9:07 ` Christian Borntraeger
[not found] ` <OFC1AADF6F.DB57C7AC-ON422572E2.0030BE22-422572E2.0032174C-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-21 9:27 ` Cornelia Huck
2007-05-21 11:28 ` Arnd Bergmann
[not found] ` <200705211328.04565.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-21 11:56 ` Cornelia Huck
[not found] ` <20070521135628.17a4f9cc-XQvu0L+U/CiXI4yAdoq52KN5r0PSdgG1zG2AekJRRhI@public.gmane.org>
2007-05-21 13:53 ` Arnd Bergmann
2007-05-21 18:45 ` Anthony Liguori [this message]
[not found] ` <4651E8D1.4010208-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-21 23:09 ` ron minnich
[not found] ` <13426df10705211609j613032c6j373d9a4660f8ec6c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 0:29 ` Anthony Liguori
[not found] ` <46523952.7070405-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22 0:45 ` ron minnich
[not found] ` <13426df10705211745r69acc95ai458b2192fe0d0132-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 1:13 ` Anthony Liguori
2007-05-22 1:34 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705211834s4db19c7t3b95765bf2c092d7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 1:42 ` Anthony Liguori
[not found] ` <46524A79.8070004-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22 5:17 ` Avi Kivity
[not found] ` <46527CD9.5000603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-22 12:49 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705220549j1c9565f2ic160c672b74aea35-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 12:56 ` Christoph Hellwig
[not found] ` <20070522125655.GA4506-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 14:50 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705220750s5abe380dg8dd8e7d0b84de7cd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 15:05 ` Anthony Liguori
[not found] ` <465306AE.5080902-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22 15:31 ` ron minnich
2007-05-22 16:25 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705220925l580f136we269380fe3c9691c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:00 ` ron minnich
[not found] ` <13426df10705221000i749badc5h8afe4f2fc95bc2ce-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:06 ` Christoph Hellwig
[not found] ` <20070522170628.GA16624-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 17:34 ` ron minnich
[not found] ` <13426df10705221034k7baf5bccrc77aabca8c9e225c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 20:03 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BF29F1E-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-22 20:10 ` ron minnich
2007-05-22 22:56 ` Nakajima, Jun
[not found] ` <8FFF7E42E93CC646B632AB40643802A8032793AC-1a9uaKK1+wJcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-05-23 8:15 ` Carsten Otte
[not found] ` <4653F807.2010209-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-23 12:25 ` Avi Kivity
2007-05-23 14:12 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705230712pd8c2958m9dee6b2ccec0899d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-23 23:02 ` Arnd Bergmann
[not found] ` <200705240102.40795.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-23 23:57 ` Eric Van Hensbergen
[not found] ` <a4e6962a0705231657n65946ba4n74393f7028b6d61c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-24 0:07 ` Eric Van Hensbergen
2007-05-23 12:21 ` Avi Kivity
2007-05-23 12:16 ` Avi Kivity
[not found] ` <465430B2.7050101-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-23 12:20 ` Christoph Hellwig
2007-05-23 12:20 ` Avi Kivity
2007-05-23 11:55 ` Avi Kivity
2007-05-22 13:08 ` Anthony Liguori
2007-05-18 5:31 ` ron minnich
[not found] ` <13426df10705172231y5e93d1f5y398d4f187a8978e1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-18 14:31 ` Anthony Liguori
[not found] ` <464DB8A5.6080503-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-18 15:14 ` ron minnich
2007-05-11 21:51 ` ron minnich
2007-05-12 8:46 ` Carsten Otte
[not found] ` <46457EF9.2070706-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-13 12:04 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BC74612-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 14:49 ` Anthony Liguori
[not found] ` <4647257F.4020900-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 16:23 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BC74675-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 16:49 ` Anthony Liguori
[not found] ` <4647418A.2040201-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 17:06 ` Muli Ben-Yehuda
[not found] ` <20070513170608.GA4343-WD1JZD8MxeCTrf4lBMg6DdBPR1lH4CV8@public.gmane.org>
2007-05-13 20:31 ` Dor Laor
2007-05-14 2:39 ` Rusty Russell
2007-05-14 11:53 ` Avi Kivity
2007-05-14 12:05 ` Avi Kivity
[not found] ` <46485070.3000106-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 12:24 ` Christian Bornträger
[not found] ` <200705141424.44423.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:32 ` Avi Kivity
2007-05-14 13:36 ` Carsten Otte
2007-05-11 17:36 ` [PATCH/RFC 8/9] Virtual network host switch support Carsten Otte
[not found] ` <1178904968.25135.35.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:21 ` Anthony Liguori
[not found] ` <4644D048.7060106-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 20:50 ` Christian Bornträger
2007-05-11 17:36 ` [PATCH/RFC 9/9] Fix system<->user misaccount of interpreted execution Carsten Otte
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=4651E8D1.4010208@us.ibm.com \
--to=aliguori-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=CBORNTRA-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=jimix-aZOuKsOsJu3MbYB6QlFGEg@public.gmane.org \
--cc=jmk-zzFmDc4TPjtKvsKVC3L/VUEOCMrvLtNR@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=mschwid2-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=skranjac-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.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