diff options
-rw-r--r-- | arch/x86/xen/mmu.c | 15 | ||||
-rw-r--r-- | drivers/xen/privcmd.c | 5 | ||||
-rw-r--r-- | include/xen/xen-ops.h | 5 |
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, | |||
2479 | int xen_remap_domain_mfn_range(struct vm_area_struct *vma, | 2479 | int 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 | } |
2525 | EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range); | 2527 | EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range); |
2528 | |||
2529 | /* Returns: 0 success */ | ||
2530 | int 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 | } | ||
2538 | EXPORT_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; | |||
27 | int xen_remap_domain_mfn_range(struct vm_area_struct *vma, | 27 | int 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); | ||
32 | int 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 */ |