This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


RE: [Xen-devel] sharing memory between qemu and domu without grant table

To: "Keir Fraser" <keir@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] sharing memory between qemu and domu without grant tables or vmexits...
From: "James Harper" <james.harper@xxxxxxxxxxxxxxxx>
Date: Sun, 17 Oct 2010 19:23:17 +1100
Delivery-date: Sun, 17 Oct 2010 01:29:11 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C8E06628.26353%keir@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <AEC6C66638C05B468B556EA548C1A77D01B1FE36@trantor> <C8E06628.26353%keir@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acttu/Egb94n0I/5RaamETF7xAIFyAAEiHm1AAF2h7A=
Thread-topic: [Xen-devel] sharing memory between qemu and domu without grant tables or vmexits...
> > Is it possible to share a page of memory between qemu in dom0 and
> > without using grant tables and without domu access to that page
> > a vmexit?
> Pick a reserved page in guest's physical memory map. Communicate that
> address to both domU and qemu somehow (e.g., one might pick it and
> communicate it to the other; or it may be a statically assigned
> address; or whatever). Qemu can map that page, as obviously can the
> To get that reserved page, you could: (1) pick an unused frame slot in
> hole below 4GB (e.g., between LAPIC and IOAPIC mappings) allocate a
> there from qemu, or hvmloader, or domU, or...; or (2) you could have
> domain builder, or hvmloader, reserve a page from the guest's regular
> space, and update guest e820 appropiately to indicate page is
> Communicate that address as necessary, and away you go.

I'm still not sure I understand it all... might the following work them:
1. Allocate a page of memory in my windows code
2. Write the PFN to a known io port (with some sort of interlock so that
a random io write that hits that port isn't going to do anything bad)
3. qemu is called when the io port is triggered and maps the page to its
own space

Can qemu map an actual page of domu memory without a grant reference
(remember, grant table is not set up at this point)? Or do I need to map
a page of shared memory into the memory hole I allocated?

What calls should I be making in qemu to actually map the page?



Xen-devel mailing list