]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
libxc: xc_domain_memory_mapping, handle cacheability
authorStefano Stabellini <sstabellini@kernel.org>
Tue, 26 Feb 2019 23:06:52 +0000 (15:06 -0800)
committerStefano Stabellini <sstabellini@kernel.org>
Tue, 26 Feb 2019 23:06:52 +0000 (15:06 -0800)
Add an additional parameter to xc_domain_memory_mapping to pass
cacheability information. The same parameter values are the same for the
XEN_DOMCTL_memory_mapping hypercall (0 is device memory, 1 is normal
memory). Pass CACHEABILITY_DEVMEM by default -- no changes in behavior.

Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
CC: ian.jackson@eu.citrix.com
CC: wei.liu2@citrix.com
tools/libxc/include/xenctrl.h
tools/libxc/xc_domain.c
tools/libxl/libxl_create.c

index 97ae965be7f7931602962945866d2a013d30a0cc..3b89b055704c6cd1e9eac643826ea80e4923fff3 100644 (file)
@@ -1719,7 +1719,8 @@ 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 add_mapping,
+                             uint32_t cache_policy);
 
 int xc_domain_ioport_mapping(xc_interface *xch,
                              uint32_t domid,
index 05d771f2ceef6f2a67938d2f80c9c335068e6279..f22d176d01fb310588f8d6732b0ac0782e9be104 100644 (file)
@@ -2048,7 +2048,8 @@ int xc_domain_memory_mapping(
     unsigned long first_gfn,
     unsigned long first_mfn,
     unsigned long nr_mfns,
-    uint32_t add_mapping)
+    uint32_t add_mapping,
+    uint32_t cache_policy)
 {
     DECLARE_DOMCTL;
     xc_dominfo_t info;
@@ -2070,6 +2071,7 @@ int xc_domain_memory_mapping(
     domctl.cmd = XEN_DOMCTL_memory_mapping;
     domctl.domain = domid;
     domctl.u.memory_mapping.add_mapping = add_mapping;
+    domctl.u.memory_mapping.cache_policy = cache_policy;
     max_batch_sz = nr_mfns;
     do
     {
@@ -2106,7 +2108,7 @@ int xc_domain_memory_mapping(
      */
     if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
         xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
-                                 DPCI_REMOVE_MAPPING);
+                                 DPCI_REMOVE_MAPPING, CACHEABILITY_DEVMEM);
 
     /* We might get E2BIG so many times that we never advance. */
     if ( !done && !ret )
index fa573344bcba2ea26b2f9e6fcff3455d0fc424c0..9a9b953041951b6936645c2be7522137ea3b7a72 100644 (file)
@@ -1348,7 +1348,7 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
         }
         ret = xc_domain_memory_mapping(CTX->xch, domid,
                                        io->gfn, io->start,
-                                       io->number, 1);
+                                       io->number, 1, CACHEABILITY_DEVMEM);
         if (ret < 0) {
             LOGED(ERROR, domid,
                   "failed to map to domain iomem range %"PRIx64"-%"PRIx64