# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1287418526 -3600
# Node ID 90a64629f7c0c2cd6d244b4a00cc20e1e277d349
# Parent 835b06768104fbd54c5e1ab4fbd06c690fa7a39a
libxc: add xc_domain_add_to_physmap to wrap XENMEM_add_to_physmap
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
tools/libxc/xc_dom_x86.c | 21 ++++++++-------------
tools/libxc/xc_domain.c | 15 +++++++++++++++
tools/libxc/xenctrl.h | 6 ++++++
3 files changed, 29 insertions(+), 13 deletions(-)
diff -r 835b06768104 -r 90a64629f7c0 tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c Mon Oct 18 17:14:07 2010 +0100
+++ b/tools/libxc/xc_dom_x86.c Mon Oct 18 17:15:26 2010 +0100
@@ -815,31 +815,26 @@ int arch_setup_bootlate(struct xc_dom_im
else
{
/* paravirtualized guest with auto-translation */
- struct xen_add_to_physmap xatp;
int i;
/* Map shared info frame into guest physmap. */
- xatp.domid = dom->guest_domid;
- xatp.space = XENMAPSPACE_shared_info;
- xatp.idx = 0;
- xatp.gpfn = dom->shared_info_pfn;
- rc = xc_memory_op(dom->xch, XENMEM_add_to_physmap, &xatp);
+ rc = xc_domain_add_to_physmap(dom->xch, dom->guest_domid,
+ XENMAPSPACE_shared_info,
+ 0, dom->shared_info_pfn);
if ( rc != 0 )
{
xc_dom_panic(dom->xch, XC_INTERNAL_ERROR, "%s: mapping"
" shared_info failed (pfn=0x%" PRIpfn ", rc=%d)",
- __FUNCTION__, xatp.gpfn, rc);
+ __FUNCTION__, dom->shared_info_pfn, rc);
return rc;
}
/* Map grant table frames into guest physmap. */
for ( i = 0; ; i++ )
{
- xatp.domid = dom->guest_domid;
- xatp.space = XENMAPSPACE_grant_table;
- xatp.idx = i;
- xatp.gpfn = dom->total_pages + i;
- rc = xc_memory_op(dom->xch, XENMEM_add_to_physmap, &xatp);
+ rc = xc_domain_add_to_physmap(dom->xch, dom->guest_domid,
+ XENMAPSPACE_grant_table,
+ i, dom->total_pages + i);
if ( rc != 0 )
{
if ( (i > 0) && (errno == EINVAL) )
@@ -849,7 +844,7 @@ int arch_setup_bootlate(struct xc_dom_im
}
xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
"%s: mapping grant tables failed " "(pfn=0x%"
- PRIpfn ", rc=%d)", __FUNCTION__, xatp.gpfn, rc);
+ PRIpfn ", rc=%d)", __FUNCTION__, dom->total_pages
+ i, rc);
return rc;
}
}
diff -r 835b06768104 -r 90a64629f7c0 tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c Mon Oct 18 17:14:07 2010 +0100
+++ b/tools/libxc/xc_domain.c Mon Oct 18 17:15:26 2010 +0100
@@ -682,6 +682,21 @@ int xc_domain_decrease_reservation_exact
return err;
}
+int xc_domain_add_to_physmap(xc_interface *xch,
+ uint32_t domid,
+ unsigned int space,
+ unsigned long idx,
+ xen_pfn_t gpfn)
+{
+ struct xen_add_to_physmap xatp = {
+ .domid = domid,
+ .space = space,
+ .idx = idx,
+ .gpfn = gpfn,
+ };
+ return xc_memory_op(xch, XENMEM_add_to_physmap, &xatp);
+}
+
int xc_domain_populate_physmap(xc_interface *xch,
uint32_t domid,
unsigned long nr_extents,
diff -r 835b06768104 -r 90a64629f7c0 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h Mon Oct 18 17:14:07 2010 +0100
+++ b/tools/libxc/xenctrl.h Mon Oct 18 17:15:26 2010 +0100
@@ -810,6 +810,12 @@ int xc_domain_decrease_reservation_exact
unsigned long nr_extents,
unsigned int extent_order,
xen_pfn_t *extent_start);
+
+int xc_domain_add_to_physmap(xc_interface *xch,
+ uint32_t domid,
+ unsigned int space,
+ unsigned long idx,
+ xen_pfn_t gpfn);
int xc_domain_populate_physmap(xc_interface *xch,
uint32_t domid,
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|