aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_misc.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-07-10 15:30:39 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-07-10 15:30:39 +0100
commit51cf89ed5da0f2e865d976b8baee54ffcfdd25a6 (patch)
tree5aff263c47d685d439d8633218d5adf3f5a1e117 /tools/libxc/xc_misc.c
parent4d8aa29d6566ac33cb72a496fb073cdd3a52db25 (diff)
downloadxen-51cf89ed5da0f2e865d976b8baee54ffcfdd25a6.tar.gz
xen-51cf89ed5da0f2e865d976b8baee54ffcfdd25a6.tar.bz2
xen-51cf89ed5da0f2e865d976b8baee54ffcfdd25a6.zip
x86 hvm: New hvm_op "set_mem_type" which allows marking ram page
ranges as ro, rw, or mmio_dm. Signed-off-by: Trolle Selander <trolle.selander@eu.citrix.com>
Diffstat (limited to 'tools/libxc/xc_misc.c')
-rw-r--r--tools/libxc/xc_misc.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c
index 0fe5272eab..7fa1607896 100644
--- a/tools/libxc/xc_misc.c
+++ b/tools/libxc/xc_misc.c
@@ -295,6 +295,36 @@ int xc_hvm_modified_memory(
return rc;
}
+int xc_hvm_set_mem_type(
+ int xc_handle, domid_t dom, hvmmem_type_t mem_type, uint64_t first_pfn, uint64_t nr)
+{
+ DECLARE_HYPERCALL;
+ struct xen_hvm_set_mem_type arg;
+ int rc;
+
+ hypercall.op = __HYPERVISOR_hvm_op;
+ hypercall.arg[0] = HVMOP_set_mem_type;
+ hypercall.arg[1] = (unsigned long)&arg;
+
+ arg.domid = dom;
+ arg.hvmmem_type = mem_type;
+ arg.first_pfn = first_pfn;
+ arg.nr = nr;
+
+ if ( (rc = lock_pages(&arg, sizeof(arg))) != 0 )
+ {
+ PERROR("Could not lock memory");
+ return rc;
+ }
+
+ rc = do_xen_hypercall(xc_handle, &hypercall);
+
+ unlock_pages(&arg, sizeof(arg));
+
+ return rc;
+}
+
+
void *xc_map_foreign_pages(int xc_handle, uint32_t dom, int prot,
const xen_pfn_t *arr, int num)
{