Skip to content

Commit

Permalink
xen: add pages parameter to xen_remap_domain_mfn_range
Browse files Browse the repository at this point in the history
Also introduce xen_unmap_domain_mfn_range. These are the parts of
Mukesh's "xen/pvh: Implement MMU changes for PVH" which are also
needed as a baseline for ARM privcmd support.

The original patch was:

Signed-off-by: Mukesh Rathor <mukesh.rathor@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

This derivative is also:

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
  • Loading branch information
Ian Campbell committed Nov 29, 2012
1 parent b3e40b7 commit 9a032e3
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
15 changes: 14 additions & 1 deletion arch/x86/xen/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -2479,7 +2479,9 @@ static int remap_area_mfn_pte_fn(pte_t *ptep, pgtable_t token,
int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
unsigned long addr,
unsigned long mfn, int nr,
pgprot_t prot, unsigned domid)
pgprot_t prot, unsigned domid,
struct page **pages)

{
struct remap_data rmd;
struct mmu_update mmu_update[REMAP_BATCH_SIZE];
Expand Down Expand Up @@ -2523,3 +2525,14 @@ int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
return err;
}
EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range);

/* Returns: 0 success */
int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
int numpgs, struct page **pages)
{
if (!pages || !xen_feature(XENFEAT_auto_translated_physmap))
return 0;

return -EINVAL;
}
EXPORT_SYMBOL_GPL(xen_unmap_domain_mfn_range);
5 changes: 3 additions & 2 deletions drivers/xen/privcmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ static int mmap_mfn_range(void *data, void *state)
msg->va & PAGE_MASK,
msg->mfn, msg->npages,
vma->vm_page_prot,
st->domain);
st->domain, NULL);
if (rc < 0)
return rc;

Expand Down Expand Up @@ -267,7 +267,8 @@ static int mmap_batch_fn(void *data, void *state)
int ret;

ret = xen_remap_domain_mfn_range(st->vma, st->va & PAGE_MASK, *mfnp, 1,
st->vma->vm_page_prot, st->domain);
st->vma->vm_page_prot, st->domain,
NULL);

/* Store error code for second pass. */
*(st->err++) = ret;
Expand Down
5 changes: 4 additions & 1 deletion include/xen/xen-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ struct vm_area_struct;
int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
unsigned long addr,
unsigned long mfn, int nr,
pgprot_t prot, unsigned domid);
pgprot_t prot, unsigned domid,
struct page **pages);
int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
int numpgs, struct page **pages);

#endif /* INCLUDE_XEN_OPS_H */

0 comments on commit 9a032e3

Please sign in to comment.