From nobody Sun Apr 28 04:45:42 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1559055358; cv=none; d=zoho.com; s=zohoarc; b=chqVRaAYgc4wJm1VMJ1QMgydjydp3XZjdyYOaR1flGg/S9hp8ZJjWSNl7M6wMsx5qG2mxHcsE7nob8qgstASJTGNtgj1PWa+3PoCCW+Zh9QRiJVJa8vS86YhUZlL5Tj97feJlu7dLLnC34iDoxHsFHGY01tgHEMkmnIKEYGFjBM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559055358; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=NGCIZrG/6EbHYemNsVoC8IDoY3ainZIZzVkVLOdTY94=; b=Bt7WiSKlcm8qVTorlKRBw2q7HUp2PjrtgydKLWJmg0dwhRjDE+Hzop/+AWaJLmqpZ3dyhqQeEQFGkxZUEno4bMMDWYc+pegTwrUB7h61QJj9hAFC50o+L90pQMzld4tzNMoYnuwPUdO9My1pX54HX6YLGt646DbifGAOGvnXNL4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1559055358910960.7381459510852; Tue, 28 May 2019 07:55:58 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUs-0000VS-4C; Tue, 28 May 2019 14:54:38 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUq-0000V1-Ec for xen-devel@lists.xenproject.org; Tue, 28 May 2019 14:54:36 +0000 Received: from smtp.nue.novell.com (unknown [195.135.221.5]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 810a9362-8158-11e9-bc13-bf964a31188e; Tue, 28 May 2019 14:54:34 +0000 (UTC) Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 28 May 2019 16:54:32 +0200 Received: from linux-nq5u.suse.de (nwb-a10-snat.microfocus.com [10.120.13.201]) by emea4-mta.ukb.novell.com with ESMTP (NOT encrypted); Tue, 28 May 2019 15:54:22 +0100 X-Inumbo-ID: 810a9362-8158-11e9-bc13-bf964a31188e From: Vasilis Liaskovitis To: xen-devel@lists.xenproject.org Date: Tue, 28 May 2019 16:54:13 +0200 Message-Id: <20190528145416.16918-2-vliaskovitis@suse.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528145416.16918-1-vliaskovitis@suse.com> References: <20190528145416.16918-1-vliaskovitis@suse.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 1/4] xen: add hypercall for reading runtime parameters X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, sstabellini@kernel.org, wei.liu2@citrix.com, jbeulich@suse.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, vliaskovitis@suse.com, anthony.perard@citrix.com, dgdegra@tycho.nsa.gov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a sysctl hypercall to support reading hypervisor runtime parameters. Limitations: - Custom runtime parameters (OPT_CUSTOM) are not supported yet. - For integer parameters (OPT_UINT), only unsigned parameters are printed correctly. - The implementation only reads runtime parameters, but it can be changed to read all hypervisor parameters if needed.=20 Signed-off-by: Vasilis Liaskovitis --- tools/flask/policy/modules/dom0.te | 2 +- xen/common/kernel.c | 118 ++++++++++++++++++++++++++++ xen/common/sysctl.c | 52 +++++++++++- xen/include/public/sysctl.h | 18 +++++ xen/include/xen/lib.h | 1 + xen/xsm/flask/hooks.c | 3 + xen/xsm/flask/policy/access_vectors | 2 + 7 files changed, 193 insertions(+), 3 deletions(-) diff --git a/tools/flask/policy/modules/dom0.te b/tools/flask/policy/module= s/dom0.te index a347d664f8..681d1a101b 100644 --- a/tools/flask/policy/modules/dom0.te +++ b/tools/flask/policy/modules/dom0.te @@ -16,7 +16,7 @@ allow dom0_t xen_t:xen { allow dom0_t xen_t:xen2 { resource_op psr_cmt_op psr_alloc pmu_ctrl get_symbol get_cpu_levelling_caps get_cpu_featureset livepatch_op - coverage_op set_parameter + coverage_op set_parameter get_parameter }; =20 # Allow dom0 to use all XENVER_ subops that have checks. diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 612575430f..6695ffc372 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -52,6 +53,123 @@ static int assign_integer_param(const struct kernel_par= am *param, uint64_t val) return 0; } =20 +static int get_integer_param(const struct kernel_param *param, uint64_t *v= al) +{ + switch ( param->len ) + { + case sizeof(uint8_t): + *val =3D *(uint8_t *)param->par.var; + break; + + case sizeof(uint16_t): + *val =3D *(uint16_t *)param->par.var; + break; + + case sizeof(uint32_t): + *val =3D *(uint32_t *)param->par.var; + break; + + case sizeof(uint64_t): + *val =3D *(uint64_t *)param->par.var; + break; + + default: + BUG(); + break; + } + + return 0; +} + +int runtime_get_params(const char *cmdline, char *values, + size_t maxlen) +{ + char opt[128], *optkey, *q, *val =3D values; + const char *p =3D cmdline; + const struct kernel_param *param; + int rc =3D 0, len =3D 0; + size_t bufpos =3D 0; + uint64_t param_int; + + while ( !rc ) + { + /* Skip whitespace. */ + while ( isspace(*p) ) + p++; + if ( *p =3D=3D '\0' ) + break; + + /* Grab the next whitespace-delimited option. */ + q =3D optkey =3D opt; + while ( !isspace(*p) && (*p !=3D '\0') ) + { + if ( (q - opt) < (sizeof(opt) - 1) ) /* avoid overflow */ + *q++ =3D *p; + else return -ENOMEM; + p++; + } + *q =3D '\0'; + + for ( param =3D __param_start; param < __param_end; param++ ) + { + if ( strcmp(param->name, optkey) ) + continue; + + switch ( param->type ) + { + case OPT_STR: + len =3D snprintf(val + bufpos, maxlen - bufpos, "%s ", + (char*)param->par.var); + break; + + case OPT_UINT: + case OPT_SIZE: + /* Signed integer parameters are not supported yet. + * While there are no runtime signed integer parameters + * at the moment, adding one and trying to get its value + * with the current implementation will output the wrong + * value. + */ + get_integer_param(param, ¶m_int); + len =3D snprintf(val + bufpos, maxlen - bufpos, + "%"PRIu64" ", param_int); + break; + + case OPT_BOOL: + get_integer_param(param, ¶m_int); + len =3D snprintf(val + bufpos, maxlen - bufpos, "%s ", + param_int ? "true" : "false"); + break; + + case OPT_CUSTOM: + /* Custom parameters are not supported yet. */ + rc =3D -EINVAL; + break; + + default: + BUG(); + break; + } + + if ( len < 0 ) + rc =3D len; + else if ( len < maxlen - bufpos ) + /* if output was not truncated update buffer position. */ + bufpos +=3D len; + else if ( len > 0 ) + rc =3D -ENOMEM; + + break; + } + + /* no parameter was matched */ + if ( param >=3D __param_end ) + rc =3D -EINVAL; + } + + return rc; +} + static int parse_params(const char *cmdline, const struct kernel_param *st= art, const struct kernel_param *end) { diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index c0aa6bde4e..20be6a6d8d 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -466,9 +466,9 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_s= ysctl) copyback =3D 1; break; =20 +#define XEN_PARAMETER_MAX_SIZE 1023 case XEN_SYSCTL_set_parameter: { -#define XEN_SET_PARAMETER_MAX_SIZE 1023 char *params; =20 if ( op->u.set_parameter.pad[0] || op->u.set_parameter.pad[1] || @@ -477,7 +477,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_s= ysctl) ret =3D -EINVAL; break; } - if ( op->u.set_parameter.size > XEN_SET_PARAMETER_MAX_SIZE ) + if ( op->u.set_parameter.size > XEN_PARAMETER_MAX_SIZE ) { ret =3D -E2BIG; break; @@ -501,6 +501,54 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_= sysctl) =20 break; } + case XEN_SYSCTL_get_parameter: + { + char *params, *values; + + if ( op->u.get_parameter.pad[0] || op->u.get_parameter.pad[1] || + op->u.get_parameter.pad[2] ) + { + ret =3D -EINVAL; + break; + } + if ( op->u.get_parameter.size > XEN_PARAMETER_MAX_SIZE ) + { + ret =3D -E2BIG; + break; + } + params =3D xmalloc_bytes(op->u.get_parameter.size + 1); + if ( !params ) + { + ret =3D -ENOMEM; + break; + } + + values =3D xmalloc_bytes(XEN_PARAMETER_MAX_SIZE); + if ( !values ) + { + xfree(params); + ret =3D -ENOMEM; + break; + } + + if ( copy_from_guest(params, op->u.get_parameter.params, + op->u.get_parameter.size) ) + ret =3D -EFAULT; + else + { + params[op->u.set_parameter.size] =3D 0; + ret =3D runtime_get_params(params, values, XEN_PARAMETER_MAX_S= IZE); + + if ( !ret && copy_to_guest(op->u.get_parameter.values, values, + strlen(values)) ) + ret =3D -EFAULT; + } + + xfree(params); + xfree(values); + + break; + } =20 default: ret =3D arch_do_sysctl(op, u_sysctl); diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h index c49b4dcc99..7d77d57115 100644 --- a/xen/include/public/sysctl.h +++ b/xen/include/public/sysctl.h @@ -1100,6 +1100,22 @@ typedef struct xen_sysctl_cpu_policy xen_sysctl_cpu_= policy_t; DEFINE_XEN_GUEST_HANDLE(xen_sysctl_cpu_policy_t); #endif =20 +/* + * XEN_SYSCTL_get_parameter + * + * Read hypervisor parameters at runtime. + * Parameters are a single string terminated by a NUL byte of max. size + * characters. Multiple settings can be specified by separating them + * with blanks. + */ + +struct xen_sysctl_get_parameter { + XEN_GUEST_HANDLE_64(char) params; /* IN: pointer to parameters. = */ + XEN_GUEST_HANDLE_64(char) values; /* OUT: pointer to output valu= es. */ + uint16_t size; /* IN: size of parameters. */ + uint16_t pad[3]; /* IN: MUST be zero. */ +}; + struct xen_sysctl { uint32_t cmd; #define XEN_SYSCTL_readconsole 1 @@ -1130,6 +1146,7 @@ struct xen_sysctl { #define XEN_SYSCTL_livepatch_op 27 #define XEN_SYSCTL_set_parameter 28 #define XEN_SYSCTL_get_cpu_policy 29 +#define XEN_SYSCTL_get_parameter 30 uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ union { struct xen_sysctl_readconsole readconsole; @@ -1162,6 +1179,7 @@ struct xen_sysctl { #if defined(__i386__) || defined(__x86_64__) struct xen_sysctl_cpu_policy cpu_policy; #endif + struct xen_sysctl_get_parameter get_parameter; uint8_t pad[128]; } u; }; diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index e0b7bcb6b7..6e6367bb7a 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -71,6 +71,7 @@ struct domain; void cmdline_parse(const char *cmdline); int runtime_parse(const char *line); int parse_bool(const char *s, const char *e); +int runtime_get_params(const char *cmdline, char *values, size_t maxlen); =20 /** * Given a specific name, parses a string of the form: diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 3d00c747f6..1b832e9a4c 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -830,6 +830,9 @@ static int flask_sysctl(int cmd) case XEN_SYSCTL_set_parameter: return avc_current_has_perm(SECINITSID_XEN, SECCLASS_XEN2, XEN2__SET_PARAMETER, NULL); + case XEN_SYSCTL_get_parameter: + return avc_current_has_perm(SECINITSID_XEN, SECCLASS_XEN2, + XEN2__GET_PARAMETER, NULL); =20 default: return avc_unknown_permission("sysctl", cmd); diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/acc= ess_vectors index e00448b776..c5ee21d852 100644 --- a/xen/xsm/flask/policy/access_vectors +++ b/xen/xsm/flask/policy/access_vectors @@ -103,6 +103,8 @@ class xen2 coverage_op # XEN_SYSCTL_set_parameter set_parameter +# XEN_SYSCTL_get_parameter + get_parameter } =20 # Classes domain and domain2 consist of operations that a domain performs = on --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Sun Apr 28 04:45:42 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1559055346; cv=none; d=zoho.com; s=zohoarc; b=Uh7uuDPtyPmzYnPpjDULK5nn3ac+WCRQ5v1lM1Z4ewNaejVq4mglz6Nupq2O0eCaD3BHfOm7gFseIoT0Sj5MnOeP21Mb4IiE8iqmGBDjdqZZt+yZ9ZL0YaDU81qlsMgJknKfnbhhMcGXuqIJIPLGI37KsvDb406X9dhNG/eVJR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559055346; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=jhBhfdrsBpP6Bb12uqxQrhYRatGkS+BrEiuUp4f60og=; b=L2yF6YtLeG1tP1A+GwJN8ib1e7KuCaWZ0IINT3xzwR16b99Qqky7ZlQANL85DxWu4F28ecnfmuG2e4aF5LnSRnMhHGDYrwph6suJixzG/K0P1in7bjB8D89Hnmzp0eug/mqiSb5UNawKskg/y4TJq3QmiSHO+gKY4AbifH2OSbs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1559055346559617.1098384596139; Tue, 28 May 2019 07:55:46 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUr-0000VI-Q0; Tue, 28 May 2019 14:54:37 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUq-0000Ur-7l for xen-devel@lists.xenproject.org; Tue, 28 May 2019 14:54:36 +0000 Received: from smtp.nue.novell.com (unknown [195.135.221.5]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 8195844a-8158-11e9-8980-bc764e045a96; Tue, 28 May 2019 14:54:35 +0000 (UTC) Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 28 May 2019 16:54:33 +0200 Received: from linux-nq5u.suse.de (nwb-a10-snat.microfocus.com [10.120.13.201]) by emea4-mta.ukb.novell.com with ESMTP (NOT encrypted); Tue, 28 May 2019 15:54:23 +0100 X-Inumbo-ID: 8195844a-8158-11e9-8980-bc764e045a96 From: Vasilis Liaskovitis To: xen-devel@lists.xenproject.org Date: Tue, 28 May 2019 16:54:14 +0200 Message-Id: <20190528145416.16918-3-vliaskovitis@suse.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528145416.16918-1-vliaskovitis@suse.com> References: <20190528145416.16918-1-vliaskovitis@suse.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 2/4] libxc: add function to get hypervisor parameters X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, sstabellini@kernel.org, wei.liu2@citrix.com, jbeulich@suse.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, vliaskovitis@suse.com, anthony.perard@citrix.com, dgdegra@tycho.nsa.gov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a new libxc function to get hypervisor parameters. Signed-off-by: Vasilis Liaskovitis --- tools/libxc/include/xenctrl.h | 1 + tools/libxc/xc_misc.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index a3628e56bb..3482ca1a91 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -1228,6 +1228,7 @@ int xc_readconsolering(xc_interface *xch, =20 int xc_send_debug_keys(xc_interface *xch, char *keys); int xc_set_parameters(xc_interface *xch, char *params); +int xc_get_parameters(xc_interface *xch, char *params, char *values); =20 typedef struct xen_sysctl_physinfo xc_physinfo_t; typedef struct xen_sysctl_cputopo xc_cputopo_t; diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c index 5e6714ae2b..439ad91194 100644 --- a/tools/libxc/xc_misc.c +++ b/tools/libxc/xc_misc.c @@ -208,6 +208,32 @@ int xc_set_parameters(xc_interface *xch, char *params) return ret; } =20 +int xc_get_parameters(xc_interface *xch, char *params, char *values) +{ + int ret, len =3D strlen(params); + DECLARE_SYSCTL; + DECLARE_HYPERCALL_BOUNCE(params, len, XC_HYPERCALL_BUFFER_BOUNCE_IN); + DECLARE_HYPERCALL_BOUNCE(values, 1023, XC_HYPERCALL_BUFFER_BOUNCE_OUT); + + if ( xc_hypercall_bounce_pre(xch, params) ) + return -1; + if ( xc_hypercall_bounce_pre(xch, values) ) + return -1; + + sysctl.cmd =3D XEN_SYSCTL_get_parameter; + set_xen_guest_handle(sysctl.u.get_parameter.params, params); + set_xen_guest_handle(sysctl.u.get_parameter.values, values); + sysctl.u.get_parameter.size =3D len; + memset(sysctl.u.get_parameter.pad, 0, sizeof(sysctl.u.get_parameter.pa= d)); + + ret =3D do_sysctl(xch, &sysctl); + + xc_hypercall_bounce_post(xch, params); + xc_hypercall_bounce_post(xch, values); + + return ret; +} + int xc_physinfo(xc_interface *xch, xc_physinfo_t *put_info) { --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Sun Apr 28 04:45:42 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1559055352; cv=none; d=zoho.com; s=zohoarc; b=J+ASoiHxffuP2hM0Rm+NxxEb972DhQcgU965WQ83/MJYddvye44t86HyanS0emqd3937pxSUsya9pQv9taF+d1XdvmaMdpKmGcjfSS3eyIilEGPAKxfYyNjgqfPQczBd56XiZuMqrQncYA9rA0DlYUJegjhiqSjo5eL7KUJLIlI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559055352; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6cLY18E/pnUJ4a9PdhgKOHqZv025iifpxb/p4TQ7yAU=; b=frwLxecbeLN8jDPqfCV175IHYzKmhPuCrk24DKxrwPdBkqMY5EqPrbcLs/h9dbwPXK++c1enoQ04AWTmdVxfBFvbqswEFyKqAzYAVLzvcS3R/nhiWd8490DvIJs0D6mJu+THBUATru7oPIvGKQvtLGmW+vowls+92oMNIIL/U88= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 155905535250152.030165053533665; Tue, 28 May 2019 07:55:52 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUr-0000VB-Fy; Tue, 28 May 2019 14:54:37 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUq-0000Uq-6R for xen-devel@lists.xenproject.org; Tue, 28 May 2019 14:54:36 +0000 Received: from smtp.nue.novell.com (unknown [195.135.221.5]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 81aa6446-8158-11e9-b0c1-373a42fb1148; Tue, 28 May 2019 14:54:35 +0000 (UTC) Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 28 May 2019 16:54:33 +0200 Received: from linux-nq5u.suse.de (nwb-a10-snat.microfocus.com [10.120.13.201]) by emea4-mta.ukb.novell.com with ESMTP (NOT encrypted); Tue, 28 May 2019 15:54:23 +0100 X-Inumbo-ID: 81aa6446-8158-11e9-b0c1-373a42fb1148 From: Vasilis Liaskovitis To: xen-devel@lists.xenproject.org Date: Tue, 28 May 2019 16:54:15 +0200 Message-Id: <20190528145416.16918-4-vliaskovitis@suse.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528145416.16918-1-vliaskovitis@suse.com> References: <20190528145416.16918-1-vliaskovitis@suse.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 3/4] libxl: add libxl_get_parameters() function X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, sstabellini@kernel.org, wei.liu2@citrix.com, jbeulich@suse.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, vliaskovitis@suse.com, anthony.perard@citrix.com, dgdegra@tycho.nsa.gov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a new libxl function to get hypervisor parameters. Signed-off-by: Vasilis Liaskovitis --- tools/libxl/libxl.c | 19 +++++++++++++++++++ tools/libxl/libxl.h | 1 + 2 files changed, 20 insertions(+) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index ec71574e99..9bb0382c38 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -669,6 +669,25 @@ int libxl_set_parameters(libxl_ctx *ctx, char *params) return 0; } =20 +int libxl_get_parameters(libxl_ctx *ctx, char *params, char *values) +{ + int r, rc; + GC_INIT(ctx); + + r =3D xc_get_parameters(ctx->xch, params, values); + if (r < 0) { + LOGE(ERROR, "getting parameters"); + rc =3D ERROR_FAIL; + goto out; + } + + rc =3D 0; + +out: + GC_FREE; + return rc; +} + static int fd_set_flags(libxl_ctx *ctx, int fd, int fcntlgetop, int fcntlsetop, const char *fl, int flagmask, int set_p) diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index a38e5cdba2..360a757a06 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -2307,6 +2307,7 @@ int libxl_send_trigger(libxl_ctx *ctx, uint32_t domid, int libxl_send_sysrq(libxl_ctx *ctx, uint32_t domid, char sysrq); int libxl_send_debug_keys(libxl_ctx *ctx, char *keys); int libxl_set_parameters(libxl_ctx *ctx, char *params); +int libxl_get_parameters(libxl_ctx *ctx, char *params, char *values); =20 typedef struct libxl__xen_console_reader libxl_xen_console_reader; =20 --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Sun Apr 28 04:45:42 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1559055353; cv=none; d=zoho.com; s=zohoarc; b=enoxp8rgcOxUPGMxitaixAMo6p3bxynFMD1+xZ+4Gma/y3x29CvVHwEt+tFSeG5QKtSym/hibvCsaYhK79zI61xNiqzJCuqoYW9lrbCxucnK510yRFPySYyD0dH0YSty2mJAJYhbdd8t0PPoitoCcVXgInjHAl50NpYM/qfwU40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559055353; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=+kix+VtBK3ASowDjQWxRe3G3lP4R2Qh/x6K5eWOz1Bs=; b=cjrmB6qZ1Jw6Wvgw/e068RDAalNREb5AgrGajPYlKdKf2zD8/essunWd9dK0CDu2RM4YPaTTUj0Ij3S2rA9G7c9cNt3p3E01EuTUo95DMaRw361p+uuK9XYoRn1TQuoy2zGxdnN7DS1GTgXoycRPzBmaiXfVjzQDFhNMfhxn6b0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1559055353410259.3000156783928; Tue, 28 May 2019 07:55:53 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUt-0000Vn-Eh; Tue, 28 May 2019 14:54:39 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVdUr-0000VH-RM for xen-devel@lists.xenproject.org; Tue, 28 May 2019 14:54:37 +0000 Received: from smtp.nue.novell.com (unknown [195.135.221.5]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 82a9b40e-8158-11e9-8980-bc764e045a96; Tue, 28 May 2019 14:54:37 +0000 (UTC) Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 28 May 2019 16:54:35 +0200 Received: from linux-nq5u.suse.de (nwb-a10-snat.microfocus.com [10.120.13.201]) by emea4-mta.ukb.novell.com with ESMTP (NOT encrypted); Tue, 28 May 2019 15:54:24 +0100 X-Inumbo-ID: 82a9b40e-8158-11e9-8980-bc764e045a96 From: Vasilis Liaskovitis To: xen-devel@lists.xenproject.org Date: Tue, 28 May 2019 16:54:16 +0200 Message-Id: <20190528145416.16918-5-vliaskovitis@suse.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528145416.16918-1-vliaskovitis@suse.com> References: <20190528145416.16918-1-vliaskovitis@suse.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 4/4] xl: add new xl command get-parameters X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, sstabellini@kernel.org, wei.liu2@citrix.com, jbeulich@suse.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, vliaskovitis@suse.com, anthony.perard@citrix.com, dgdegra@tycho.nsa.gov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a new xl command "get-parameters" to get hypervisor runtime parameters. Examples: xl get-parameters "gnttab_max_frames gnttab_max_maptrack_frames" gnttab_max_frames gnttab_max_maptrack_frames : 64 1024 xl set-parameters gnttab_max_frames=3D128 xl get-parameters gnttab_max_frames gnttab_max_frames : 128 xl get-parameters "gnttab_max_frames gnttab_max_maptrack_frames" gnttab_max_frames gnttab_max_maptrack_frames : 128 1024 Signed-off-by: Vasilis Liaskovitis --- docs/man/xl.1.pod.in | 5 +++++ tools/xl/xl.h | 1 + tools/xl/xl_cmdtable.c | 5 +++++ tools/xl/xl_misc.c | 25 +++++++++++++++++++++++++ 4 files changed, 36 insertions(+) diff --git a/docs/man/xl.1.pod.in b/docs/man/xl.1.pod.in index 4310fcd818..a1fff4d382 100644 --- a/docs/man/xl.1.pod.in +++ b/docs/man/xl.1.pod.in @@ -827,6 +827,11 @@ Send debug I to Xen. It is the same as pressing = the Xen Set hypervisor parameters as specified in I. This allows for some boot parameters of the hypervisor to be modified in the running systems. =20 +=3Ditem B I + +Get hypervisor parameters as specified in I. This allows for some +boot parameters of the hypervisor to be read in the running systems. + =3Ditem B [I] =20 Reads the Xen message buffer, similar to dmesg on a Linux system. The diff --git a/tools/xl/xl.h b/tools/xl/xl.h index cf4202bc89..af3843e5b0 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -219,6 +219,7 @@ int main_psr_mba_set(int argc, char **argv); int main_psr_mba_show(int argc, char **argv); #endif int main_qemu_monitor_command(int argc, char **argv); +int main_get_parameters(int argc, char **argv); =20 void help(const char *command); =20 diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 89716badcb..a18481619b 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -662,6 +662,11 @@ struct cmd_spec cmd_table[] =3D { "Issue a qemu monitor command to the device model of a domain", " ", }, + { "get-parameters", + &main_get_parameters, 0, 1, + "Get hypervisor parameters", + "", + }, }; =20 int cmdtable_len =3D sizeof(cmd_table)/sizeof(struct cmd_spec); diff --git a/tools/xl/xl_misc.c b/tools/xl/xl_misc.c index dcf940a6d4..811f231b78 100644 --- a/tools/xl/xl_misc.c +++ b/tools/xl/xl_misc.c @@ -364,6 +364,31 @@ int main_config_update(int argc, char **argv) return 0; } =20 +int main_get_parameters(int argc, char **argv) +{ + int opt, ret; + char *params; + char values[1023]; + + SWITCH_FOREACH_OPT(opt, "", NULL, "get-parameters", 1) { + /* No options */ + } + + params =3D argv[optind]; + + if (!params) { + fprintf(stderr, "no parameter specified\n"); + return EXIT_FAILURE; + } + else if ((ret =3D libxl_get_parameters(ctx, params, values))) { + fprintf(stderr, "cannot get parameters: %s : %d\n", params, ret); + fprintf(stderr, "Use \"xl dmesg\" to look for possible reason.\n"); + return EXIT_FAILURE; + } + fprintf(stderr, "%s : %s\n", params, values); + + return EXIT_SUCCESS; +} /* * Local variables: * mode: C --=20 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel