On Thu, 2011-04-07 at 21:25 +0100, Konrad Rzeszutek Wilk wrote:
> # HG changeset patch
> # User Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> # Date 1302194186 14400
> # Node ID decab6c21cc3d7ce4d4dad949d34ba35d4600490
> # Parent 97763efc41f9b664cf6f7db653c9c3f51e50b358
> tools: Add xc_domain_set_memory_map and xc_get_machine_memory_map calls.
>
> The later retrieves the E820 as seen by the hypervisor (completly
> unchanged) and the second call sets the E820 for a specific guest.
>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>
> diff -r 97763efc41f9 -r decab6c21cc3 tools/libxc/xc_domain.c
> --- a/tools/libxc/xc_domain.c Tue Apr 05 18:23:54 2011 +0100
> +++ b/tools/libxc/xc_domain.c Thu Apr 07 12:36:26 2011 -0400
> @@ -510,6 +510,55 @@
Please add:
[diff]
showfunc = True
to your ~/.hgrc
>
> return rc;
> }
> +
> +int xc_domain_set_memory_map(xc_interface *xch,
> + uint32_t domid,
> + struct e820entry entries[],
> + uint32_t nr_entries)
> +{
> + int rc;
> + struct xen_foreign_memory_map fmap = {
> + .domid = domid,
> + .map = { .nr_entries = nr_entries }
> + };
> + DECLARE_HYPERCALL_BOUNCE(entries, nr_entries * sizeof(struct e820entry),
> + XC_HYPERCALL_BUFFER_BOUNCE_IN);
> +
> + if ( !entries || xc_hypercall_bounce_pre(xch, entries) )
> + return -1;
> +
> + set_xen_guest_handle(fmap.map.buffer, entries);
> +
> + rc = do_memory_op(xch, XENMEM_set_memory_map, &fmap, sizeof(fmap));
> +
> + xc_hypercall_bounce_post(xch, entries);
> +
> + return rc;
> +}
Should probably reimplement xc_domain_set_memmap_limit() as a wrapper
around this new function. And/or nuke it if that's an option.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|