]> 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:00:25 +0000 (15:00 -0800)
committerStefano Stabellini <sstabellini@xilinx.com>
Wed, 18 Dec 2019 19:16:19 +0000 (11:16 -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 f4431687b3da9cf573d659450c8ff70ca6ecabce..db6f43a6e5f1d019ae86516aab80a022810db44e 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 e544218d2e6a09093db2ac1782592fb8d56f9fc0..586f0d5bf0951ac6ae4c1cd63c466bbe8dd0b20c 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 01a299099855aa19dc51d4d1ad5c2df9a888d96d..aaf0b8b7d2397929dfc956e8d110ee46148313b8 100644 (file)
@@ -1528,7 +1528,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