From: Gerd Hoffmann <kraxel@redhat.com>
To: "Stephen C. Tweedie" <sct@redhat.com>
Cc: Derek Murray <Derek.Murray@cl.cam.ac.uk>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Juan Quintela <quintela@redhat.com>,
Jan Beulich <jbeulich@novell.com>,
Glauber de Oliveira Costa <gcosta@redhat.com>,
Chris Wright <chrisw@sous-sol.org>,
"virtualization@lists.osdl.org" <virtualization@lists.osdl.org>
Subject: Re: Re: Next steps with pv_ops for Xen
Date: Wed, 05 Dec 2007 11:03:39 +0100 [thread overview]
Message-ID: <4756777B.6090405@redhat.com> (raw)
In-Reply-To: <1196771999.10809.18.camel@sisko.scot.redhat.com>
Stephen C. Tweedie wrote:
> I can't help wondering if this is a hint that now is the time to find a
> better API, which doesn't have the requirement (a) that seems to be
> causing such trouble? Are other PV guests --- *BSD, Solaris --- going
> to have the same problems with their VM layers if they try to implement
> this API?
Well, it isn't that easy unfortunaly. We have to separate two things here:
(a) the grant table hypercall API (linux kernel <-> xen).
(b) the grant table device (userspace interface).
The hypercall API *is* heavily used, block and network drivers are using
it for example. It works quite well as long as the drivers are living
in kernel space, thus the grants are also mapped in kernel space only.
It isn't very hard to control map and unmap then.
The problems start when the gntdev comes into play which wants allow
userspace applications map grant references. At this point the whole VM
subsystem becomes involved. And the requirement of the hypercall API to
do any pte manipulation using grant table hypercalls becomes a real
burden. The linux VM design simply doesn't allow that.
Consequently the current gntdev implementation tries to get the job done
by bypassing the VM (and hooking into it). It establishes mappings by
doing the page table manipulations itself in the fops->mmap function.
It tears down mappings using the hook discussed earlier.
gntdev doesn't even try to handle forking. I wouldn't be surprised if
that is a great way to kill Domain-0. The xen hypervisor will most
likely not be amused to find a pte refering to a granted (but foreign)
page which wasn't established using the grant table interface. Pinning
the pgd of the child process will most likely fail and make the kernel
BUG().
cheers,
Gerd
next prev parent reply other threads:[~2007-12-05 10:03 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-21 22:05 Next steps with pv_ops for Xen Stephen C. Tweedie
2007-11-21 23:12 ` Jeremy Fitzhardinge
2007-11-26 14:02 ` Juan Quintela
2007-11-26 18:52 ` Jeremy Fitzhardinge
2007-11-27 8:30 ` Jan Beulich
2007-11-27 17:00 ` Jeremy Fitzhardinge
2007-11-27 17:14 ` Jan Beulich
2007-11-27 17:15 ` Stephen C. Tweedie
2007-12-03 12:54 ` Gerd Hoffmann
2007-12-03 13:19 ` Derek Murray
2007-12-03 14:16 ` Gerd Hoffmann
2007-12-03 14:51 ` Derek Murray
2007-12-03 17:18 ` Mark Williamson
2007-12-03 18:36 ` D.G. Murray
2007-12-03 19:08 ` Mark Williamson
2007-12-04 9:35 ` tgh
2007-12-05 3:42 ` Mark Williamson
2007-12-06 15:21 ` Gerd Hoffmann
2007-12-06 15:32 ` Derek Murray
2007-12-06 15:55 ` Gerd Hoffmann
2007-12-21 12:58 ` [Xen-devel] " Gerd Hoffmann
2007-12-03 20:38 ` Gerd Hoffmann
2007-12-04 9:40 ` Derek Murray
2007-12-04 12:01 ` Gerd Hoffmann
2007-12-04 12:39 ` Stephen C. Tweedie
2007-12-04 19:58 ` Gerd Hoffmann
2007-12-05 11:48 ` [Xen-devel] " Derek Murray
2007-12-05 13:19 ` Derek Murray
[not found] ` <47569014.8080008@cl.cam.ac.uk>
2007-12-05 14:12 ` Gerd Hoffmann
2007-12-05 14:22 ` Keir Fraser
2007-12-05 14:30 ` Derek Murray
2007-12-05 16:58 ` Keir Fraser
2007-12-05 17:17 ` Derek Murray
2007-12-05 17:22 ` Keir Fraser
2007-12-05 17:48 ` Derek Murray
2007-12-05 17:59 ` Keir Fraser
2007-12-05 18:15 ` Derek Murray
2007-12-12 8:27 ` Isaku Yamahata
2007-12-12 8:39 ` Keir Fraser
2007-12-12 8:44 ` Isaku Yamahata
2007-12-05 20:06 ` Gerd Hoffmann
2007-12-05 18:12 ` Jeremy Fitzhardinge
2007-12-05 18:29 ` Derek Murray
2007-12-05 20:15 ` Jeremy Fitzhardinge
2007-12-05 20:35 ` Geoffrey Lefebvre
2007-12-06 10:15 ` Gerd Hoffmann
2007-12-05 20:44 ` Keir Fraser
2007-12-06 10:00 ` Derek Murray
2007-12-06 19:55 ` [Xen-devel] " Jeremy Fitzhardinge
2007-12-05 10:03 ` Gerd Hoffmann [this message]
2007-12-05 12:51 ` Gerd Hoffmann
2007-12-05 10:11 ` Derek Murray
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=4756777B.6090405@redhat.com \
--to=kraxel@redhat.com \
--cc=Derek.Murray@cl.cam.ac.uk \
--cc=chrisw@sous-sol.org \
--cc=ehabkost@redhat.com \
--cc=gcosta@redhat.com \
--cc=jbeulich@novell.com \
--cc=quintela@redhat.com \
--cc=sct@redhat.com \
--cc=virtualization@lists.osdl.org \
--cc=xen-devel@lists.xensource.com \
/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).