aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/xen/mmu.c15
-rw-r--r--drivers/xen/privcmd.c5
-rw-r--r--include/xen/xen-ops.h5
3 files changed, 21 insertions, 4 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 6226c99729b9..0f6386a5b437 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -2479,7 +2479,9 @@ static int remap_area_mfn_pte_fn(pte_t *ptep, pgtable_t token,
2479int xen_remap_domain_mfn_range(struct vm_area_struct *vma, 2479int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
2480 unsigned long addr, 2480 unsigned long addr,
2481 unsigned long mfn, int nr, 2481 unsigned long mfn, int nr,
2482 pgprot_t prot, unsigned domid) 2482 pgprot_t prot, unsigned domid,
2483 struct page **pages)
2484
2483{ 2485{
2484 struct remap_data rmd; 2486 struct remap_data rmd;
2485 struct mmu_update mmu_update[REMAP_BATCH_SIZE]; 2487 struct mmu_update mmu_update[REMAP_BATCH_SIZE];
@@ -2523,3 +2525,14 @@ out:
2523 return err; 2525 return err;
2524} 2526}
2525EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range); 2527EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range);
2528
2529/* Returns: 0 success */
2530int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
2531 int numpgs, struct page **pages)
2532{
2533 if (!pages || !xen_feature(XENFEAT_auto_translated_physmap))
2534 return 0;
2535
2536 return -EINVAL;
2537}
2538EXPORT_SYMBOL_GPL(xen_unmap_domain_mfn_range);
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 8adb9cc267f9..b612267a8cb6 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -178,7 +178,7 @@ static int mmap_mfn_range(void *data, void *state)
178 msg->va & PAGE_MASK, 178 msg->va & PAGE_MASK,
179 msg->mfn, msg->npages, 179 msg->mfn, msg->npages,
180 vma->vm_page_prot, 180 vma->vm_page_prot,
181 st->domain); 181 st->domain, NULL);
182 if (rc < 0) 182 if (rc < 0)
183 return rc; 183 return rc;
184 184
@@ -267,7 +267,8 @@ static int mmap_batch_fn(void *data, void *state)
267 int ret; 267 int ret;
268 268
269 ret = xen_remap_domain_mfn_range(st->vma, st->va & PAGE_MASK, *mfnp, 1, 269 ret = xen_remap_domain_mfn_range(st->vma, st->va & PAGE_MASK, *mfnp, 1,
270 st->vma->vm_page_prot, st->domain); 270 st->vma->vm_page_prot, st->domain,
271 NULL);
271 272
272 /* Store error code for second pass. */ 273 /* Store error code for second pass. */
273 *(st->err++) = ret; 274 *(st->err++) = ret;
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h
index 6a198e46ab6e..990b43e441e6 100644
--- a/include/xen/xen-ops.h
+++ b/include/xen/xen-ops.h
@@ -27,6 +27,9 @@ struct vm_area_struct;
27int xen_remap_domain_mfn_range(struct vm_area_struct *vma, 27int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
28 unsigned long addr, 28 unsigned long addr,
29 unsigned long mfn, int nr, 29 unsigned long mfn, int nr,
30 pgprot_t prot, unsigned domid); 30 pgprot_t prot, unsigned domid,
31 struct page **pages);
32int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
33 int numpgs, struct page **pages);
31 34
32#endif /* INCLUDE_XEN_OPS_H */ 35#endif /* INCLUDE_XEN_OPS_H */