Re: [Xen-devel] [PATCH v3 8/8] libxl: add libxl support for setting grant table resource limits

2017-09-07 Thread Juergen Gross
On 07/09/17 11:02, Wei Liu wrote:
> On Wed, Sep 06, 2017 at 02:46:53PM +0200, Juergen Gross wrote:
>> Add new domain config items for setting the limits for the maximum
>> numbers of grant table frames and maptrack frames of a domain.
>>
>> Signed-off-by: Juergen Gross 
>> ---
>>  docs/man/xl.cfg.pod.5.in| 15 +++
>>  tools/libxl/libxl.h |  6 ++
>>  tools/libxl/libxl_dom.c |  8 
>>  tools/libxl/libxl_types.idl |  3 +++
>>  tools/xl/xl_parse.c |  5 +
>>  tools/xl/xl_sxp.c   |  2 ++
>>  6 files changed, 39 insertions(+)
>>
>> diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
>> index 79cb2eaea7..dd0b232020 100644
>> --- a/docs/man/xl.cfg.pod.5.in
>> +++ b/docs/man/xl.cfg.pod.5.in
>> @@ -444,6 +444,21 @@ unpausing the domain. With a properly constructed 
>> security policy (such
>>  as nomigrate_t in the example policy), this can be used to build a
>>  domain whose memory is not accessible to the toolstack domain.
>>  
>> +=item B
> 
> Add max_ prefixes for both of them? They are the cap, not actual
> allocation after all.

Okay.


Juergen

> 
> The code looks good.
> 


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v3 8/8] libxl: add libxl support for setting grant table resource limits

2017-09-07 Thread Wei Liu
On Wed, Sep 06, 2017 at 02:46:53PM +0200, Juergen Gross wrote:
> Add new domain config items for setting the limits for the maximum
> numbers of grant table frames and maptrack frames of a domain.
> 
> Signed-off-by: Juergen Gross 
> ---
>  docs/man/xl.cfg.pod.5.in| 15 +++
>  tools/libxl/libxl.h |  6 ++
>  tools/libxl/libxl_dom.c |  8 
>  tools/libxl/libxl_types.idl |  3 +++
>  tools/xl/xl_parse.c |  5 +
>  tools/xl/xl_sxp.c   |  2 ++
>  6 files changed, 39 insertions(+)
> 
> diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
> index 79cb2eaea7..dd0b232020 100644
> --- a/docs/man/xl.cfg.pod.5.in
> +++ b/docs/man/xl.cfg.pod.5.in
> @@ -444,6 +444,21 @@ unpausing the domain. With a properly constructed 
> security policy (such
>  as nomigrate_t in the example policy), this can be used to build a
>  domain whose memory is not accessible to the toolstack domain.
>  
> +=item B

Add max_ prefixes for both of them? They are the cap, not actual
allocation after all.

The code looks good.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v3 8/8] libxl: add libxl support for setting grant table resource limits

2017-09-06 Thread Paul Durrant
> -Original Message-
> From: Xen-devel [mailto:xen-devel-boun...@lists.xen.org] On Behalf Of
> Juergen Gross
> Sent: 06 September 2017 13:47
> To: xen-devel@lists.xen.org
> Cc: Juergen Gross ; sstabell...@kernel.org; Wei Liu
> ; George Dunlap ;
> Andrew Cooper ; Ian Jackson
> ; Tim (Xen.org) ;
> julien.gr...@arm.com; jbeul...@suse.com
> Subject: [Xen-devel] [PATCH v3 8/8] libxl: add libxl support for setting grant
> table resource limits
> 
> Add new domain config items for setting the limits for the maximum
> numbers of grant table frames and maptrack frames of a domain.
> 
> Signed-off-by: Juergen Gross 

Reviewed-by: Paul Durrant 

> ---
>  docs/man/xl.cfg.pod.5.in| 15 +++
>  tools/libxl/libxl.h |  6 ++
>  tools/libxl/libxl_dom.c |  8 
>  tools/libxl/libxl_types.idl |  3 +++
>  tools/xl/xl_parse.c |  5 +
>  tools/xl/xl_sxp.c   |  2 ++
>  6 files changed, 39 insertions(+)
> 
> diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
> index 79cb2eaea7..dd0b232020 100644
> --- a/docs/man/xl.cfg.pod.5.in
> +++ b/docs/man/xl.cfg.pod.5.in
> @@ -444,6 +444,21 @@ unpausing the domain. With a properly constructed
> security policy (such
>  as nomigrate_t in the example policy), this can be used to build a
>  domain whose memory is not accessible to the toolstack domain.
> 
> +=item B
> +
> +Specify the maximum number of grant frames the domain is allowed to
> have.
> +This value controls how many pages the domain is able to grant access to for
> +other domains, needed e.g. for the operation of paravirtualized devices.
> +The default is 32, if not set to another value via a Xen boot parameter.
> +
> +=item B
> +
> +Specify the maximum number of grant maptrack frames the domain is
> allowed
> +to have. This value controls how many pages of foreign domains can be
> accessed
> +via the grant mechanism by this domain. A value higher than the normal
> default
> +of 1024 is normally needed only for very large configurations for driver
> +domains.
> +
>  =item B
> 
>  Disable migration of this domain.  This enables certain other features
> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
> index 812b7ea95d..fef22c2306 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -311,6 +311,12 @@
>  #define LIBXL_HAVE_P9S 1
> 
>  /*
> + * LIBXL_HAVE_BUILDINFO_GRANT_LIMITS indicates that
> libxl_domain_build_info
> + * has the grant_frames and maptrack_frames fields.
> + */
> +#define LIBXL_HAVE_BUILDINFO_GRANT_LIMITS 1
> +
> +/*
>   * libxl ABI compatibility
>   *
>   * The only guarantee which libxl makes regarding ABI compatibility
> diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
> index f54fd49a73..080335874e 100644
> --- a/tools/libxl/libxl_dom.c
> +++ b/tools/libxl/libxl_dom.c
> @@ -322,6 +322,14 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid,
>  return ERROR_FAIL;
>  }
> 
> +if (info->grant_frames || info->maptrack_frames) {
> +if (xc_domain_set_gnttab_limits(ctx->xch, domid, info->grant_frames,
> +info->maptrack_frames) != 0) {
> +LOG(ERROR, "Couldn't set grant table limits");
> +return ERROR_FAIL;
> +}
> +}
> +
>  /*
>   * Check if the domain has any CPU or node affinity already. If not, try
>   * to build up the latter via automatic NUMA placement. In fact, in case
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 173d70acec..2aa7dae83e 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -472,6 +472,9 @@ libxl_domain_build_info =
> Struct("domain_build_info",[
>  ("blkdev_start",string),
> 
>  ("vnuma_nodes", Array(libxl_vnode_info, "num_vnuma_nodes")),
> +
> +("grant_frames",uint32),
> +("maptrack_frames", uint32),
> 
>  ("device_model_version", libxl_device_model_version),
>  ("device_model_stubdomain", libxl_defbool),
> diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
> index 02ddd2e90d..dae3a238a4 100644
> --- a/tools/xl/xl_parse.c
> +++ b/tools/xl/xl_parse.c
> @@ -943,6 +943,11 @@ void parse_config_data(const char *config_source,
>  !xlu_cfg_get_string (config, "cpus_soft", &buf, 0))
>  parse_vcpu_affinity(b_info, cpus, buf, num_cpus, false);
> 
> +if (!xlu_cfg_get_long (config, "grant_frames", &l, 0))
> +b_info->grant_frames = l;
> +if (!xlu_cfg_get_long (con

[Xen-devel] [PATCH v3 8/8] libxl: add libxl support for setting grant table resource limits

2017-09-06 Thread Juergen Gross
Add new domain config items for setting the limits for the maximum
numbers of grant table frames and maptrack frames of a domain.

Signed-off-by: Juergen Gross 
---
 docs/man/xl.cfg.pod.5.in| 15 +++
 tools/libxl/libxl.h |  6 ++
 tools/libxl/libxl_dom.c |  8 
 tools/libxl/libxl_types.idl |  3 +++
 tools/xl/xl_parse.c |  5 +
 tools/xl/xl_sxp.c   |  2 ++
 6 files changed, 39 insertions(+)

diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
index 79cb2eaea7..dd0b232020 100644
--- a/docs/man/xl.cfg.pod.5.in
+++ b/docs/man/xl.cfg.pod.5.in
@@ -444,6 +444,21 @@ unpausing the domain. With a properly constructed security 
policy (such
 as nomigrate_t in the example policy), this can be used to build a
 domain whose memory is not accessible to the toolstack domain.
 
+=item B
+
+Specify the maximum number of grant frames the domain is allowed to have.
+This value controls how many pages the domain is able to grant access to for
+other domains, needed e.g. for the operation of paravirtualized devices.
+The default is 32, if not set to another value via a Xen boot parameter.
+
+=item B
+
+Specify the maximum number of grant maptrack frames the domain is allowed
+to have. This value controls how many pages of foreign domains can be accessed
+via the grant mechanism by this domain. A value higher than the normal default
+of 1024 is normally needed only for very large configurations for driver
+domains.
+
 =item B
 
 Disable migration of this domain.  This enables certain other features
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 812b7ea95d..fef22c2306 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -311,6 +311,12 @@
 #define LIBXL_HAVE_P9S 1
 
 /*
+ * LIBXL_HAVE_BUILDINFO_GRANT_LIMITS indicates that libxl_domain_build_info
+ * has the grant_frames and maptrack_frames fields.
+ */
+#define LIBXL_HAVE_BUILDINFO_GRANT_LIMITS 1
+
+/*
  * libxl ABI compatibility
  *
  * The only guarantee which libxl makes regarding ABI compatibility
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index f54fd49a73..080335874e 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -322,6 +322,14 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid,
 return ERROR_FAIL;
 }
 
+if (info->grant_frames || info->maptrack_frames) {
+if (xc_domain_set_gnttab_limits(ctx->xch, domid, info->grant_frames,
+info->maptrack_frames) != 0) {
+LOG(ERROR, "Couldn't set grant table limits");
+return ERROR_FAIL;
+}
+}
+
 /*
  * Check if the domain has any CPU or node affinity already. If not, try
  * to build up the latter via automatic NUMA placement. In fact, in case
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 173d70acec..2aa7dae83e 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -472,6 +472,9 @@ libxl_domain_build_info = Struct("domain_build_info",[
 ("blkdev_start",string),
 
 ("vnuma_nodes", Array(libxl_vnode_info, "num_vnuma_nodes")),
+
+("grant_frames",uint32),
+("maptrack_frames", uint32),
 
 ("device_model_version", libxl_device_model_version),
 ("device_model_stubdomain", libxl_defbool),
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 02ddd2e90d..dae3a238a4 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -943,6 +943,11 @@ void parse_config_data(const char *config_source,
 !xlu_cfg_get_string (config, "cpus_soft", &buf, 0))
 parse_vcpu_affinity(b_info, cpus, buf, num_cpus, false);
 
+if (!xlu_cfg_get_long (config, "grant_frames", &l, 0))
+b_info->grant_frames = l;
+if (!xlu_cfg_get_long (config, "maptrack_frames", &l, 0))
+b_info->maptrack_frames = l;
+
 libxl_defbool_set(&b_info->claim_mode, claim_mode);
 
 if (xlu_cfg_get_string (config, "on_poweroff", &buf, 0))
diff --git a/tools/xl/xl_sxp.c b/tools/xl/xl_sxp.c
index e738bf2465..4b2fab2d35 100644
--- a/tools/xl/xl_sxp.c
+++ b/tools/xl/xl_sxp.c
@@ -64,6 +64,8 @@ void printf_info_sexp(int domid, libxl_domain_config 
*d_config, FILE *fh)
 
 fprintf(fh, "\t(build_info)\n");
 fprintf(fh, "\t(max_vcpus %d)\n", b_info->max_vcpus);
+fprintf(fh, "\t(grant_frames %d)\n", b_info->grant_frames);
+fprintf(fh, "\t(maptrack_frames %d)\n", b_info->maptrack_frames);
 fprintf(fh, "\t(tsc_mode %s)\n", 
libxl_tsc_mode_to_string(b_info->tsc_mode));
 fprintf(fh, "\t(max_memkb %"PRId64")\n", b_info->max_memkb);
 fprintf(fh, "\t(target_memkb %"PRId64")\n", b_info->target_memkb);
-- 
2.12.3


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel