[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] libxc: wrappers for XENMEM {increase, decrease}_reservation and populate_physmap



# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1287417282 -3600
# Node ID 5ec79c06b18a4d26d93faf74f39e8dc8d1d1800a
# Parent  7bf2ba59c737141880fbe8c48c538fae1aaceb33
libxc: wrappers for XENMEM {increase,decrease}_reservation and populate_physmap

Currently the wrappers for these hypercalls swallow partial success
and return failure to the caller.

In order to use these functions more widely instead of open-coding
uses of XENMEM_* and xc_memory_op add variants which return the actual
hypercall result.

Therefore add the following functions:
  xc_domain_increase_reservation
  xc_domain_decrease_reservation
  xc_domain_populate_physmap
and implement the existing semantics using these new functions as
  xc_domain_increase_reservation_exact
  xc_domain_decrease_reservation_exact
  xc_domain_populate_physmap_exact
replacing the existing xc_domain_memory_* functions.

Use these new functions to replace all open coded uses of
XENMEM_increase_reservation, XENMEM_decrease_reservation and
XENMEM_populate_physmap.

Also rename xc_domain_memory_*_pod_target to xc_domain_*_pod_target
for consistency.

Temporarily add a compatibility macro for
xc_domain_memory_populate_physmap to allow time for qemu to catch up.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/libxc/ia64/xc_ia64_hvm_build.c     |    8 -
 tools/libxc/ia64/xc_ia64_linux_restore.c |    6 -
 tools/libxc/xc_dom_ia64.c                |    2 
 tools/libxc/xc_dom_x86.c                 |    4 
 tools/libxc/xc_domain.c                  |  158 ++++++++++++++++++++-----------
 tools/libxc/xc_domain_restore.c          |   14 --
 tools/libxc/xc_hvm_build.c               |   56 ++++------
 tools/libxc/xc_private.c                 |    4 
 tools/libxc/xenctrl.h                    |   88 ++++++++++-------
 tools/libxl/libxl.c                      |    4 
 tools/python/xen/lowlevel/xc/xc.c        |    4 
 11 files changed, 200 insertions(+), 148 deletions(-)

diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/ia64/xc_ia64_hvm_build.c
--- a/tools/libxc/ia64/xc_ia64_hvm_build.c      Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/ia64/xc_ia64_hvm_build.c      Mon Oct 18 16:54:42 2010 +0100
@@ -903,7 +903,7 @@ xc_ia64_setup_shared_info(xc_interface *
  * In this function, we will allocate memory and build P2M/M2P table for VTI
  * guest.  Frist, a pfn list will be initialized discontiguous, normal memory
  * begins with 0, GFW memory and other five pages at their place defined in
- * xen/include/public/arch-ia64.h xc_domain_memory_populate_physmap() called
+ * xen/include/public/arch-ia64.h xc_domain_populate_physmap_exact() called
  * five times, to set parameter 'extent_order' to different value, this is
  * convenient to allocate discontiguous memory with different size.
  */
@@ -966,7 +966,7 @@ setup_guest(xc_interface *xch, uint32_t 
          pfn++)
         pfn_list[i++] = pfn;
 
-    rc = xc_domain_memory_populate_physmap(xch, dom, nr_pages, 0, 0,
+    rc = xc_domain_populate_physmap_exact(xch, dom, nr_pages, 0, 0,
                                            &pfn_list[0]);
     if (rc != 0) {
         PERROR("Could not allocate normal memory for Vti guest.");
@@ -979,7 +979,7 @@ setup_guest(xc_interface *xch, uint32_t 
     for (i = 0; i < GFW_PAGES; i++) 
         pfn_list[i] = (GFW_START >> PAGE_SHIFT) + i;
 
-    rc = xc_domain_memory_populate_physmap(xch, dom, GFW_PAGES,
+    rc = xc_domain_populate_physmap_exact(xch, dom, GFW_PAGES,
                                            0, 0, &pfn_list[0]);
     if (rc != 0) {
         PERROR("Could not allocate GFW memory for Vti guest.");
@@ -995,7 +995,7 @@ setup_guest(xc_interface *xch, uint32_t 
     pfn_list[nr_special_pages] = memmap_info_pfn;
     nr_special_pages++;
 
-    rc = xc_domain_memory_populate_physmap(xch, dom, nr_special_pages,
+    rc = xc_domain_populate_physmap_exact(xch, dom, nr_special_pages,
                                            0, 0, &pfn_list[0]);
     if (rc != 0) {
         PERROR("Could not allocate IO page or store page or buffer io page.");
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/ia64/xc_ia64_linux_restore.c
--- a/tools/libxc/ia64/xc_ia64_linux_restore.c  Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/ia64/xc_ia64_linux_restore.c  Mon Oct 18 16:54:42 2010 +0100
@@ -49,7 +49,7 @@ populate_page_if_necessary(xc_interface 
     if (xc_ia64_p2m_present(p2m_table, gmfn))
         return 0;
 
-    return xc_domain_memory_populate_physmap(xch, dom, 1, 0, 0, &gmfn);
+    return xc_domain_populate_physmap_exact(xch, dom, 1, 0, 0, &gmfn);
 }
 
 static int
@@ -112,7 +112,7 @@ xc_ia64_recv_unallocated_list(xc_interfa
         }
     }
     if (nr_frees > 0) {
-        if (xc_domain_memory_decrease_reservation(xch, dom, nr_frees,
+        if (xc_domain_decrease_reservation_exact(xch, dom, nr_frees,
                                                   0, pfntab) < 0) {
             PERROR("Could not decrease reservation");
             goto out;
@@ -546,7 +546,7 @@ xc_ia64_hvm_domain_setup(xc_interface *x
     };
     unsigned long nr_pages = sizeof(pfn_list) / sizeof(pfn_list[0]);
 
-    rc = xc_domain_memory_populate_physmap(xch, dom, nr_pages,
+    rc = xc_domain_populate_physmap_exact(xch, dom, nr_pages,
                                            0, 0, &pfn_list[0]);
     if (rc != 0)
         PERROR("Could not allocate IO page or buffer io page.");
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_dom_ia64.c
--- a/tools/libxc/xc_dom_ia64.c Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_dom_ia64.c Mon Oct 18 16:54:42 2010 +0100
@@ -186,7 +186,7 @@ int arch_setup_meminit(struct xc_dom_ima
         dom->p2m_host[pfn] = start + pfn;
 
     /* allocate guest memory */
-    rc = xc_domain_memory_populate_physmap(dom->xch, dom->guest_domid,
+    rc = xc_domain_populate_physmap_exact(dom->xch, dom->guest_domid,
                                            nbr, 0, 0,
                                            dom->p2m_host);
     return rc;
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c  Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_dom_x86.c  Mon Oct 18 16:54:42 2010 +0100
@@ -733,7 +733,7 @@ int arch_setup_meminit(struct xc_dom_ima
         DOMPRINTF("Populating memory with %d superpages", count);
         for ( pfn = 0; pfn < count; pfn++ )
             extents[pfn] = pfn << SUPERPAGE_PFN_SHIFT;
-        rc = xc_domain_memory_populate_physmap(dom->xch, dom->guest_domid,
+        rc = xc_domain_populate_physmap_exact(dom->xch, dom->guest_domid,
                                                count, SUPERPAGE_PFN_SHIFT, 0,
                                                extents);
         if ( rc )
@@ -762,7 +762,7 @@ int arch_setup_meminit(struct xc_dom_ima
             allocsz = dom->total_pages - i;
             if ( allocsz > 1024*1024 )
                 allocsz = 1024*1024;
-            rc = xc_domain_memory_populate_physmap(
+            rc = xc_domain_populate_physmap_exact(
                 dom->xch, dom->guest_domid, allocsz,
                 0, 0, &dom->p2m_host[i]);
         }
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_domain.c   Mon Oct 18 16:54:42 2010 +0100
@@ -579,12 +579,12 @@ int xc_domain_get_tsc_info(xc_interface 
 }
 
 
-int xc_domain_memory_increase_reservation(xc_interface *xch,
-                                          uint32_t domid,
-                                          unsigned long nr_extents,
-                                          unsigned int extent_order,
-                                          unsigned int mem_flags,
-                                          xen_pfn_t *extent_start)
+int xc_domain_increase_reservation(xc_interface *xch,
+                                   uint32_t domid,
+                                   unsigned long nr_extents,
+                                   unsigned int extent_order,
+                                   unsigned int mem_flags,
+                                   xen_pfn_t *extent_start)
 {
     int err;
     struct xen_memory_reservation reservation = {
@@ -598,6 +598,22 @@ int xc_domain_memory_increase_reservatio
     set_xen_guest_handle(reservation.extent_start, extent_start);
 
     err = xc_memory_op(xch, XENMEM_increase_reservation, &reservation);
+
+    return err;
+}
+
+int xc_domain_increase_reservation_exact(xc_interface *xch,
+                                         uint32_t domid,
+                                         unsigned long nr_extents,
+                                         unsigned int extent_order,
+                                         unsigned int mem_flags,
+                                         xen_pfn_t *extent_start)
+{
+    int err;
+
+    err = xc_domain_increase_reservation(xch, domid, nr_extents,
+                                         extent_order, mem_flags, 
extent_start);
+
     if ( err == nr_extents )
         return 0;
 
@@ -613,11 +629,11 @@ int xc_domain_memory_increase_reservatio
     return err;
 }
 
-int xc_domain_memory_decrease_reservation(xc_interface *xch,
-                                          uint32_t domid,
-                                          unsigned long nr_extents,
-                                          unsigned int extent_order,
-                                          xen_pfn_t *extent_start)
+int xc_domain_decrease_reservation(xc_interface *xch,
+                                   uint32_t domid,
+                                   unsigned long nr_extents,
+                                   unsigned int extent_order,
+                                   xen_pfn_t *extent_start)
 {
     int err;
     struct xen_memory_reservation reservation = {
@@ -637,6 +653,21 @@ int xc_domain_memory_decrease_reservatio
     }
 
     err = xc_memory_op(xch, XENMEM_decrease_reservation, &reservation);
+
+    return err;
+}
+
+int xc_domain_decrease_reservation_exact(xc_interface *xch,
+                                         uint32_t domid,
+                                         unsigned long nr_extents,
+                                         unsigned int extent_order,
+                                         xen_pfn_t *extent_start)
+{
+    int err;
+
+    err = xc_domain_decrease_reservation(xch, domid, nr_extents,
+                                         extent_order, extent_start);
+
     if ( err == nr_extents )
         return 0;
 
@@ -651,12 +682,12 @@ int xc_domain_memory_decrease_reservatio
     return err;
 }
 
-int xc_domain_memory_populate_physmap(xc_interface *xch,
-                                      uint32_t domid,
-                                      unsigned long nr_extents,
-                                      unsigned int extent_order,
-                                      unsigned int mem_flags,
-                                      xen_pfn_t *extent_start)
+int xc_domain_populate_physmap(xc_interface *xch,
+                               uint32_t domid,
+                               unsigned long nr_extents,
+                               unsigned int extent_order,
+                               unsigned int mem_flags,
+                               xen_pfn_t *extent_start)
 {
     int err;
     struct xen_memory_reservation reservation = {
@@ -668,6 +699,21 @@ int xc_domain_memory_populate_physmap(xc
     set_xen_guest_handle(reservation.extent_start, extent_start);
 
     err = xc_memory_op(xch, XENMEM_populate_physmap, &reservation);
+
+    return err;
+}
+
+int xc_domain_populate_physmap_exact(xc_interface *xch,
+                                     uint32_t domid,
+                                     unsigned long nr_extents,
+                                     unsigned int extent_order,
+                                     unsigned int mem_flags,
+                                     xen_pfn_t *extent_start)
+{
+    int err;
+
+    err = xc_domain_populate_physmap(xch, domid, nr_extents,
+                                     extent_order, mem_flags, extent_start);
     if ( err == nr_extents )
         return 0;
 
@@ -682,13 +728,13 @@ int xc_domain_memory_populate_physmap(xc
     return err;
 }
 
-static int xc_domain_memory_pod_target(xc_interface *xch,
-                                       int op,
-                                       uint32_t domid,
-                                       uint64_t target_pages,
-                                       uint64_t *tot_pages,
-                                       uint64_t *pod_cache_pages,
-                                       uint64_t *pod_entries)
+static int xc_domain_pod_target(xc_interface *xch,
+                                int op,
+                                uint32_t domid,
+                                uint64_t target_pages,
+                                uint64_t *tot_pages,
+                                uint64_t *pod_cache_pages,
+                                uint64_t *pod_entries)
 {
     int err;
 
@@ -701,7 +747,7 @@ static int xc_domain_memory_pod_target(x
 
     if ( err < 0 )
     {
-        DPRINTF("Failed %s_memory_target dom %d\n",
+        DPRINTF("Failed %s_pod_target dom %d\n",
                 (op==XENMEM_set_pod_target)?"set":"get",
                 domid);
         errno = -err;
@@ -719,37 +765,37 @@ static int xc_domain_memory_pod_target(x
 
     return err;
 }
-                                       
-
-int xc_domain_memory_set_pod_target(xc_interface *xch,
-                                    uint32_t domid,
-                                    uint64_t target_pages,
-                                    uint64_t *tot_pages,
-                                    uint64_t *pod_cache_pages,
-                                    uint64_t *pod_entries)
-{
-    return xc_domain_memory_pod_target(xch,
-                                       XENMEM_set_pod_target,
-                                       domid,
-                                       target_pages,
-                                       tot_pages,
-                                       pod_cache_pages,
-                                       pod_entries);
-}
-
-int xc_domain_memory_get_pod_target(xc_interface *xch,
-                                    uint32_t domid,
-                                    uint64_t *tot_pages,
-                                    uint64_t *pod_cache_pages,
-                                    uint64_t *pod_entries)
-{
-    return xc_domain_memory_pod_target(xch,
-                                       XENMEM_get_pod_target,
-                                       domid,
-                                       -1,
-                                       tot_pages,
-                                       pod_cache_pages,
-                                       pod_entries);
+
+
+int xc_domain_set_pod_target(xc_interface *xch,
+                             uint32_t domid,
+                             uint64_t target_pages,
+                             uint64_t *tot_pages,
+                             uint64_t *pod_cache_pages,
+                             uint64_t *pod_entries)
+{
+    return xc_domain_pod_target(xch,
+                                XENMEM_set_pod_target,
+                                domid,
+                                target_pages,
+                                tot_pages,
+                                pod_cache_pages,
+                                pod_entries);
+}
+
+int xc_domain_get_pod_target(xc_interface *xch,
+                             uint32_t domid,
+                             uint64_t *tot_pages,
+                             uint64_t *pod_cache_pages,
+                             uint64_t *pod_entries)
+{
+    return xc_domain_pod_target(xch,
+                                XENMEM_get_pod_target,
+                                domid,
+                                -1,
+                                tot_pages,
+                                pod_cache_pages,
+                                pod_entries);
 }
 
 int xc_domain_max_vcpus(xc_interface *xch, uint32_t domid, unsigned int max)
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_domain_restore.c
--- a/tools/libxc/xc_domain_restore.c   Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_domain_restore.c   Mon Oct 18 16:54:42 2010 +0100
@@ -147,7 +147,7 @@ static int uncanonicalize_pagetable(
 
     /* Allocate the requisite number of mfns. */
     if ( nr_mfns &&
-         (xc_domain_memory_populate_physmap(xch, dom, nr_mfns, 0, 0,
+         (xc_domain_populate_physmap_exact(xch, dom, nr_mfns, 0, 0,
                                             ctx->p2m_batch) != 0) )
     { 
         ERROR("Failed to allocate memory for batch.!\n"); 
@@ -888,7 +888,7 @@ static int apply_batch(xc_interface *xch
 
     /* Now allocate a bunch of mfns for this batch */
     if ( nr_mfns &&
-         (xc_domain_memory_populate_physmap(xch, dom, nr_mfns, 0,
+         (xc_domain_populate_physmap_exact(xch, dom, nr_mfns, 0,
                                             0, ctx->p2m_batch) != 0) )
     { 
         ERROR("Failed to allocate memory for batch.!\n"); 
@@ -1529,15 +1529,7 @@ int xc_domain_restore(xc_interface *xch,
 
         if ( nr_frees > 0 )
         {
-            struct xen_memory_reservation reservation = {
-                .nr_extents   = nr_frees,
-                .extent_order = 0,
-                .domid        = dom
-            };
-            set_xen_guest_handle(reservation.extent_start, 
tailbuf.u.pv.pfntab);
-
-            if ( (frc = xc_memory_op(xch, XENMEM_decrease_reservation,
-                                     &reservation)) != nr_frees )
+            if ( (frc = xc_domain_decrease_reservation(xch, dom, nr_frees, 0, 
tailbuf.u.pv.pfntab)) != nr_frees )
             {
                 PERROR("Could not decrease reservation : %d", frc);
                 goto out;
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_hvm_build.c
--- a/tools/libxc/xc_hvm_build.c        Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_hvm_build.c        Mon Oct 18 16:54:42 2010 +0100
@@ -203,7 +203,7 @@ static int setup_guest(xc_interface *xch
      * Under 2MB mode, we allocate pages in batches of no more than 8MB to 
      * ensure that we can be preempted and hence dom0 remains responsive.
      */
-    rc = xc_domain_memory_populate_physmap(
+    rc = xc_domain_populate_physmap_exact(
         xch, dom, 0xa0, 0, 0, &page_array[0x00]);
     cur_pages = 0xc0;
     stat_normal_pages = 0xc0;
@@ -233,20 +233,16 @@ static int setup_guest(xc_interface *xch
                               SUPERPAGE_1GB_NR_PFNS << PAGE_SHIFT) )
         {
             long done;
-            xen_pfn_t sp_extents[count >> SUPERPAGE_1GB_SHIFT];
-            struct xen_memory_reservation sp_req = {
-                .nr_extents   = count >> SUPERPAGE_1GB_SHIFT,
-                .extent_order = SUPERPAGE_1GB_SHIFT,
-                .domid        = dom
-            };
-
-            if ( pod_mode )
-                sp_req.mem_flags = XENMEMF_populate_on_demand;
-
-            set_xen_guest_handle(sp_req.extent_start, sp_extents);
-            for ( i = 0; i < sp_req.nr_extents; i++ )
+            unsigned long nr_extents = count >> SUPERPAGE_1GB_SHIFT;
+            xen_pfn_t sp_extents[nr_extents];
+
+            for ( i = 0; i < nr_extents; i++ )
                 sp_extents[i] = page_array[cur_pages+(i<<SUPERPAGE_1GB_SHIFT)];
-            done = xc_memory_op(xch, XENMEM_populate_physmap, &sp_req);
+
+            done = xc_domain_populate_physmap(xch, dom, nr_extents, 
SUPERPAGE_1GB_SHIFT,
+                                              pod_mode ? 
XENMEMF_populate_on_demand : 0,
+                                              sp_extents);
+
             if ( done > 0 )
             {
                 stat_1gb_pages += done;
@@ -275,20 +271,16 @@ static int setup_guest(xc_interface *xch
             if ( ((count | cur_pages) & (SUPERPAGE_2MB_NR_PFNS - 1)) == 0 )
             {
                 long done;
-                xen_pfn_t sp_extents[count >> SUPERPAGE_2MB_SHIFT];
-                struct xen_memory_reservation sp_req = {
-                    .nr_extents   = count >> SUPERPAGE_2MB_SHIFT,
-                    .extent_order = SUPERPAGE_2MB_SHIFT,
-                    .domid        = dom
-                };
-
-                if ( pod_mode )
-                    sp_req.mem_flags = XENMEMF_populate_on_demand;
-
-                set_xen_guest_handle(sp_req.extent_start, sp_extents);
-                for ( i = 0; i < sp_req.nr_extents; i++ )
+                unsigned long nr_extents = count >> SUPERPAGE_2MB_SHIFT;
+                xen_pfn_t sp_extents[nr_extents];
+
+                for ( i = 0; i < nr_extents; i++ )
                     sp_extents[i] = 
page_array[cur_pages+(i<<SUPERPAGE_2MB_SHIFT)];
-                done = xc_memory_op(xch, XENMEM_populate_physmap, &sp_req);
+
+                done = xc_domain_populate_physmap(xch, dom, nr_extents, 
SUPERPAGE_2MB_SHIFT,
+                                                  pod_mode ? 
XENMEMF_populate_on_demand : 0,
+                                                  sp_extents);
+
                 if ( done > 0 )
                 {
                     stat_2mb_pages += done;
@@ -302,7 +294,7 @@ static int setup_guest(xc_interface *xch
         /* Fall back to 4kB extents. */
         if ( count != 0 )
         {
-            rc = xc_domain_memory_populate_physmap(
+            rc = xc_domain_populate_physmap_exact(
                 xch, dom, count, 0, 0, &page_array[cur_pages]);
             cur_pages += count;
             stat_normal_pages += count;
@@ -313,10 +305,8 @@ static int setup_guest(xc_interface *xch
      * adjust the PoD cache size so that domain tot_pages will be
      * target_pages - 0x20 after this call. */
     if ( pod_mode )
-        rc = xc_domain_memory_set_pod_target(xch,
-                                             dom,
-                                             target_pages - 0x20,
-                                             NULL, NULL, NULL);
+        rc = xc_domain_set_pod_target(xch, dom, target_pages - 0x20,
+                                      NULL, NULL, NULL);
 
     if ( rc != 0 )
     {
@@ -344,7 +334,7 @@ static int setup_guest(xc_interface *xch
     for ( i = 0; i < NR_SPECIAL_PAGES; i++ )
     {
         xen_pfn_t pfn = special_pfn(i);
-        rc = xc_domain_memory_populate_physmap(xch, dom, 1, 0, 0, &pfn);
+        rc = xc_domain_populate_physmap_exact(xch, dom, 1, 0, 0, &pfn);
         if ( rc != 0 )
         {
             PERROR("Could not allocate %d'th special page.", i);
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xc_private.c
--- a/tools/libxc/xc_private.c  Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xc_private.c  Mon Oct 18 16:54:42 2010 +0100
@@ -675,14 +675,14 @@ unsigned long xc_make_page_below_4G(
     xen_pfn_t old_mfn = mfn;
     xen_pfn_t new_mfn;
 
-    if ( xc_domain_memory_decrease_reservation(
+    if ( xc_domain_decrease_reservation_exact(
         xch, domid, 1, 0, &old_mfn) != 0 )
     {
         DPRINTF("xc_make_page_below_4G decrease failed. mfn=%lx\n",mfn);
         return 0;
     }
 
-    if ( xc_domain_memory_increase_reservation(
+    if ( xc_domain_increase_reservation_exact(
         xch, domid, 1, 0, XENMEMF_address_bits(32), &new_mfn) != 0 )
     {
         DPRINTF("xc_make_page_below_4G increase failed. mfn=%lx\n",mfn);
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxc/xenctrl.h     Mon Oct 18 16:54:42 2010 +0100
@@ -785,38 +785,62 @@ int xc_domain_get_tsc_info(xc_interface 
 
 int xc_domain_disable_migrate(xc_interface *xch, uint32_t domid);
 
-int xc_domain_memory_increase_reservation(xc_interface *xch,
-                                          uint32_t domid,
-                                          unsigned long nr_extents,
-                                          unsigned int extent_order,
-                                          unsigned int mem_flags,
-                                          xen_pfn_t *extent_start);
-
-int xc_domain_memory_decrease_reservation(xc_interface *xch,
-                                          uint32_t domid,
-                                          unsigned long nr_extents,
-                                          unsigned int extent_order,
-                                          xen_pfn_t *extent_start);
-
-int xc_domain_memory_populate_physmap(xc_interface *xch,
-                                      uint32_t domid,
-                                      unsigned long nr_extents,
-                                      unsigned int extent_order,
-                                      unsigned int mem_flags,
-                                      xen_pfn_t *extent_start);
-
-int xc_domain_memory_set_pod_target(xc_interface *xch,
-                                    uint32_t domid,
-                                    uint64_t target_pages,
-                                    uint64_t *tot_pages,
-                                    uint64_t *pod_cache_pages,
-                                    uint64_t *pod_entries);
-
-int xc_domain_memory_get_pod_target(xc_interface *xch,
-                                    uint32_t domid,
-                                    uint64_t *tot_pages,
-                                    uint64_t *pod_cache_pages,
-                                    uint64_t *pod_entries);
+int xc_domain_increase_reservation(xc_interface *xch,
+                                   uint32_t domid,
+                                   unsigned long nr_extents,
+                                   unsigned int extent_order,
+                                   unsigned int mem_flags,
+                                   xen_pfn_t *extent_start);
+
+int xc_domain_increase_reservation_exact(xc_interface *xch,
+                                         uint32_t domid,
+                                         unsigned long nr_extents,
+                                         unsigned int extent_order,
+                                         unsigned int mem_flags,
+                                         xen_pfn_t *extent_start);
+
+int xc_domain_decrease_reservation(xc_interface *xch,
+                                   uint32_t domid,
+                                   unsigned long nr_extents,
+                                   unsigned int extent_order,
+                                   xen_pfn_t *extent_start);
+
+int xc_domain_decrease_reservation_exact(xc_interface *xch,
+                                         uint32_t domid,
+                                         unsigned long nr_extents,
+                                         unsigned int extent_order,
+                                         xen_pfn_t *extent_start);
+
+int xc_domain_populate_physmap(xc_interface *xch,
+                               uint32_t domid,
+                               unsigned long nr_extents,
+                               unsigned int extent_order,
+                               unsigned int mem_flags,
+                               xen_pfn_t *extent_start);
+
+int xc_domain_populate_physmap_exact(xc_interface *xch,
+                                     uint32_t domid,
+                                     unsigned long nr_extents,
+                                     unsigned int extent_order,
+                                     unsigned int mem_flags,
+                                     xen_pfn_t *extent_start);
+
+/* Temporary for compatibility */
+#define xc_domain_memory_populate_physmap(x, d, nr, eo, mf, es) \
+    xc_domain_populate_physmap_exact(x, d, nr, eo, mf, es)
+
+int xc_domain_set_pod_target(xc_interface *xch,
+                             uint32_t domid,
+                             uint64_t target_pages,
+                             uint64_t *tot_pages,
+                             uint64_t *pod_cache_pages,
+                             uint64_t *pod_entries);
+
+int xc_domain_get_pod_target(xc_interface *xch,
+                             uint32_t domid,
+                             uint64_t *tot_pages,
+                             uint64_t *pod_cache_pages,
+                             uint64_t *pod_entries);
 
 int xc_domain_ioport_permission(xc_interface *xch,
                                 uint32_t domid,
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/libxl/libxl.c
--- a/tools/libxl/libxl.c       Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/libxl/libxl.c       Mon Oct 18 16:54:42 2010 +0100
@@ -2948,11 +2948,11 @@ retry_transaction:
     }
 
     new_target_memkb -= videoram;
-    rc = xc_domain_memory_set_pod_target(ctx->xch, domid,
+    rc = xc_domain_set_pod_target(ctx->xch, domid,
             new_target_memkb / 4, NULL, NULL, NULL);
     if (rc != 0) {
         LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
-                "xc_domain_memory_set_pod_target domid=%d, memkb=%d "
+                "xc_domain_set_pod_target domid=%d, memkb=%d "
                 "failed rc=%d\n", domid, new_target_memkb / 4,
                 rc);
         abort = 1;
diff -r 7bf2ba59c737 -r 5ec79c06b18a tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Mon Oct 18 16:53:04 2010 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Mon Oct 18 16:54:42 2010 +0100
@@ -1635,8 +1635,8 @@ static PyObject *pyxc_domain_set_target_
 
     mem_pages = mem_kb / 4; 
 
-    if (xc_domain_memory_set_pod_target(self->xc_handle, dom, mem_pages,
-                                        NULL, NULL, NULL) != 0)
+    if (xc_domain_set_pod_target(self->xc_handle, dom, mem_pages,
+                                NULL, NULL, NULL) != 0)
         return pyxc_error_to_exception(self->xc_handle);
     
     Py_INCREF(zero);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.