]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
xen/libxc: don't change xc_domain_memory_mapping
authorStefano Stabellini <sstabellini@xilinx.com>
Fri, 1 Mar 2019 17:28:28 +0000 (09:28 -0800)
committerStefano Stabellini <sstabellini@kernel.org>
Wed, 4 Dec 2019 23:58:10 +0000 (15:58 -0800)
Although libxc doesn't promise compatibility, xc_domain_memory_mapping
has been used by QEMU for years. Instead of changing the signature of
the function, introduce a new xc_domain_memory_mapping_cache which takes
the additional cacheability parameter. Leave the original
xc_domain_memory_mapping unmodified.

Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
tools/libxc/include/xenctrl.h
tools/libxc/xc_domain.c
tools/libxl/libxl_create.c

index db6f43a6e5f1d019ae86516aab80a022810db44e..fbc27f9a8f30b1caa374ad89a4380665bfd34ca5 100644 (file)
@@ -1719,8 +1719,15 @@ int xc_domain_memory_mapping(xc_interface *xch,
                              unsigned long first_gfn,
                              unsigned long first_mfn,
                              unsigned long nr_mfns,
-                             uint32_t add_mapping,
-                             uint32_t cache_policy);
+                             uint32_t add_mapping);
+
+int xc_domain_memory_mapping_cache(xc_interface *xch,
+                                   uint32_t domid,
+                                   unsigned long first_gfn,
+                                   unsigned long first_mfn,
+                                   unsigned long nr_mfns,
+                                   uint32_t add_mapping,
+                                   uint32_t cache_policy);
 
 int xc_domain_ioport_mapping(xc_interface *xch,
                              uint32_t domid,
index 586f0d5bf0951ac6ae4c1cd63c466bbe8dd0b20c..c0918de3b5a7b800e484b010c001a58a87a9f7ba 100644 (file)
@@ -2043,6 +2043,23 @@ failed:
 }
 
 int xc_domain_memory_mapping(
+    xc_interface *xch,
+    uint32_t domid,
+    unsigned long first_gfn,
+    unsigned long first_mfn,
+    unsigned long nr_mfns,
+    uint32_t add_mapping)
+{
+    return xc_domain_memory_mapping_cache(xch,
+                                          domid,
+                                          first_gfn,
+                                          first_mfn,
+                                          nr_mfns,
+                                          add_mapping,
+                                          CACHEABILITY_DEVMEM);
+}
+
+int xc_domain_memory_mapping_cache(
     xc_interface *xch,
     uint32_t domid,
     unsigned long first_gfn,
@@ -2107,8 +2124,9 @@ int xc_domain_memory_mapping(
      * Errors here are ignored.
      */
     if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
-        xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
-                                 DPCI_REMOVE_MAPPING, CACHEABILITY_DEVMEM);
+        xc_domain_memory_mapping_cache(xch, domid, first_gfn, first_mfn,
+                                       nr_mfns, DPCI_REMOVE_MAPPING,
+                                       CACHEABILITY_DEVMEM);
 
     /* We might get E2BIG so many times that we never advance. */
     if ( !done && !ret )
index ab9a8cd219c5abf6f2404e4655a4114ba2459b9f..455314a1d8ae08acd5953197acf2decd09e18e90 100644 (file)
@@ -1534,11 +1534,11 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
             ret = ERROR_FAIL;
             goto error_out;
         }
-        ret = xc_domain_memory_mapping(CTX->xch, domid,
-                                       io->gfn, io->start,
-                                       io->number, 1,
-                                       libxl__cacheability_to_xc(
-                                           io->cache_policy));
+        ret = xc_domain_memory_mapping_cache(CTX->xch, domid,
+                                             io->gfn, io->start,
+                                             io->number, 1,
+                                             libxl__cacheability_to_xc(
+                                                 io->cache_policy));
         if (ret < 0) {
             LOGED(ERROR, domid,
                   "failed to map to domain iomem range %"PRIx64"-%"PRIx64