diff mbox

[v2,4/5] tools: libxendevicemodel: Provide xendevicemodel_add_to_physmap

Message ID 20171023090509.4338-5-ross.lagerwall@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ross Lagerwall Oct. 23, 2017, 9:05 a.m. UTC
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---

Changed in v2:
* Make it operate on a range.

 tools/libs/devicemodel/Makefile                 |  2 +-
 tools/libs/devicemodel/core.c                   | 21 +++++++++++++++++++++
 tools/libs/devicemodel/include/xendevicemodel.h | 15 +++++++++++++++
 tools/libs/devicemodel/libxendevicemodel.map    |  5 +++++
 4 files changed, 42 insertions(+), 1 deletion(-)

Comments

Ian Jackson Oct. 23, 2017, 11:21 a.m. UTC | #1
Ross Lagerwall writes ("[PATCH v2 4/5] tools: libxendevicemodel: Provide xendevicemodel_add_to_physmap"):
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>

Assuming the hypervisor parts go in:

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Paul Durrant Oct. 23, 2017, 12:09 p.m. UTC | #2
> -----Original Message-----

> From: Xen-devel [mailto:xen-devel-bounces@lists.xen.org] On Behalf Of

> Ross Lagerwall

> Sent: 23 October 2017 10:05

> To: xen-devel@lists.xen.org

> Cc: Ross Lagerwall <ross.lagerwall@citrix.com>; Ian Jackson

> <Ian.Jackson@citrix.com>; Wei Liu <wei.liu2@citrix.com>

> Subject: [Xen-devel] [PATCH v2 4/5] tools: libxendevicemodel: Provide

> xendevicemodel_add_to_physmap

> 

> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>


Reviewed-by: Paul Durrant <paul.durrant@citrix.com>


> ---

> 

> Changed in v2:

> * Make it operate on a range.

> 

>  tools/libs/devicemodel/Makefile                 |  2 +-

>  tools/libs/devicemodel/core.c                   | 21 +++++++++++++++++++++

>  tools/libs/devicemodel/include/xendevicemodel.h | 15 +++++++++++++++

>  tools/libs/devicemodel/libxendevicemodel.map    |  5 +++++

>  4 files changed, 42 insertions(+), 1 deletion(-)

> 

> diff --git a/tools/libs/devicemodel/Makefile

> b/tools/libs/devicemodel/Makefile

> index 342371a..5b2df7a 100644

> --- a/tools/libs/devicemodel/Makefile

> +++ b/tools/libs/devicemodel/Makefile

> @@ -2,7 +2,7 @@ XEN_ROOT = $(CURDIR)/../../..

>  include $(XEN_ROOT)/tools/Rules.mk

> 

>  MAJOR    = 1

> -MINOR    = 1

> +MINOR    = 2

>  SHLIB_LDFLAGS += -Wl,--version-script=libxendevicemodel.map

> 

>  CFLAGS   += -Werror -Wmissing-prototypes

> diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c

> index b66d4f9..07953d3 100644

> --- a/tools/libs/devicemodel/core.c

> +++ b/tools/libs/devicemodel/core.c

> @@ -564,6 +564,27 @@ int xendevicemodel_shutdown(

>      return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));

>  }

> 

> +int xendevicemodel_add_to_physmap(

> +    xendevicemodel_handle *dmod, domid_t domid, uint16_t size, uint64_t

> idx,

> +    uint64_t gpfn)

> +{

> +    struct xen_dm_op op;

> +    struct xen_dm_op_add_to_physmap *data;

> +

> +    memset(&op, 0, sizeof(op));

> +

> +    op.op = XEN_DMOP_add_to_physmap;

> +    data = &op.u.add_to_physmap;

> +

> +    data->size = size;

> +    data->pad0 = 0;

> +    data->pad1 = 0;

> +    data->idx = idx;

> +    data->gpfn = gpfn;

> +

> +    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));

> +}

> +

>  int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t

> domid)

>  {

>      return osdep_xendevicemodel_restrict(dmod, domid);

> diff --git a/tools/libs/devicemodel/include/xendevicemodel.h

> b/tools/libs/devicemodel/include/xendevicemodel.h

> index dda0bc7..6967e58 100644

> --- a/tools/libs/devicemodel/include/xendevicemodel.h

> +++ b/tools/libs/devicemodel/include/xendevicemodel.h

> @@ -326,6 +326,21 @@ int xendevicemodel_shutdown(

>      xendevicemodel_handle *dmod, domid_t domid, unsigned int reason);

> 

>  /**

> + * Sets the GPFNs at which a page range appears in the domain's

> + * pseudophysical address space.

> + *

> + * @parm dmod a handle to an open devicemodel interface.

> + * @parm domid the domain id to be serviced

> + * @parm size Number of GMFNs to process

> + * @parm idx Index into GMFN space

> + * @parm gpfn Starting GPFN where the GMFNs should appear

> + * @return 0 on success, -1 on failure.

> + */

> +int xendevicemodel_add_to_physmap(

> +    xendevicemodel_handle *dmod, domid_t domid, uint16_t size, uint64_t

> idx,

> +    uint64_t gpfn);

> +

> +/**

>   * This function restricts the use of this handle to the specified

>   * domain.

>   *

> diff --git a/tools/libs/devicemodel/libxendevicemodel.map

> b/tools/libs/devicemodel/libxendevicemodel.map

> index cefd32b..4a19ecb 100644

> --- a/tools/libs/devicemodel/libxendevicemodel.map

> +++ b/tools/libs/devicemodel/libxendevicemodel.map

> @@ -27,3 +27,8 @@ VERS_1.1 {

>  	global:

>  		xendevicemodel_shutdown;

>  } VERS_1.0;

> +

> +VERS_1.2 {

> +	global:

> +		xendevicemodel_add_to_physmap;

> +} VERS_1.1;

> --

> 2.9.5

> 

> 

> _______________________________________________

> Xen-devel mailing list

> Xen-devel@lists.xen.org

> https://lists.xen.org/xen-devel
diff mbox

Patch

diff --git a/tools/libs/devicemodel/Makefile b/tools/libs/devicemodel/Makefile
index 342371a..5b2df7a 100644
--- a/tools/libs/devicemodel/Makefile
+++ b/tools/libs/devicemodel/Makefile
@@ -2,7 +2,7 @@  XEN_ROOT = $(CURDIR)/../../..
 include $(XEN_ROOT)/tools/Rules.mk
 
 MAJOR    = 1
-MINOR    = 1
+MINOR    = 2
 SHLIB_LDFLAGS += -Wl,--version-script=libxendevicemodel.map
 
 CFLAGS   += -Werror -Wmissing-prototypes
diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
index b66d4f9..07953d3 100644
--- a/tools/libs/devicemodel/core.c
+++ b/tools/libs/devicemodel/core.c
@@ -564,6 +564,27 @@  int xendevicemodel_shutdown(
     return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
 }
 
+int xendevicemodel_add_to_physmap(
+    xendevicemodel_handle *dmod, domid_t domid, uint16_t size, uint64_t idx,
+    uint64_t gpfn)
+{
+    struct xen_dm_op op;
+    struct xen_dm_op_add_to_physmap *data;
+
+    memset(&op, 0, sizeof(op));
+
+    op.op = XEN_DMOP_add_to_physmap;
+    data = &op.u.add_to_physmap;
+
+    data->size = size;
+    data->pad0 = 0;
+    data->pad1 = 0;
+    data->idx = idx;
+    data->gpfn = gpfn;
+
+    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
+}
+
 int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid)
 {
     return osdep_xendevicemodel_restrict(dmod, domid);
diff --git a/tools/libs/devicemodel/include/xendevicemodel.h b/tools/libs/devicemodel/include/xendevicemodel.h
index dda0bc7..6967e58 100644
--- a/tools/libs/devicemodel/include/xendevicemodel.h
+++ b/tools/libs/devicemodel/include/xendevicemodel.h
@@ -326,6 +326,21 @@  int xendevicemodel_shutdown(
     xendevicemodel_handle *dmod, domid_t domid, unsigned int reason);
 
 /**
+ * Sets the GPFNs at which a page range appears in the domain's
+ * pseudophysical address space.
+ *
+ * @parm dmod a handle to an open devicemodel interface.
+ * @parm domid the domain id to be serviced
+ * @parm size Number of GMFNs to process
+ * @parm idx Index into GMFN space
+ * @parm gpfn Starting GPFN where the GMFNs should appear
+ * @return 0 on success, -1 on failure.
+ */
+int xendevicemodel_add_to_physmap(
+    xendevicemodel_handle *dmod, domid_t domid, uint16_t size, uint64_t idx,
+    uint64_t gpfn);
+
+/**
  * This function restricts the use of this handle to the specified
  * domain.
  *
diff --git a/tools/libs/devicemodel/libxendevicemodel.map b/tools/libs/devicemodel/libxendevicemodel.map
index cefd32b..4a19ecb 100644
--- a/tools/libs/devicemodel/libxendevicemodel.map
+++ b/tools/libs/devicemodel/libxendevicemodel.map
@@ -27,3 +27,8 @@  VERS_1.1 {
 	global:
 		xendevicemodel_shutdown;
 } VERS_1.0;
+
+VERS_1.2 {
+	global:
+		xendevicemodel_add_to_physmap;
+} VERS_1.1;