xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xen: return a per-mapping error from XENMEM_add_to_physmap_range.
@ 2013-01-04 14:03 Ian Campbell
  2013-01-04 14:04 ` Ian Campbell
  2013-01-16 14:28 ` Ian Campbell
  0 siblings, 2 replies; 8+ messages in thread
From: Ian Campbell @ 2013-01-04 14:03 UTC (permalink / raw)
  To: xen-devel
  Cc: keir, Ian Campbell, Konrad Rzeszutek Wilk, Mats Petersson, tim,
	stefano.stabellini, Jan Beulich

Since ARM and PVH dom0 kernel use this to map foreign domain pages
they could in the future hit paged out or shared pages etc and
therefore need to propagate which frames are -ENOENT and which failed
for some other reason.

We have not yet released a version of Xen with this particular
hypercall subop so we can change the interface without worrying about
compatibility (I think/hope).

This would be used by the privcmd driver, in particular it relates to
Mats' patch "improve performance of MMAPBATCH_V2."

NB I have only implemented the ARM side since the PVH side isn't in
tree yet.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Mats Petersson <mats.petersson@citrix.com>
Cc: Mukesh Rathor <mukesh.rathor@oracle.com>
Cc: Jan Beulich <JBeulich@suse.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: tim@xen.org
Cc: stefano.stabellini@citrix.com
Cc: keir@xen.org
---
 xen/arch/arm/mm.c           |    4 ++++
 xen/include/public/memory.h |    8 +++++++-
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index d97b3ea..945e7ac 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -612,6 +612,10 @@ static int xenmem_add_to_physmap_range(struct domain *d,
                                        xatpr->foreign_domid,
                                        idx, gpfn);
 
+        rc = copy_to_guest_offset(xatpr->errs, xatpr->size-1, &rc, 1);
+        if ( rc < 0 )
+            goto out;
+
         xatpr->size--;
 
         /* Check for continuation if it's not the last interation */
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 3ee2902..62acabd 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -236,6 +236,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_add_to_physmap_t);
 /* A batched version of add_to_physmap. */
 #define XENMEM_add_to_physmap_range 23
 struct xen_add_to_physmap_range {
+    /* IN */
     /* Which domain to change the mapping for. */
     domid_t domid;
     uint16_t space; /* => enum phys_map_space */
@@ -247,8 +248,13 @@ struct xen_add_to_physmap_range {
     /* Indexes into space being mapped. */
     XEN_GUEST_HANDLE(xen_ulong_t) idxs;
 
-    /* GPFN in domdwhere the source mapping page should appear. */
+    /* GPFN in domid where the source mapping page should appear. */
     XEN_GUEST_HANDLE(xen_pfn_t) gpfns;
+
+    /* OUT */
+
+    /* Per index error code. */
+    XEN_GUEST_HANDLE(int) errs;
 };
 typedef struct xen_add_to_physmap_range xen_add_to_physmap_range_t;
 DEFINE_XEN_GUEST_HANDLE(xen_add_to_physmap_range_t);
-- 
1.7.9.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-01-17 16:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-04 14:03 [PATCH] xen: return a per-mapping error from XENMEM_add_to_physmap_range Ian Campbell
2013-01-04 14:04 ` Ian Campbell
2013-01-16 14:28 ` Ian Campbell
2013-01-16 14:39   ` Stefano Stabellini
2013-01-16 15:03     ` Keir Fraser
2013-01-16 15:07   ` Mats Petersson
2013-01-16 17:22   ` Konrad Rzeszutek Wilk
2013-01-17 16:49     ` Ian Campbell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).