diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-07-10 15:30:39 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-07-10 15:30:39 +0100 |
commit | 51cf89ed5da0f2e865d976b8baee54ffcfdd25a6 (patch) | |
tree | 5aff263c47d685d439d8633218d5adf3f5a1e117 /tools/libxc/xc_misc.c | |
parent | 4d8aa29d6566ac33cb72a496fb073cdd3a52db25 (diff) | |
download | xen-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.c | 30 |
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) { |